简单文件共享服务部署

使用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提取数据库文件
借鉴上方系统服务搭建流程进行搭建