5步搞定 Jackett 部署:从裸机运行到生产加固
【免费下载链接】JackettAPI Support for your favorite torrent trackers项目地址: https://gitcode.com/GitHub_Trending/ja/Jackett
Jackett 是聚合 BT Tracker 的 Torznab API 代理:把 Sonarr/Radarr 的搜索请求翻译成各站点的抓取逻辑并返回标准格式结果,支持 Windows/Linux/macOS 与 Docker 部署。
运行:3分钟跑起来 Jackett 最简启动路径
统一走发布包路线(仓库 Releases 页提供各平台自包含包,无需预装 .NET 运行时):Windows 下是Jackett.Binaries.Windows.zip,Linux 下Jackett.Binaries.LinuxAMDx64.tar.gz,Apple Silicon 用Jackett.Binaries.macOSARM64.tar.gz。解压后按平台执行:
# Windows:控制台版启动,日志直接可见 JackettConsole.exe # Mac / Linux ./jackett浏览器打开http://127.0.0.1:9117,看到 Configured Indexers 页面即成功;端口被占就加--Port 9118启动。没找到合适发布包时从源码构建:git clone https://gitcode.com/GitHub_Trending/ja/Jackett,在src目录执行dotnet publish Jackett.Server -f net9.0 --self-contained -r linux-x64(macOS 换osx-x64/osx-arm64)。
配置 Jackett 开机自启:服务化与崩溃重启
前台进程一关终端就没了。需要"开机自启 + 崩溃自动拉起"时,把进程注册成系统服务,三条路:
- Linux(systemd):在 Jackett 目录执行
sudo ./install_service_systemd.sh。脚本先校验目录属主不能是 root,再生成/etc/systemd/system/jackett.service,其中Restart=always+RestartSec=5保证崩溃后 5 秒自动拉起。服务入口是 jackett_launcher.sh,它带--NoRestart启动主进程、并在 JackettUpdater 退出前阻塞,防止更新期间被 systemd 误判为异常退出。 - macOS(launchd):执行发行包里的
install_service_macos,生成~/Library/LaunchAgents/org.user.Jackett.plist,登录后自启;launchctl load / unload同一 plist 即可启停。 - Windows(服务):跑
Jackett.Installer.Windows.exe时勾选 "Install as Windows Service",或管理员下执行JackettService.exe -i(注册逻辑见 Service.cs),再到services.msc确认为自动启动。
平台判断在 EnvironmentUtil.cs 的IsWindows等属性里收口,服务脚本据此分流,不用自己写 if。
关键启动参数:
| 参数 | 作用 | 推荐值 |
|---|---|---|
--Port | Web 监听端口 | 9117(默认),冲突改 9118 |
--ListenPrivate/--ListenPublic | 仅本机 / 监听所有网卡 | 默认 Private;要内网访问再开 Public |
--NoUpdates | 关闭自动更新 | 生产建议开,手动控制升级 |
--Logging | 记录全部请求/响应 | 排障时开,平时关 |
XDG_CONFIG_HOME(systemd 里加Environment=) | 指定配置目录 | 无 home 目录的服务账号必配 |
设置 Jackett 生产加固:权限、端口与回滚清单 ✅
- root 属主 → 服务拒启:
sudo chown -R $USER:$USER /opt/Jackett。安装脚本直接检查这条,root 运行还会把配置写进 /root,重建系统后全丢。 - 9117 被占 → 启动即退:
./jackett --Port 9118换端口,反代侧同步改 upstream,别去杀占用进程。 - 日志留存:应用日志在
~/.config/Jackett/log.txt(Windows 为%ProgramData%\Jackett\log.txt),systemd 侧journalctl -u jackett.service。自动更新会整体覆盖安装目录,配置/日志目录在外部才是唯一留痕。 - 更新回滚:
./jackett --NoUpdates关自动更新;升级走"停服 → 新包覆盖 → 起服",坏版本直接解压旧包回去,全程不超过一分钟。 - 外网暴露:保持
--ListenPrivate,nginx 反代到127.0.0.1:9117并传X-Forwarded-Proto,Jackett 设置里同步 Base path override,给 *arr 的 Torznab URL 统一指反代地址。 - 配置与安装分离:Windows 用
--DataFolder="D:\Jackett Data",Linux 用 XDG_CONFIG_HOME,升级覆盖安装目录时 API Key 不丢。
排查 Jackett 高频报错:现象 → 根因 → 修复 🩹
| 现象 | 根因 | 修复 |
|---|---|---|
| 127.0.0.1:9117 打不开 | 服务没起或防火墙拦了 9117 | systemctl status jackett.service;sudo ufw allow 9117 |
| 服务秒挂反复重启 | 目录属主是 root,unit 校验不过 | sudo chown -R $USER:$USER /opt/Jackett && sudo systemctl daemon-reload && sudo systemctl restart jackett |
| 单个 indexer 无结果 | 站点挂了或凭据失效 | 面板 Manual Search 单站测试;私站重填 cookie/密码 |
| indexer 报 Cloudflare 拦截 | 请求被人机验证挡住 | 部署 FlareSolverr,indexer 配置里指向它(默认 127.0.0.1:8191) |
| 启动报端口冲突 | 9117 已被占用 | ./jackett --Port 9118换端口 |
| 升级后页面打不开 | 自动更新中断在坏版本 | ./jackett --NoUpdates,停服后手动覆盖回上一个包 |
选择部署方案:Jackett 选型建议
- 个人挂机:家用主机或小 VPS 上 Linux + systemd 一键脚本即可,别开
--ListenPublic,API 只留给本机 *arr。 - 小团队内网:Docker + 反代子路径部署,
--ListenPublic对内网开放,Torznab URL 统一指反代。 - 容器化/虚拟化环境:直接用 linuxserver/jackett 镜像,配置目录挂 volume,宿主机 Mono 兼容性问题一次性绕开。
上游演进看 Definitions 目录:700+ 站点定义高频增补,新 Tracker 基本都从这进。
【免费下载链接】JackettAPI Support for your favorite torrent trackers项目地址: https://gitcode.com/GitHub_Trending/ja/Jackett
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考