1. 概述
官网:https://filebrowser.org/ GitHub:https://github.com/filebrowser/filebrowser
File Browser 是一款开源的私有云盘项目,具有以下特点:
- 跨平台支持:适用于多种操作系统。
- 轻量级:安装部署简单快捷,配置要求低。
- 高效性能:基于 Go 语言开发,运行速度快。
- 可视化操作:提供简洁易用的网页版文件管理器,支持文件和文件夹操作、在线预览、共享链接等。
- 用户认证:支持用户管理、权限设置和范围控制。
- 自定义命令:支持 Shell 命令执行
2. 功能特性
- 多语言支持:默认支持中文。
- 文件管理:上传、删除、重命名、编辑文件。
- 用户管理:创建和管理多个用户,每个用户可拥有独立目录。
个性化设置:修改系统名称和 Logo。
3. 安装
docker 镜像地址:https://hub.docker.com/r/filebrowser/filebrowser 详细安装说明见 https://filebrowser.org/installation
3.1. 生成 setting.json 文件
{
"port": 8080,
"baseURL": "",
"address": "",
"log": "stdout",
"database": "/database/filebrowser.db",
"root": "/srv"
}
注意:
port为容器端口,官方文档中设置的是 80 端口。个人建议设置为 8080,这样当容器以非 root 身份运行时,也可以监听成功。而如果设置为 80,那么容器只能以 root 身份运行。"root":"/srv":为容器内的网盘目录,建议设置为 /srv。
3.2. 创建一个空的 filebrowser.db 文件
mkdir -p ./data
touch filebrowser.db
3.3. 运行容器
# -v $CURRENT_DI/opt/filebrowser/data:/srv: 将宿主机目录挂载到容器内的/srv 目录,这是网盘的数据目录
docker run \
-v /opt/filebrowser/data:/srv \
-v /opt/filebrowser/filebrowser.db:/database/filebrowser.db \
-v /opt/filebrowser/setting.json:/config/settings.json \
-u $(id -u):$(id -g) \
-p 8080:8080 \
-d \
--name filebrowser-server \
--restart=unless-stopped \
filebrowser/filebrowser
3.4. 访问
浏览器访问地址:http://<服务器 IP>:8080/files,请将 <服务器 IP> 替换为自己服务器 IP 地址。
[root@localhost filebrowser]# docker logs filebrowser-server
2025/12/29 11:47:55 Using config file: /config/settings.json
2025/12/29 11:47:55 WARNING: filebrowser.db can't be found. Initializing in /database/
2025/12/29 11:47:55 Using database: /database/filebrowser.db
2025/12/29 11:47:55 Performing quick setup
2025/12/29 11:47:55 User 'admin' initialized with randomly generated password: 1_vq2yzAkooehgNf
2025/12/29 11:47:55 Listening on [::]:8080
可以通过日志查看到用户名 admin 和密码 1_vq2yzAkooehgNf,注意每个人密码不一致,请替换成自己的密码。
3.5. 功能介绍
支持在线查看 pdf 文件,图片,视频,txt 文档,目前无法查看 office 文件,分享后,可以发送分享链接给用户,支持多用户多权设置。
4. 常见问题
4.1. listen tcp :80: bind: permission denied
由于在 docker run 时使用了参数 -u $(id -u):$(id -g),这使得 FileBrowser 以非特权用户身份运行。在容器内部尝试绑定到 80 端口仍然需要特权,从而导致 bind: permission denied 错误。
解决方案:更改容器内的监听端口。最简单的方法是让 FileBrowser 监听一个大于 1024 的端口,比如 8080。


