Skip to content

Repository files navigation

🌱 SeedPilot

去中心化的 PT 自动辅种工具 —— 让同一资源在你的多个私人站点之间自动互通做种

Release Downloads Language Platform License

快速开始 · 首次配置 · 功能特性 · 工作原理 · 开发构建

Warning

本项目处于公测早期阶段。 PT 站点规则各异,自动辅种行为请自行确认符合所属站点条款;因使用本工具导致的账号处罚风险自负。建议先在小范围种子上试运行。


简介

传统辅种工具依赖中央服务器做跨站资源匹配,且界面老旧、配置繁琐。SeedPilot 的三个不同点:

  • 去中心化匹配:节点之间直接交换资源映射,无单点、不依赖任何中央服务器的存续
  • 隐私优先:采用 ECDH-PSI 隐私集合求交协议——查询时其他节点只知道"命中了几条",永远不知道你的完整种子库构成
  • 最小用户心智:五分钟从安装到自动辅种;所有配置有智能默认值;界面先给结论、细节折叠

单二进制分发,内置 Web 管理界面,支持 qBittorrent 与 Transmission。

功能特性

特性 说明
跨站资源发现 基于 P-256 盲化的 PSI 查询协议,节点间隐私交换 hash ↔ hash 映射
全自动闭环 匹配 → 站点检索取种 → info_hash 校验 → 推送下载器 → 状态探测,全程无人值守
多下载器 qBittorrent(WebUI API v2)与 Transmission(RPC),可同时挂载多个实例
内置 Web UI 三步向导、仪表盘、任务详情展开、设置热更新,令牌登录
结构性隐私 本地种子库零明文外泄;映射记录不含站点名与用户信息,全部节点签名
单二进制 Go 编译 + 前端 embed,一个文件跑起来;多架构 Docker 镜像同步发布

快速开始

方式一:Docker Compose(推荐)

前置准备:创建数据目录与初始配置
mkdir -p ./data
cat > ./data/config.yaml <<'EOF'
schedule:
  interval: 6h
downloaders:
  - type: qbittorrent
    url: http://127.0.0.1:8080
web:
  listen_addr: 0.0.0.0:8900
EOF

[!IMPORTANT] 容器内 127.0.0.1 指容器自身——若下载器运行在宿主机,请把 URL 改为 http://host.docker.internal:8080(Docker Desktop)或宿主局域网 IP。

# docker-compose.yml
services:
  seedpilot:
    image: f1owka0g/seedpilot:v0.1.0
    container_name: seedpilot
    restart: unless-stopped
    ports:
      - "8900:8900"
    volumes:
      - ./data:/data
    environment:
      - SEEDPILOT_DB=/data/seedpilot.db
docker compose up -d
docker logs seedpilot          # 从日志中找到 web ui ready 行,复制 token

方式二:二进制

  1. 前往 Releases 下载对应平台的 zip 包解压
  2. 准备一份 config.yaml(参考上方最简配置,去掉 listen_addr 一节即可)
  3. 运行:
./seedpilot serve --config config.yaml

首次配置

  1. 浏览器打开 http://<设备IP>:8900
  2. 首页输入访问令牌——位置二选一:
    • 启动日志中的 web ui ready ... token=xxxx
    • 数据目录下的 web-token.txt 文件
  3. 进入 向导 页面,三步完成配置:
    • 连接下载器:填入 qBittorrent / Transmission 地址与凭据,点击「测试连接」实时验证
    • 绑定站点:粘贴站点 Cookie,点击「测试站点」验证检索可用性
    • 调度设置:辅种间隔(默认 6 小时)与本地数据目录
  4. 保存后进入 仪表盘,点击「立即辅种」跑一轮,卡片会实时反映结果

工作原理

一次辅种轮次的完整链路
① collector   从 qB/TR 提取本地 info_hash 集合
② matcher     a. 本地回填:扫描监控目录中同 hash 的 .torrent 直接回填
              b. PSI 查询:盲化集合向在线节点求交,拿回跨站映射记录
③ sitesearch  按「标题 + 字节数」在你自己的站点检索对应资源
④ verify      下载 .torrent 并校验 info_hash 与记录一致,杜绝张冠李戴
⑤ push        校验数据目录完整后推送给下载器,探测做种状态
⑥ store       全部结果落库 SQLite,供仪表盘展示与去重

映射记录只包含 (hash_A ↔ hash_B, 字节数, 资源标题) 且附节点 Ed25519 签名; 查询过程使用两轮 ECDH 盲化交换,服务端无法得知你拥有哪些非命中资源。

信任模型与当前限制
  • 映射记录由贡献节点签名;未配置可信公钥时默认接受全部通过结构校验的记录(公测期策略),生产部署建议在 network.trusted_keys_path 配置信任锚
  • 站点解析目前仅承诺 NexusPHP 风格表格布局,其他程序需等待模板仓库适配
  • PSI 直查为单帧全量密封返回,超大映射网络下的带宽优化在路线图中

开发构建

本地构建与环境验证

环境要求:Go 1.26+、Node.js 22+、PowerShell(Windows)或 pwsh(Linux/macOS)

# 一键等价验证 Dockerfile 全部构建步骤(无 Docker 也可跑)
pwsh scripts/verify-local.ps1

# 后端测试
go test ./...

# 前端开发与构建
cd web
npm install
npm run dev      # 开发模式
npm run build    # 产物输出到 internal/web/dist

# 本地起守护
go run ./cmd/seedpilot serve --config config.yaml
版本发布流程

推送 v* 标签即自动触发 GitHub Actions:

  • 构建并推送多架构镜像至 GHCR 与 Docker Hub
  • 构建 linux / windows / darwin × amd64 / arm64 六平台二进制并附加到 Release
git tag -s v0.1.x -m "..."
git push origin v0.1.x

免责声明

本项目仅供学习与技术交流使用。使用者应确保自身行为符合所在地区法律法规及 PT 站点社区规则; 因使用本工具产生的任何账号、法律或其他风险由使用者自行承担。

开源协议

本项目基于 MIT License 开源。


Made with ❤ by f1owkang

About

🌱SeedPilot去中心化PT自动辅种工具,隐私集合求交跨站匹配。 | Decentralized PT auto-reseeding tool with privacy-preserving cross-site matching.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages