乘着黑五打折,买了一个大盘鸡,准备再次搭建个人网盘,上次用 Seafile 搭建的网盘由于独服太贵,GIA 带宽又太小,没用多久就挂了。同时也发现 Seafile 虽然好,但并不适合自己,其实自己的需求很简单,甚至前段时间都是直接一个 http 单页浏览文件的,然而有时候也需要在线看一下文档,因此更需要一款轻量化的网盘工具,无意中发现了 File Browser,从介绍来看很不错,最近也对 Go 语言颇有好感,便安装来试一试。

官方有脚本安装,但个人喜欢自定义安装,同时本就是 Go 语言编写的程序,直接下载编译好的可执行文件运行即可。因此下面介绍在 Linux 上直接运行和使用 Docker 安装两种方式。

直接使用

首先去 release 页面,根据你的系统和处理器架构选择下载最新的版本,比如这里下载 amd64(X86-64) 2.18.0 版本:

wget https://github.com/filebrowser/filebrowser/releases/download/v2.18.0/linux-amd64-filebrowser.tar.gz

解压到你指定的目录,比如这里的 /home/filebrowser

tar -xvf linux-amd64-filebrowser.tar.gz -C /home/filebrowser

进入到你的目录为 filebrowser 添加可执行权限:

chmod +x filebrowser

接下来就直接运行了:

./filebrowser -p 2222

配置参数运行

在上面的直接运行命令中你可以加上一些自定义参数,在官方文档中可以看到完整的命令使用,下面是部分常用的的参数:

  • -a, --address string:监听的地址(默认为 127.0.0.1)
  • -p, --port string:监听端口(默认为 8080)
  • -b, --baseurl string:网站路径
  • -t, --cert string:SSL 证书
  • -k, --key string:SSL 证书密钥
  • -l, --log string:日志默认为标准输出,如果要记录到文件的话可以直接指定文件,例如 /home/filebrowser/filebrowser.log
  • -c, --config string:配置文件路径
  • -d, --database string:数据库路径(默认值 "./filebrowser.db")
  • -r, --root string:数据存放路径

这里我为了方便,选择自己写一个配置文件,vim filebrowser.json

{
  "port": 2222,
  "baseURL": "",
  "address": "127.0.0.1",
  "log": "stdout",
  "database": "/home/filebrowser/database.db",
  "root": "/data/filebrowser"
}

之后直接在程序目录执行:

./filebrowser -c filebrowser.json

然后在浏览器中打开你的网站登录即可,默认管理员用户和密码都为 admin,建议登录后先重新设置密码。

使用 SSL

File Browser 本身支持直接在运行时使用 tk 参数或者在配置文件中使用 certkey 参数设置 SSL 证书和密钥。但我这里选择使用 Nginx 前端反代:

server {
    listen ...;
    server_name ...;
    ssl_certificate ...; 
    ssl_certificate_key ...;
    ...
    location / {
        proxy_pass  http://127.0.0.1:2222;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

如果你想使用二级目录,例如 yourdomain.com/file 的形式,需要修改前面配置文件中 "baseURL": "/file",以及 Nginx 配置文件中 location /file

后台持续化运行

可以简单使用直接 nohup:

nohup filebrowser -c filebrowser.json &

但我更推荐通过 systemd 控制:

vim /etc/systemd/system/filebrowser.service

输入以下内容:

[Unit]
Description=File Browser
After=network.target

[Service]
ExecStart=/home/filebrowser/filebrowser -c /home/filebrowser/filebrowser.json

[Install]
WantedBy=multi-user.target

记得修改 ExecStart 后面为你自己的文件路径,之后执行:

systemctl daemon-reload
  • 运行:systemctl start filebrowser.service
  • 停止运行:systemctl stop filebrowser.service
  • 开机启动:systemctl enable filebrowser.service
  • 取消开机启动:systemctl disable filebrowser.service

使用 Docker

如果你想使用 Docker 运行的话,也是比较方便的。

安装Docker

详情参见官网文档

apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

添加Docker密钥:

curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

添加Docker稳定版仓库:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

安装Docker:

apt update
apt install docker-ce docker-ce-cli containerd.io

安装File Browser

详情参见官网文档

在适合的路径下创建数据库文件,例如:

touch /home/filebrowser/database.db

如果你需要自定义参数设置的话可以创建一个配置文件,具体的内容和我上面在直接使用方式中提到的配置文件写法一致,也可以直接在容器启动命令中设置。执行:

docker run \
    -v /path/to/root:/srv \
    -v /home/filebrowser/filebrowser.db:/database.db \
    -v /home/filebrowser/filebrowser.json:/.filebrowser.json \
    -v /path/to/yourssl.pem:/ssl.pem \
    -v /path/to/yourssl.key:/ssl.key \
    -p 2222:80 \
    --name filebrowser \
    --restart=always \
    -d filebrowser/filebrowser

上面是带有配置文件的写法,不需要可以去掉第四行,而第二行的 /path/to/root 是你的数据存放目录,第五行和第六行是 SSL 证书路径,不需要的话也可以直接去掉。

运行之后就可以直接在浏览器中访问 http://yourdomain.com:2222 登录了,也可以通过上面提到的 Nginx 代理访问

总结

登录后可以在 Settings -> Profile Settings -> Language 中修改语言,支持中文。添加管理多用户,分享文件可以设置时效和密码,以及设置一些自定义操作命令。

整体体验下来界面 UI 一目了然,操作逻辑很简单,性能应该不差,功能不多但刚好满足自己的需求,支持简单的在线文档查看,以及音视频播放,可以配合 Aria2 下载在线观看学习资料,总体感觉不错,值得推荐。