Sign inSign up

sqing33/pt-nexus

By sqing33

Updated about 8 hours ago

Image
0

10K+

sqing33/pt-nexus repository overview

PT Nexus - PT 种子聚合管理平台

Important

**分支说明(Go 主线)**:本分支(`go`)为当前默认开发主线,后续功能迭代仅在本分支进行。 Python 旧实现已迁移到 `python` 分支用于归档。

PT Nexus 是一款支持 Docker 容器化部署、兼容多下载器与多数据库的 PT 种子聚合管理平台,可自动提取标准化种子参数、解析标题组件,智能纠错补充 MediaInfo/截图/简介等内容、适配不同站点发布规范,支持批量转种与自动推送下载器做种,还具备禁转检测、已存在种子智能匹配等机制,搭配本地文件检索、IYUU API 查漏种等辅助功能,大幅简化跨站点转种流程,显著提升 PT 转种与管理效率。

手动触发 Release

如需在推送代码后通过命令手动触发 GitHub Release,可直接使用仓库里的发布脚本。

前置条件:

  • 已安装并登录 GitHub CLI:gh auth login
  • 已将待发布代码与 CHANGELOG.json 推送到目标分支

推荐在仓库根目录执行,常用命令:

./scripts/release-manual-dispatch.sh
./scripts/release-manual-dispatch.sh --dry-run
./scripts/release-manual-dispatch.sh --all
./scripts/release-manual-dispatch.sh --ref go --no-desktop

说明:

  • 不显式传入构建开关时,脚本会逐项以 Y/N 询问是否构建在线更新文件、Windows 桌面安装包、盒子端代理、Docker 镜像
  • 传入 --all 时,会跳过交互并直接启用全部四项发布
  • 命令会先执行 git push origin <branch>,成功后再触发 .github/workflows/release-manual.yml
  • 默认优先使用 go 分支;若仓库不存在 go,则回退到远端默认分支
  • 版本号与 Release 文案仍以 CHANGELOG.json 最新一条为准
  • 这是仓库级脚本,不需要进入 webui/,也不依赖 npm / pnpm
  • 若未安装 gh,脚本会先询问是否尝试自动安装 GitHub CLI

2026 年 1 月 1 日起规范转种功能限制

转种限制方案由多位站点管理人员共同制定,转种限制代码使用 Go 编写编译且暂不开源,其他功能均在 Python 代码里实现,感谢各位站点管理人员的支持与配合。 代码仅供学习参考使用,严禁用于商业用途。

  1. 带有禁转标签一律不可转种。
  2. 带有限转一律标签不可转种,不会自动检测源站是否取消限转,续后续自行确认后重新获取种子消息。
  3. 带有分集一律标签不可转种,因为目前有几个站点不允许转分集,且大多数用户下载分集都是在源站下的,大部分源站点在完结后还会删除分集,断种率也高。
  4. 同一个 ip 网段下的下载器同时最多可以有 15 个在上传的种子,超过 15 个则不可转种。(添加超过 24 小时的种子不计算,做种人数大于 5 人不计算,盒子不受限制)
  5. 一站多种的批量转种不允许发布小于 1GB 的种子,一种多站的单个转种不受此限制。
一、核心转种功能
  1. 种源管控:仅允许从有自动种审/人工种审的站点转出种子,保障合规性;
  2. 智能参数处理:自动解析种子标题(主标题、季集、年份等),统一不同站点参数格式,便于跨站转种;
  3. 多站点适配:为每个目标站点单独适配发布格式,不支持的参数自动降级;
  4. 自动推送做种:转种成功后自动下载种子并推送至下载器,qBittorrent 支持跳过校验;
  5. 智能种子检测:识别目标站点已存在的种子并自动补种,检测到禁转标签则屏蔽转种;
  6. 批量操作:支持批量获取、检查、转种种子,实时监控进度并记录详情。
二、错误参数修正相关功能
  1. 自动纠错:修正标题错误、简介错误、截图丢失等问题,解决参数位置错乱(如色深 10bit 与 HDR 参数);
  2. 内容增强:自动补充缺失的 MediaInfo、截图、简介,获取豆瓣海报并转存图床;
  3. 参数识别优化:修正音频编码(如 TrueHD 7.1 Atmos)、格式标签(如 UHD BluRay Remux)等识别错误;
  4. 质量校验:转种前检测参数错误/缺失,提供修正建议,确保符合目标站点规范。
Docker 部署
环境变量
分类参数说明示例
通用TZ设置容器时区,确保时间与日志准确。Asia/Shanghai
http_proxy设置容器代理,确保能正常访问站点与各种服务。http://192.168.1.100:7890
https_proxy设置容器代理,确保能正常访问站点与各种服务。http://192.168.1.100:7890
数据库DB_TYPE选择数据库类型。sqlite、mysql 或 postgres。sqlite
MYSQL_HOST(MySQL 专用) 数据库主机地址。192.168.1.100
MYSQL_PORT(MySQL 专用) 数据库端口。3306
MYSQL_DATABASE(MySQL 专用) 数据库名称。pt-nexus
MYSQL_USER(MySQL 专用) 数据库用户名。root
MYSQL_PASSWORD(MySQL 专用) 数据库密码。your_password
POSTGRES_HOST(PostgreSQL 专用) 数据库主机地址。192.168.1.100
POSTGRES_PORT(PostgreSQL 专用) 数据库端口。5432
POSTGRES_DATABASE(PostgreSQL 专用) 数据库名称。pt-nexus
POSTGRES_USER(PostgreSQL 专用) 数据库用户名。root
POSTGRES_PASSWORD(PostgreSQL 专用) 数据库密码。your_password
Docker Compose 示例

注: 旧版本更新到 v3.0.0 版本因为数据库有很大变化,需要删除原来的数据库的所有表,然后代码会重新创建新的表,可以使用docker run -p 8080:8080 adminer进行修改。

  1. 创建 docker-compose.yml 文件

ISO 自动挂载说明: 若要在原生 Linux Docker 中直接读取 .iso,需要为 pt-nexus 服务额外补充以下配置:

environment:
  - PTNEXUS_ISO_MOUNT_ROOT=/app/data/tmp/iso-mounts
cap_add:
  - SYS_ADMIN
devices:
  - /dev/loop-control:/dev/loop-control
  - /dev/loop0:/dev/loop0
  - /dev/loop1:/dev/loop1
  - /dev/loop2:/dev/loop2
  - /dev/loop3:/dev/loop3

宿主机需提前具备可用的 loop 设备;若设备数量不足,可继续映射更多 /dev/loopN。该能力仅保证原生 Linux Docker,不适用于 Docker Desktop / WSL。

无需额外部署数据库,开箱即用
services:
  pt-nexus:
    image: ghcr.nju.edu.cn/sqing33/pt-nexus:latest
    container_name: pt-nexus
    ports:
      - 5274:5274
    volumes:
      - ./data:/app/data
      - /vol3/1000/pt:/pt # 视频文件存放路径
      # 如要使用转种上盒功能,tr需要种子文件存放路径,qb使用api无需设置
      # 设置页面第一个tr映射到/data/tr_torrents/tr1,第二个tr映射到/data/tr_torrents/tr2
      - /vol1/1000/Docker/transmission/torrents:/data/tr_torrents/tr1
      - /vol1/1000/Docker/transmission2/torrents:/data/tr_torrents/tr2
    environment:
      - TZ=Asia/Shanghai
      - DB_TYPE=sqlite
      - PTNEXUS_ISO_MOUNT_ROOT=/app/data/tmp/iso-mounts
    cap_add:
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    devices:
      - /dev/loop-control:/dev/loop-control
      - /dev/loop0:/dev/loop0
      - /dev/loop1:/dev/loop1
      - /dev/loop2:/dev/loop2
      - /dev/loop3:/dev/loop3
使用 MySQL 数据库
services:
  pt-nexus:
    image: ghcr.nju.edu.cn/sqing33/pt-nexus:latest
    container_name: pt-nexus
    ports:
      - 5274:5274
    volumes:
      - ./data:/app/data
      - /vol3/1000/pt:/pt # 视频文件存放路径
      # 如要使用转种上盒功能,tr需要种子文件存放路径,qb使用api无需设置
      # 设置页面第一个tr映射到/data/tr_torrents/tr1,第二个tr映射到/data/tr_torrents/tr2
      - /vol1/1000/Docker/transmission/torrents:/data/tr_torrents/tr1
      - /vol1/1000/Docker/transmission2/torrents:/data/tr_torrents/tr2
    environment:
      - TZ=Asia/Shanghai
      - DB_TYPE=mysql
      - MYSQL_HOST=192.168.1.100
      - MYSQL_PORT=3306
      - MYSQL_DATABASE=pt_nexus
      - MYSQL_USER=root
      - MYSQL_PASSWORD=your_password
      - PTNEXUS_ISO_MOUNT_ROOT=/app/data/tmp/iso-mounts
    cap_add:
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    devices:
      - /dev/loop-control:/dev/loop-control
      - /dev/loop0:/dev/loop0
      - /dev/loop1:/dev/loop1
      - /dev/loop2:/dev/loop2
      - /dev/loop3:/dev/loop3
使用 PostgreSQL 数据库
services:
  pt-nexus:
    image: ghcr.nju.edu.cn/sqing33/pt-nexus:latest
    container_name: pt-nexus
    ports:
      - 5274:5274
    volumes:
      - ./data:/app/data
      - /vol3/1000/pt:/pt # 视频文件存放路径
      # 如要使用转种上盒功能,tr需要种子文件存放路径,qb使用api无需设置
      # 设置页面第一个tr映射到/data/tr_torrents/tr1,第二个tr映射到/data/tr_torrents/tr2
      - /vol1/1000/Docker/transmission/torrents:/data/tr_torrents/tr1
      - /vol1/1000/Docker/transmission2/torrents:/data/tr_torrents/tr2
    environment:
      - TZ=Asia/Shanghai
      - DB_TYPE=postgresql
      - POSTGRES_HOST=192.168.1.100
      - POSTGRES_PORT=5433
      - POSTGRES_DATABASE=pt-nexus
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=your_password
      - PTNEXUS_ISO_MOUNT_ROOT=/app/data/tmp/iso-mounts
    cap_add:
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    devices:
      - /dev/loop-control:/dev/loop-control
      - /dev/loop0:/dev/loop0
      - /dev/loop1:/dev/loop1
      - /dev/loop2:/dev/loop2
      - /dev/loop3:/dev/loop3
  1. 在与 docker-compose.yml 相同的目录下,运行以下命令启动服务: docker-compose up -d

  2. 服务启动后,通过 http://<你的服务器IP>:5274 访问 PT Nexus 界面。

更新

通过 Docker 部署的 PT Nexus 支持在线更新:updater 会读取 UPDATE_MANIFEST.json,下载对应平台的构建产物(artifact),完成校验后原子切换并重启服务。整个流程不依赖 git 拉取源码。

提示: 若使用“在线更新”把新代码同步进旧镜像,可能会出现依赖缺失(例如 supervisordlibicu)导致无法启动。新版启动脚本会在启动时自动检测并尝试安装缺失的系统依赖(需要容器以 root 运行且可联网)。如需关闭:

  • AUTO_INSTALL_SYSTEM_DEPS=false(不自动安装系统依赖)

更新

更新日志

v4.0.0(2026.03.19)

宇宙坍缩,重启了一个新的宇宙,版本号从 v4.0.0 开始计数,已重构后端为 GO 语言,需要重新下载镜像进行更新,数据会自动迁移。

  • 新增:种子编辑功能
  • 新增:通过浏览器插件一键获取 cookie
  • 新增:发种队列与发种日志
  • 新增:适配 windows 版本
  • 新增:支持 ISO 挂载识别、提取 MediaInfo 与 BDInfo 截图
  • 新增:分集标签判定,并在命中禁转、限转、分集时跳过后续自动修复
  • 新增:截图候选预览与手动选择流程,并补齐批量获取截图待确认状态与确认流程
  • 新增:转种目标站点-唐门
  • 重构:批量转种记录合并到发种日志,一站多种批量转种改为批量入队并统一队列预检查
  • 重构:在线更新切换为 Artifact 流程,支持双源探测、回滚控制与产物回退下载
  • 修改:下载器设置新增颜色字段并统一标签配色,并修复下载器残留显示
  • 修复:多盘结构误判为普通媒体文件目录
  • 修复:下载器连接测试改为真实握手,解决 Win QB 无法连接
  • 修复:更新 proxy 安装脚本下载路径
  • 修复:补回 PTerClub 上传描述的 MediaInfo/BDInfo 标签,并按 Base64 限制肉丝图片上传大小
  • 修复:统一刷新媒体信息与标题重解析的标准参数,忽略媒体信息 Description 字段并统一前后端校验
  • 修复:补全肉丝站点发布标签映射

Tag summary

Content type

Image

Digest

sha256:f22e8c223

Size

391.2 MB

Last updated

about 8 hours ago

docker pull sqing33/pt-nexus:beta-53eee1fed091