miniserve 局域网文件共享

局域网共享文件有很多种方式,像vsftpd、Samba(Windows)、NFS这些,但感觉功能欠缺或者配置麻烦。

很早之前有关注过miniserve,现在也比较稳定。它是轻量级HTTP文件服务器,可以共享目录/文件,支持上传、二维码、密码保护等。很适合临时或者局域网分享文档。

安装

下载网址
请根据最新版本和自身cpu架构下载修改

1
2
3
4
5
6
7
8
9
# 方式一:直接下载预编译二进制
wget https://github.com/svenstaro/miniserve/releases/download/v0.27.1/miniserve-0.27.1-x86_64-unknown-linux-gnu -O miniserve
chmod +x miniserve
sudo mv miniserve /usr/local/bin/

# 方式二:cargo 安装
sudo apt-get install cargo
cargo install miniserve

基础用法

  • 共享当前目录
1
miniserve . 

默认地址:http://localhost:8080
默认监听:0.0.0.0:8080(局域网可访问)
终端执行后如下提示,代表成功。

  • 共享指定目录/单个文件
1
2
3
4
5
# 共享目录
miniserve /path/to/your/folder

# 共享单个文件
miniserve document.pdf

打开浏览器,实际效果如下:

  • 指定端口&允许局域网访问
1
2
# 端口 3000,监听所有网卡
miniserve -p 3000 -i 0.0.0.0 .

同一局域网下,也可以访问

常用核心参数

  • 启用文件上传(-u /–upload-files)
1
miniserve -u .

浏览器界面出现 “上传” 按钮;

  • 生成访问二维码(–qrcode)
1
miniserve --qrcode .

终端直接打印二维码,手机扫码即可访问,但是目前测试仅在局域网ip二维码可以
效果如下:

  • 密码保护(–auth)
1
2
3
# 明文账号密码
miniserve --auth user:password .

访问时候会先需要登陆

推荐使用认证文件,避免密码直接出现在命令历史中:

1
2
3
printf 'user:password\n' > auth.txt
chmod 600 auth.txt
miniserve --auth-file auth.txt .

miniserve也支持哈希密码,具体格式请以当前版本文档和miniserve --help为准。

  • 指定首页文件(–index)
1
2
3
4
5
# 用 index.html 代替目录列表
miniserve --index index.html .

# 单页应用(SPA)支持
miniserve --spa --index index.html .
  • 隐藏隐藏文件(–hidden)
1
miniserve --hidden .  # 不显示 .开头的文件
  • 开启 HTTPS(–tls-cert & –tls-key)
1
miniserve --tls-cert cert.pem --tls-key key.pem .

参数表

参数 说明
-p, –port 指定端口(默认 8080)
-i, –interface 绑定网卡(默认 0.0.0.0)
-u, –upload-files 启用文件上传
–qrcode 显示访问二维码
–auth USER:PASS 基础认证(账号:密码)
–index 指定首页文件
–spa 单页应用路由支持
–hidden 隐藏。开头的文件
–verbose 显示详细访问日志