为了低成本脱离互联网的各种服务,从自弄了机器做NAS,时不时就得折腾一下,证明我还不完全死去,正如我在「我那点文件数据的过去、现在与未来」 最后所说的那样,虽然这些都不是什么重要的东西,但是弄好还是挺开心的。
为了从外部网络更方便的访问自己的数据,我从NextCloud 折腾到 FileRun,后面也弄过 Alist 玩过一段时间,最后找到了 FileBrowser ,它简单,刚好满足我简单的需求,记录一下部署过程,以备后用。
我的需求:
- 在外部网络使用网页访问我的数据
- 使用 Nginx 二级目录进行反向代理,多个应用只记一个域名和端口就行
环境:
- Debian/12
- Docker/27.3.1
- Nginx/1.27.2
前期准备工具
准备好用来挂载到容器的文件夹,并设置相应的权限,主要是文件目录(参考下面Docker启动配置),比如说准备用用户 www 来管理,那就先设置权限: chown www:www /srv/disk -P
(注意,这很重要,不然系统可能直接起不来)
查看用户 ID,备用: id www
配置 Docker 容器并启用
这里使用 linuxserver 镜像 (官方参考: https://filebrowser.org/installation )
官方提供的方法是直接挂载文件,我这里会报错 :unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
所以,这里改一下,挂载文件夹,而不是文件,这也是选择 linuxserver 镜像的原因,它的配置文件和数据库文件在文件夹下面,而 alpine 的两个文件在根目录下,最终如下,保存这段配置为 .sh 文件:
docker run -d \
--name filebrowser \
-v /srv/mydisk:/srv \ #文件目录,即准备用filebrowser来管理的目录
-v /Docker/filebrowser/database:/database \ #数据文件目录
-v /Docker/filebrowser/config:/config \ #json配置文件目录
-e PUID=$(id -u) \ #改成前面查到的用户ID,比如 PUID=1000
-e PGID=$(id -g) \ #改成查到的用户组ID, 比如 PGID=1000
-p 8080:80 \
filebrowser/filebrowser:s6
# 如果你复制这段进行修改使用,注意格式,比如空格、注释删除等
创建并启动容器: bash filebrowser_linuxserver.sh
查看容器是否运行正常: docker ps
如果容器运行正常,这个时候防火墙开放端口(上面演示的是8080,防火墙可以使用 UFW),就可以通过本地IP+端口进行访问了
配置二级目录反向代理
FileBrowser 端:修改 json 配置文件 , 将 baseURL 设置为二级目录的名称,比如这这里是 /files(更多选项参考:filebrowser config set | File Browser)
nano /DockerData/filebrowser/config/settings.json
{
"port": 80,
"baseURL": "/files",
"address": "",
"log": "stdout",
"database": "/database/filebrowser.db",
"root": "/srv"
}
Nginx 端:在现有站点配置文件下,添加下面反向代理配置(如果没有站点,那就新建一个,可以使用 LNMP 面板进行管理,参考 「说说 LNMP 面板」)
## firebrowser
location ^~ /files {
proxy_pass http://127.0.0.1:8080;
client_max_body_size 2048m;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
重启容器:docker restart filebrowser
这时,就可以使用 https://你的域名:端口/files 进行访问了
以上
本文是 居家服务器折腾笔记 的一部分
One thought on “简单的私有云数据访问工具 – FileBrowser 部署记要”