<br />
<br />
FNOS-qb-proxy 使用教程
FNOS 默认关闭了下载器的 WebUI,并采用动态密码,这让外部的应用程序难以接入。
在本文中,我将详细讲解如何通过 fnos-qb-proxy
代理访问 FNOS 中的 qBittorrent 下载器。
通过使用 fnos-qb-proxy
,我们能够绕过这些限制,实现 qBittorrent WebUI 的访问,方便使用诸如 MoviePilot、NasTools、PeerBanHel.per 等工具,同时不影响 FNOS 自身的下载器运行。
背景
【优化 fnOS 下载体验:防范吸血客户端的策略与建议】
https://club.fnnas.com/forum.php?mod=viewthread&tid=3094
FNOS 系统提供了下载器功能,使用了 qBittorrent 和 Aria2 作为后台支持。但系统默认关闭了 qBittorrent 的 WebUI,且密码是动态生成的,这使得一些外部工具(例如 MoviePilot、NasTools、PeerBanHel.per 等)无法直接与 FNOS 下载器交互。
为什么需要 FNOS-qb-proxy?
在 FNOS 中,下载任务是通过内部的机制进行管理的,外部应用程序很难直接接入。例如:
- MoviePilot 中下载功能需要通过 qBittorrent 接口添加任务。
- PeerBanHel.per 中限制吸血鬼客户端需要 qBittorrent 接口。
由于 qBittorrent WebUI 被 FNOS 隐藏,不直接对端口进行暴露,外部应用无法直接管理 qB 下载器。
FNOS-qb-proxy 简介
fnos-qb-proxy
是一个用 Go 语言编写的小型代理程序,允许用户通过代理访问 FNOS 内部的 qBittorrent 下载器的 WebUI。该代理可以:
- 通过指定的 Unix Domain Socket (UDS) 连接到 qBittorrent。
- 提供外部的 WebUI 访问。
- 支持设定访问密码和修改端口。
项目地址
https://github.com/xxxuuu/fnos-qb-proxy
安装与配置
手动安装
- 下载可执行文件
首先下载预编译的二进制文件到 FNOS 主机上:
wget https://github.com/xxxuuu/fnos-qb-proxy/releases/download/v0.1.0/fnos-qb-proxy_linux-amd64 -O fnos-qb-proxy
- 赋予可执行权限
chmod +x fnos-qb-proxy
- 运行代理
使用 --uds 参数指定 qBittorrent 监听的 Unix domain socket 路径(通常在 /home/{user}/qbt.sock),并启动代理:
./fnos-qb-proxy --uds "/home/$USER/qbt.sock" -p "fnosnb" -port 8086
启动后,可以通过访问 http://{host}:8086 来进入 qBittorrent 的 WebUI。
默认用户名为 admin,使用 -p 参数设置了密码,则只有该密码可以登录。如果不需要密码,可以去除 -p "fnosnb"
配置 Systemd 服务
为了使代理程序在后台运行并随系统启动,可以将其配置为 Systemd 服务。
- 移动二进制文件
将 fnos-qb-proxy 二进制文件移动到 /usr/bin 目录:
sudo mv fnos-qb-proxy /usr/bin/
- 创建 Systemd 服务文件
在 /etc/systemd/system/ 目录下创建 fnos-qb-proxy.service 文件,并写入以下内容, 并将$USER更改为你的用户名:
[Unit]
Description=fnOS qBittorrent Proxy Service
After=dlcenter.service
Requires=dlcenter.service
[Service]
RestartSec=5
ExecStartPre=/bin/sleep 5
ExecStart=/usr/bin/fnos-qb-proxy --uds "/home/$USER/qbt.sock" -p "fnosnb" -port 8086 -d
Restart=always
[Install]
WantedBy=multi-user.target
- 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now fnos-qb-proxy
- 检查服务状态
通过以下命令查看服务是否正常运行:
sudo systemctl status fnos-qb-proxy
正常输出示例:
● fnos-qb-proxy.service - fnOS qBittorrent Proxy Service
Loaded: loaded (/etc/systemd/system/fnos-qb-proxy.service; enabled; preset: enabled)
Active: active (running) since Mon 2024-10-21 23:09:34 CST; 4s ago
Main PID: 1801543 (fnos-qb-proxy)
Tasks: 6 (limit: 9495)
Memory: 6.0M
CPU: 122ms
CGroup: /system.slice/fnos-qb-proxy.service
**─1801543 /usr/bin/fnos-qb-proxy --uds /home/admin/qbt.sock
这表明服务正在正常运行。
目前已知问题
MoviePilot 刷流插件
当 MoviePilot 的刷流插件通过 该项目转发的 API 添加下载任务后,可能会导致 WebUI 无法刷新下载数据,影响 FNOS 的下载器的任务刷新。这时需要重启 dlcenter 服务。
sudo systemctl restart dlcenter
或者通过 sudo crontab -e
,添加定时任务临时解决该问题。
0 */12 * * * /bin/systemctl restart dlcenter.service # 每12小时自动重启
目前观测到以下方法可能可以改善该问题:
- 在 qB WebUI 设置中的 WebUI 去除勾选
启用“点击劫持”保护
、启用跨站请求伪造 (CSRF) 保护
、启用 Host header 属性验证
- 在修改好之后,每次登陆WebUI界面后,下载器都可正常刷新数据。直至认证过期。
正在考虑通过便携脚本自动化执行该操作。
欢迎广大论坛网友提供PR共同解决该问题。
最后
希望 FNOS 官方在未来版本中能够开放下载器的 qBittorrent Web API,进一步提升用户的下载管理体验。
此文部分由ChatGPT编写,有时间再转义成人话