感谢本项目的作者顾远大佬分享,原文链接为这里,本文在原文上稍微做了一点补充。

该容器可以监控NC盒子是否被限速,用于流量有日限制的机子,配置好容器后当监测到NC盒子流量被限速时会删掉qb里的种子(可以添加排除分类不删除),然后关闭qb;当监测到NC盒子限速解除后会重启qb,另外具备iyuu通知和tg机器人通知功能。白名单功能:该服务器的qb下载器不受自动控制,只监控限速情况。

有群友反应安装在自己的nas身无法监测到盒子,本人没有试过,所以建议直接安装在NC盒子上

1.安装步骤

ssh登录nc,在当前目录下创建data文件夹并进入
mkdir -p data/data && cd data

创建配置文件config.json,模版内容如下

{
    "monitoring": {
        "update_interval": 300,
        "retry_interval": 60,
        "log_level": "INFO",
        "auto_control": true
    },
    "accounts": [
        {
            "name": "账户名称1",
            "api_credentials": {
                "loginname": "你的scp登录名",
                "password": "你的scp密码"
            },
            "servers": [
                {
                    "ip": "服务器IP地址",
                    "ssh_port": 22,
                    "ssh_username": "root",
                    "ssh_password": "root密码",
                    "control_type": "systemd",
                    "control_target": "服务名称,如 qbittorrent-nox@guyuanwind.service",
                    "qb_url": "http://服务器IP:端口",
                    "qb_username": "qBittorrent登录用户名",
                    "qb_password": "qBittorrent登录密码",
                    "excluded_categories": ["保留的分类1", "保留的分类2"]
                },
                {
                    "ip": "另一台服务器IP",
                    "ssh_port": 22,
                    "ssh_username": "root",
                    "ssh_password": "root密码",
                    "control_type": "docker",
                    "control_target": "容器名称,如 qb4747",
                    "qb_url": "http://服务器IP:端口",
                    "qb_username": "qBittorrent登录用户名",
                    "qb_password": "qBittorrent登录密码",
                    "excluded_categories": ["保留的分类1", "保留的分类2"]
                }
            ]
        },
        {
            "name": "账户名称2",
            "api_credentials": {
                "loginname": "另一个账户的登录名",
                "password": "另一个账户的密码"
            },
            "servers": [
                {
                    "ip": "第三台服务器IP",
                    "ssh_port": 22,
                    "ssh_username": "root",
                    "ssh_password": "root密码",
                    "control_type": "docker",
                    "control_target": "qb4747",
                    "qb_url": "http://服务器IP:端口",
                    "qb_username": "qBittorrent登录用户名",
                    "qb_password": "qBittorrent登录密码",
                    "excluded_categories": ["保留的分类1", "保留的分类2"]
                }
            ]
        }
    ],
    "notifications": {
        "telegram": {
            "enabled": true,
            "bot_token": "你的Telegram Bot Token",
            "chat_id": "你的Telegram Chat ID"
        },
        "iyuu": {
            "enabled": true,
            "token": "你的IYUU Token"
        }
    },
    "web": {
        "username": "admin",
        "password": "password"
    }
}

执行nano config.json,把以上内容复制进去按ctrl+x后按y再按回车保存退出;

这里说下模板里的几个参数

name: 账户名称,随便填就行
control_type: 用一键安装脚本部署qb的直接填 systemd 就行
control_target: 可以通过systemctl status qb*确认运行的服务名称,用一键安装脚本部署qb的一般是 qbittorrent-nox@.service
excluded_categories: 这里填希望qb退出时不想被删除的种子的分类名字,那种不能跳车的种子可以加进去

tg通知相关
bot_token: 机器人api token, 在tg中的BotFather里建立相关机器人就可以获取
chat_id: 获取Chat ID步骤如下
    好友添加机器人 get_id_bot
    输入 /start 或者菜单选择/my_id,即可获得自己的Chat ID。


执行 nano docker-compose.yml创建compose文件,内容如下

services:
  nc-traffic-monitor:
    image: guyuanwind/nc-traffic-monitor:latest
    container_name: nc-traffic-monitor
    restart: unless-stopped
  
    # 端口映射
    ports:
      - "4949:4949"                           # Web界面端口
  
    # 环境变量
    environment:
      - TZ=Asia/Shanghai
      - PYTHONUNBUFFERED=1
  
    # 挂载配置文件、数据目录
    volumes:
      - ./config.json:/app/config.json:ro     # 只读挂载配置文件
      - ./data:/app/data                      # 数据目录(状态文件和日志)
      - /etc/localtime:/etc/localtime:ro      # 挂载主机时区文件
  
    # 网络模式
    networks:
      - nc-monitor-network

networks:
  nc-monitor-network:
    driver: bridge

然后执行docker compose up -d启动该容器

启动后可以通过 docker ps |grep nc 命令查看容器是否正常启动,如果启动异常可以通过执行 docker compose logs -f来查看具体的日志信息,启动异常一般是config.json文件有问题(比如多了逗号等)。

之后可以在web端登录查看监控情况

web里输入NC ip+4949端口进入,默认账号密码为admin password

2.web展示图

3.机器人展示

tg机器人可以通过菜单交互查询所有服务器状态、添加白名单和删除白名单

如果觉得我的文章对你有用,请随意赞赏