在 Debian 服务器上部署 FileBrowser 并集成到现有博客路径
在 Debian 服务器上部署 FileBrowser 并集成到现有博客路径
前言
FileBrowser 是一个轻量级的 Web 文件管理器,可以让你通过浏览器轻松管理服务器上的文件。本文将详细介绍如何在已经运行博客的 Debian 服务器上,通过子路径 (/files
) 方式部署 FileBrowser,并与现有 Nginx 和 Let's Encrypt 证书无缝集成。
准备工作
• 运行 Debian 的服务器
• 已安装 Docker 和 Docker Compose
• 已配置 Nginx 并运行博客(假设博客运行在 9000 端口)
• 已配置 Let's Encrypt SSL 证书
步骤 1:创建 FileBrowser 专用目录
mkdir -p ~/filebrowser/{data,database}
cd ~/filebrowser
步骤 2:编写 Docker Compose 文件
创建 docker-compose.yml
文件:
nano docker-compose.yml
内容如下:
version: '3'
services:
filebrowser:
image: filebrowser/filebrowser:latest
container_name: filebrowser
restart: unless-stopped
volumes:
- ./data:/srv # 文件存储目录
- ./database:/database # 数据库目录
ports:
- "127.0.0.1:9001:80" # 仅本地访问
environment:
- FB_BASEURL=/files # 匹配 Nginx 的子路径
启动容器:
docker-compose up -d
步骤 3:初始化 FileBrowser 配置
方法一:使用默认账户登录
FileBrowser 默认会创建一个管理员账户:
• 用户名:admin
• 密码:admin
首次登录后应立即修改密码。
方法二:手动创建账户
# 初始化数据库
docker exec -it filebrowser filebrowser -d /database/filebrowser.db config init
# 设置根目录
docker exec -it filebrowser filebrowser -d /database/filebrowser.db config set --root /srv
# 创建管理员账户
docker exec -it filebrowser filebrowser -d /database/filebrowser.db users add 用户名 密码 --perm.admin
步骤 4:修改 Nginx 配置
编辑现有的博客 Nginx 配置文件(假设位于 /etc/nginx/sites-available/your_blog
):
sudo nano /etc/nginx/sites-available/your_blog
在 server
块中添加以下配置:
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
# 原有博客配置
location / {
proxy_pass http://localhost:9000;
# 其他博客代理配置...
}
# 新增 FileBrowser 配置
location /files/ {
proxy_pass http://localhost:9001/; # 注意结尾的斜杠
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 认证相关头部
proxy_set_header Authorization $http_authorization;
proxy_pass_request_headers on;
# 解决静态资源路径问题
proxy_redirect / /files/;
sub_filter_once off;
sub_filter 'href="/' 'href="/files/';
sub_filter 'src="/' 'src="/files/';
}
# Let's Encrypt SSL 配置
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
测试并重载 Nginx:
sudo nginx -t
sudo systemctl reload nginx
步骤 5:验证安装
- 访问
https://yourdomain.com/files/
- 使用设置的用户名和密码登录
- 确认可以正常浏览和管理文件
高级配置
- 限制访问 IP
如果需要限制访问 IP,在 Nginx 配置中添加:
location /files/ {
# 允许的IP段
allow 192.168.1.0/24;
allow 127.0.0.1;
deny all;
# 原有代理配置...
}
- 文件上传大小限制
增加 Nginx 的 client_max_body_size:
server {
# ...
client_max_body_size 10G; # 允许上传最大10GB文件
}
- 优化 FileBrowser 配置
通过 Docker 环境变量优化:
environment:
- FB_DISABLE_EDITOR=false # 启用内置编辑器
- FB_DISABLE_EXEC=false # 允许执行命令
- FB_DISABLE_PREVIEW_RESIZE=false # 允许预览图片调整大小
常见问题解决
- 静态资源加载失败
确保 FileBrowser 的 baseURL 设置正确:
docker exec -it filebrowser filebrowser -d /database/filebrowser.db config set --baseurl /files
- 登录后立即退出
检查 Nginx 的 Cookie 设置:
proxy_cookie_path / "/files; Secure; HttpOnly; SameSite=Lax";
- 忘记管理员密码
重置密码:
docker exec -it filebrowser filebrowser -d /database/filebrowser.db users update admin -p newpassword
总结
通过本文的步骤,你已经成功:
- 使用 Docker 部署了 FileBrowser
- 通过子路径
/files
将其集成到现有博客 - 与现有的 Nginx 和 Let's Encrypt 证书配置无缝结合
- 设置了基本的用户管理和安全配置
现在你可以通过 https://yourdomain.com/files/
安全地管理服务器文件了!