https://github.com/xxxuuu/fnos-qb-proxy
项目原介绍
What is it?
fnOS 中自带了一个下载器(基于 qBittorrent 和 Aria2),但默认关闭了 WebUI,且采用动态密码。这使得我们无法在外部连接 fnOS 中的 qBittorrent(e.g. 接入 MoviePilot 或 NasTools 等)
该项目是一个简单的代理,能绕过这些限制,提供在外部访问 fnOS 的 qBittorrent 的能力同时不影响 fnOS 自身的下载器运行
如果按项目作者所介绍使用docker,正常方式如下:
先准备好相关文件:
yanhy2000@fnnas:~$ ls /vol1/1000/ssd/docker/docker-compose/fnos-qb-proxy
docker-compose.yml Dockerfile.txt fnos-qb-proxy_linux-amd64docker-compose.yml
services:
fnos-qbit-proxy:
build:
context: .
dockerfile: Dockerfile.txt
container_name: fnOS-qBit-Proxy
pid: "host"
network_mode: "bridge"
environment:
- PASSWORD=fnosnb
ports:
- "7111:8086"
volumes:
- /home/yanhy2000/qbt.sock:/app/qbt.sockDockerfile.txt
FROM alpine:latest
ENV LANG=C.UTF-8 \
UDS="/app/qbt.sock" \
PORT=8086 \
PASSWORD="fnosnb"
WORKDIR /app
COPY fnos-qb-proxy_linux-amd64 /usr/local/bin/fnos-qb-proxy
RUN chmod +x /usr/local/bin/fnos-qb-proxy && \
echo "https://mirrors.tuna.tsinghua.edu.cn/alpine/latest-stable/main" > /etc/apk/repositories && \
echo "https://mirrors.tuna.tsinghua.edu.cn/alpine/latest-stable/community" >> /etc/apk/repositories && \
apk add --no-cache bash
CMD ["sh", "-c", "fnos-qb-proxy --uds $UDS --password $PASSWORD --port $PORT"]当系统更新重启后,哪怕将docker启动设置在dlcenter.service之后,也大概率因为qBittorrent服务未完全启动导致容器反复启动失败,只有等待服务启动后,重新构建compose启动才能恢复,不能实现完全自动。
Docker容器启动时,如果映射的Socket文件不存在,Docker可能会自动将其创建一个为目录而非文件,导致后续挂载错误。且容器的重启策略有时不如Systemd的依赖检查灵活,容易在系统启动初期因资源未就绪而进入死循环或报错停止。
将fnos-qb-proxy_linux-amd64下载到本地,并移动至/usr/bin/fnos-qb-proxy
sudo cp fnos-qb-proxy_linux-amd64 /usr/bin/fnos-qb-proxy
sudo chmod +x /usr/bin/fnos-qb-proxy创建systemd服务配置文件
sudo nano /etc/systemd/system/fnos-qb-proxy.service填充以下脚本(将用户名改成你自己的),并保存
[Unit]
Description=fnos qb proxy service
#在下载服务启动后启动
After=network.target dlcenter.service
#跟随dlcenter服务运行
Requires=dlcenter.service
[Service]
Type=simple
User=root
#脚本逻辑部分
#隔2秒检查一次qbt.sock文件是否存在且必须是Socket文件(防止被识别为文件夹,如果之前使用过docker可能会残留这个问题)
ExecStartPre=/bin/bash -c 'until [ -S "/home/用户名/qbt.sock" ]; do echo "Waiting for qbt.sock..."; sleep 2; done'
#自定义密码与端口
ExecStart=/usr/bin/fnos-qb-proxy --uds "/home/用户名/qbt.sock" --password fnosnb --port 7111
#如出错5s自动重启服务
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target重载服务,运行服务
sudo systemctl daemon-reload
sudo systemctl enable --now fnos-qb-proxy查看日志,看看是否运行成功
sudo journalctl -u fnos-qb-proxy -f如果出现类似于下文的日志则认为是运行成功
Nov 19 17:07:43 fnnas bash[1965]: Waiting for qbt.sock...
Nov 19 17:07:45 fnnas systemd[1]: Started fnos-qb-proxy.service - fnos qb proxy service.
Nov 19 17:07:45 fnnas fnqb-proxy[5675]: proxy running on port 7111