NAS 折腾日记(4)FileBrowser 部署与配置文件权限
创建于 2026-09-15
更新于 2026-09-19
科技
nas
docker
filebrowser
linux
3291 字 · 约 11 分钟

前言

Portainer 负责容器参数,应用挂载出来的配置文件使用 FileBrowser 编辑。本文记录目录映射、网页编辑和实际遇到的文件权限问题。

截至 2026 年 9 月,原 FileBrowser 项目已归档,停止提供后续修复。这里保留现有部署与权限处理的记录,入口限于管理内网,保持命令执行功能关闭;新建环境选择文件管理工具时需要考虑这个维护状态,见 项目说明

一、环境与目录规划

基础环境见 NAS 折腾日记(2)PVE 与 Docker 基础环境部署,管理入口见 NAS 折腾日记(3)Portainer 部署与容器管理。以下目录和 IP 为统一示例,命令在 Docker LXC 中执行。

内容 LXC 目录 容器目录
可编辑的应用配置 /srv/appdata /srv
FileBrowser 设置 /srv/appdata/filebrowser/config /config
FileBrowser 数据库 /srv/appdata/filebrowser/database /database

FileBrowser 使用 UID/GID 1000:1000。先准备本篇的新目录:

bash
1
2
3
4
5
6
mkdir -p /srv/appdata/filebrowser/config /srv/appdata/filebrowser/database mkdir -p /srv/appdata/homepage/config chown 1000:1000 /srv/appdata chown -R 1000:1000 /srv/appdata/filebrowser /srv/appdata/homepage chmod 750 /srv/appdata chmod -R u+rwX,g+rX,o-rwx /srv/appdata/filebrowser /srv/appdata/homepage

二、创建容器

先在 Docker LXC 创建 /srv/appdata/filebrowser/config/settings.json

json
1
2
3
4
5
6
7
8
{ "port": 80, "baseURL": "", "address": "0.0.0.0", "log": "stdout", "database": "/database/filebrowser.db", "root": "/srv" }

设置文件属主:

bash
1
2
chown 1000:1000 /srv/appdata/filebrowser/config/settings.json chmod 640 /srv/appdata/filebrowser/config/settings.json

Portainer 中点击 Add container,填写:

位置 参数
Name filebrowser
Image filebrowser/filebrowser:latest
Manual network port publishing Host 8081 → Container 80,TCP
Advanced container settings → Command & logging User 填 1000:1000
Restart policy Unless stopped

Volumes 添加三个 Bind:

Host Container
/srv/appdata/filebrowser/config /config
/srv/appdata/filebrowser/database /database
/srv/appdata /srv

点击 Deploy the container,进入 Logs 查看初始化结果。新版本会在首次初始化日志中给出随机管理员密码,按日志提示登录 http://192.168.20.30:8081,随后设置自己的密码。

本例把整棵 /srv/appdata 交给维护者编辑,其中可能包含应用凭据;FileBrowser 管理员应由同一位服务维护者担任。普通文件共享账号应单独设置 scope,不能沿用这个管理范围。

登录后能看到 homepage、filebrowser 等目录。打开一个测试配置文件并保存,确认读写权限正常。若出现 Permission denied,在 LXC 中执行:

bash
1
2
3
ls -ldn /srv/appdata /srv/appdata/homepage/config ls -ln /srv/appdata/filebrowser/config/settings.json docker top filebrowser

本例进程使用 1000:1000,目录和文件也应给这个身份相应权限。之前遇到的 775 仍无法写入,就是还需要对照属主、所属组和进程身份。

三、验证配置编辑

登录后进入 homepage/config,新建 test.txt,填写一行文字并保存。在 LXC 中确认文件存在及数字属主:

bash
1
2
cat /srv/appdata/homepage/config/test.txt ls -ln /srv/appdata/homepage/config/test.txt

网页内的 / 对应容器 /srv,也就是 LXC 的 /srv/appdata。看到的相对目录为 homepage/config,应用配置中引用的宿主目录仍是 /srv/appdata/homepage/config

四、处理文件权限

此前遇到的问题是 /config/settings.json 写入失败。目录模式调整为 775 后仍然报错,原因涉及 root 属主与 FileBrowser 进程身份。目录的写权限、已有文件的写权限以及祖先目录的执行权限都需要对应。

bash
1
2
3
# 针对报错文件逐级查看 ls -ldn /srv /srv/appdata /srv/appdata/filebrowser /srv/appdata/filebrowser/config ls -ln /srv/appdata/filebrowser/config/settings.json

对于本篇由 FileBrowser 管理的设置文件,修正为:

bash
1
2
chown 1000:1000 /srv/appdata/filebrowser/config/settings.json chmod 640 /srv/appdata/filebrowser/config/settings.json

其他应用有自己的运行身份,先查该镜像对 PUID/PGID 或 User 的支持,再决定属主。将整棵应用目录递归改成同一用户,可能影响原服务数据库等文件,因此权限调整按具体目录进行。

Alpine 可以用以下命令创建对应的本地账号;若数字 ID 已存在,使用已有账号即可:

bash
1
2
3
# 新建环境中的可选命名,数字 ID 与容器保持一致 addgroup -g 1000 appfiles adduser -D -H -u 1000 -G appfiles appfiles

五、更新与备份

在 Portainer 停止 FileBrowser 后,备份配置与数据库:

bash
1
2
3
4
mkdir -p /srv/backups docker stop filebrowser tar -czf /srv/backups/filebrowser-backup.tar.gz -C /srv/appdata filebrowser docker start filebrowser

更新时保留 /config/database/srv 三个映射和 User,使用 Duplicate/Edit 调整镜像后部署。重新登录,检查原账号、文件列表和文件编辑。应用配置目录中的其他内容属于各自服务的备份范围。

Homepage 篇会给 Homepage 设置相同的 PUID/PGID=1000:1000,使它生成的配置也能继续由 FileBrowser 编辑,并补充 FileBrowser 的空间用量组件。

参考

手机扫码阅读
本文作者: 有次元袋的 tiger
本文链接: https://www.superheaoz.top/2026/09/34732/
版权声明: 本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 我的个人天地