1. 说明
filebrowser 是一个开源的网盘,可以搭建私有网盘,可以用来存放一些文件,比如图片,视频,文档等。
详细功能介绍见 https://filebrowser.org/features
简易登陆界面
通过时尚的界面管理您的文件
用户及权限管理
在线编辑文件
2. 安装
docker镜像地址: https://hub.docker.com/r/filebrowser/filebrowser
详细安装说明见 https://filebrowser.org/installation
2.1. 生成setting.json文件
{
"port": 8080,
"baseURL": "",
"address": "",
"log": "stdout",
"database": "/database/filebrowser.db",
"root": "/srv"
}
注意
- port 为容器端口,官方文档中设置的是80端口。个人建议设置为8080,这样当容器以非root身份运行时,也可以监听成功。而如果设置为80,那么容器只能以root身份
- “root”:“/srv” : 为容器内的网盘目录,建议设置为/srv。
2.2. 创建一个空的filebrowser.db 文件
mkdir -p ./data
touch filebrowser.db
2.3. 运行容器
CURRENT_DIR=$(cd `dirname $0`;pwd)
cd $CURRENT_DIR
mkdir -p ./data
# 如果 filebrowser.db 不存在, 则 touch
if [ ! -f "./data/filebrowser.db" ];then
touch "./data/filebrowser.db"
fi
docker rm -f filebrowser-server
# -v $CURRENT_DIR/data:/srv : 将宿主机目录挂载到容器内的/srv目录,这是网盘的数据目录
docker run \
-v $CURRENT_DIR/data:/srv \
-v $CURRENT_DIR/data/filebrowser.db:/database/filebrowser.db \
-v $CURRENT_DIR/settings.json:/config/settings.json
-u $(id -u):$(id -g) \
-p 8080:8080 \
-d \
--name filebrowser-server \
--restart=unless-stopped \
filebrowser/filebrowser
2.4. 访问
浏览器访问地址:http://192.168.1.103:8080,将IP替换为自己服务器IP地址。
初始帐号信息
admin : admin
3. 问题
3.1. listen tcp :80: bind: permission denied
由于在docker run 时使用了参数:
-u $(id -u):$(id -g)
这使得FileBrowser以非特权用户身份运行。在容器内部尝试绑定到80端口仍然需要特权,从而导致bind: permission denied错误。
解决方案:
更改容器内的监听端口:最简单的方法是让FileBrowser监听一个大于1024的端口,比如8080