使用filebrowser搭建简单的网络文件共享服务。
项目名为filebrowser/filebrowser
安装
在Github页面下载二进制包,内容极其简单,只有一个二进制文件。
快速启动
将文件移动至/usr/local/bin
,在不使用任何子命令的情况下,fliebrowser会启动临时服务器并自动创建初始数据库,命令参数如下,注意,这些临时选项仅用于没有数据库时的初次设置,会被已有数据库中的配置覆盖,如果已经建立了数据库,请使用config子命令或配置文件进行修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| filebrowser -c 配置文件路径 -d 数据库路径 其他选项 -a 设置监听IP,默认127.0.0.1 -p 设置监听端口,默认8080 --cache-dir 设置缓存目录,默认不设置 -t 设置TLS证书路径 -k 设置TLS密钥路径 -r 文件的根目录,默认二进制文件同目录 --disable-exec 禁用条件命令 --disable-preview-resize 禁用调整预览大小 --disable-thumbnails 禁用图标预览 --disable-type-detection-by-header 禁用文件类型检测 --noauth 危险!无认证模式启动,仅供调试 --username 指定创建的初始(UID=1)用户的用户名,默认为admin --password 指定初始(UID=1)用户的密码,默认为admin,此密码应该为加密的密码,使用"filebrowser hash 明文密码"命令生成加密密码,不建议这么设置,应该在创建初始数据库后使用"users update"子命令修改 公用选项: -c 配置文件路径,如果不设置,默认会搜索"./", "$HOME/", "/etc/filebrowser"这三个目录,这个配置文件在线上导入导出配置时有用 -d 设置数据库路径,默认二进制文件同目录下的filebrowser.db
|
输入filebrowser hash 明文密码
生成加密密码
执行filebrowser -a 0.0.0.0 -p 8080 -d ~/.local/lib/filebrowser/filebrowser.db -r /共享路径
以用户模式启动临时用户名和密码都为admin
的服务器并创建初始数据库
配置(进阶)
启动时,如果没有使用-d选项指定数据库路径,fliebrowser会直接在当前目录下创建初始配置数据库。
我们推荐先执行filebrowser -d /数据库路径 config init
手动指定数据库路径在不启动的情况下进行初始化。这种情况下建立的数据库中全部为默认设置,也不会创建初始(UID=1)用户,需要之后使用filebrowser users add
手动添加。
使用filebrowser -d /数据库路径 config cat
可以显示数据库中的配置详情
导出配置文件的一些关键选项内容如下,均为默认内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| { "server": { "root": ".", // 共享文件目录 "tlsKey": "", // TLS私钥路径 "tlsCert": "", // TLS证书路径 "port": "8080", // 监听端口 "address": "127.0.0.1", // 监听IP "log": "stdout", // 日志文件路径,默认标准输出 "enableThumbnails": false, // 启用图标预览 "resizePreview": false, // 启用预览大小调整 "enableExec": false, // 启用命令执行功能 "typeDetectionByHeader": false // 启用文件类型检测 }, "settings": { "key": "", // 序列号 "signup": false, // 允许注册 "createUserDir": false, // 允许创建用户目录 "userHomeBasePath": "/users", // 用户目录存储路径,这是相对于root的路径 "defaults": { "scope": ".", // 默认访问目录,这是相对于root的路径 "locale": "en", // 默认语言 "viewMode": "list", // 默认显示模式 "singleClick": false, // 默认单击打开 "sorting": { // 默认排序模式 "by": "name", // name, size, modified "asc": false }, "perm": { "admin": false, // 用户默认是否有管理员权限 "execute": true, // 用户默认是否有执行权限 "create": true, // 用户默认是否有创建文件权限 "rename": true, // 用户默认是否有重命名权限 "modify": true, // 用户默认是否有修改权限 "delete": true, // 用户默认是否有删除权限 "share": true, // 用户默认是否有分享权限 "download": true // 用户默认是否有下载权限 }, "commands": [], // 允许用户在网页执行的命令列表 "hideDotfiles": false // 默认隐藏点开头文件 }, "authMethod": "json", // 认证方式,可选json, proxy, noauth "branding": { "name": "", // 网站名 "disableExternal": false, // 禁用外部链接 "files": "" // 自定义文件路径 } } }
|
这些配置可以通过filebrowser -d /数据库路径 config set --option="value"
进行设置,对应选项如下,这些设置会写入数据库所以也是永久化的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| --root --key --cert --port --address --log --disable-thumbnails --disable-preview-resize --disable-exec --disable-type-detection-by-header --signup --scope --locale --viewMode --singleClick --sorting.by --sorting.asc --perm.admin --perm.create --perm.delete --perm.download --perm.execute --perm.modify --perm.rename --perm.share --commands 字符串列表 --auth.method --branding.name --branding.disableExternal --branding.files
--cache-dir
|
修改后,使用filebrowser export 路径
可以导出配置文件
之后可以使用filebrowser config import 路径
导入外部配置文件到数据库
一个模板配置文件(用于全局模式的):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| { "settings": { "signup": false, "createUserDir": false, "userHomeBasePath": "/home", "defaults": { "scope": ".", "locale": "zh-cn", "viewMode": "list", "singleClick": true, "sorting": { "by": "name", "asc": false }, "perm": { "admin": false, "execute": true, "create": true, "rename": true, "modify": true, "delete": true, "share": true, "download": true } }, "authMethod": "json" }, "server": { "root": "/srv/filebrowser", "tlsKey": "", "tlsCert": "", "port": "8080", "address": "0.0.0.0", "log": "stdout", "enableExec": false }, "auther": { "recaptcha": null } }
|
用户控制
使用用户控制命令时请使用root权限。
1 2 3 4 5 6 7 8
| filebrowser users add|find|export|import|ls|rm|update add 用户名 未加密密码 其他选项 添加用户,选项包括以上配置中的defaults中的大部分选项 export 路径 导出用户列表到文件 import 路径 从文件导入用户 find 用户名 搜索指定用户并打印详细信息 ls 列出所有用户 rm ID|用户名 删除用户 update ID|用户名 选项 设置用户,选项包括以上配置中的defaults中的大部分选项
|
条件命令
1 2 3 4
| filebrowser cmds add|ls|rm add [before|after]_[copy|rename|delete|save] "command" 添加一条条件命令 rm [before|after]_[copy|rename|delete|save] 序号 删除一条条件命令 ls 列出所有条件命令
|
systemd
使用用户模式下的一个简单的systemd service文件模板为
1 2 3 4 5 6 7 8 9 10
| [Unit] Description=File browser(User mode) After=network.target
[Service] ExecStart=/usr/local/bin/filebrowser -c $HOME/.config/filebrowser.json -d $HOME/.local/lib/filebrowser/filebrowser.db SuccessExitStatus=0 1
[Install] WantedBy=multi-user.target
|
相关配置文件请自行创建
建议放在~/.config/systemd/user目录下
系统全局安装标准方法
添加filebrowser用户
useradd -M -s /sbin/nologin filebrowser
在标准目录下创建filebrowser共享目录和数据库目录,并修改所有权
mkdir /srv/filebrowser /var/lib/filebrowserver
chown -R filebrowser:filebrowser /srv/filebrowser /var/lib/filebrowserver
创建配置文件
mkdir /etc/filebrowser
nano /etc/filebrowser/filebrowser.json
根据配置文件创建数据库
sudo -u filebrowser /usr/local/bin/filebrowser -d /var/lib/filebrowser/filebrowser.db config init
导入配置文件
sudo -u filebrowser /usr/local/bin/filebrowser -d /var/lib/filebrowser/filebrowser.db config import /etc/filebrowser/filebrowser.json
创建systemd服务filebrowser.serivce
,放在/etc/systemd/system目录下
1 2 3 4 5 6 7 8 9 10 11 12
| [Unit] Description=File browser After=network.target
[Service] User=filebrowser Group=filebrowser ExecStart=/usr/local/bin/filebrowser -c /etc/filebrowser/filebrowser.json -d /var/lib/filebrowser/filebrowser.db SuccessExitStatus=0 1
[Install] WantedBy=multi-user.target
|
启动服务
systemctl enable --now filebrowser
docker搭建
命令为
1 2 3 4 5 6 7 8 9
| docker run -itd \ -v /path/to/root:/srv \ # 指定根目录路径映射 -v /path/to/filebrowser.db:/database/filebrowser.db \ # 指定数据库路径映射 -v /path/to/settings.json:/config/settings.json \ # 指定配置文件路径映射 -e PUID=$(id -u) \ # 指定启动用户UID -e PGID=$(id -g) \ # 指定启动用户GID -p 8080:80 \ # 端口映射 --restart on-failure \ filebrowser/filebrowser
|
使用docker cp your-container-name:/database/filebrowser.db /path/to/filebrowser.db
提取数据库文件
借鉴上方系统服务搭建流程进行搭建