From b12970819644b6b2bf67368f3566067e5a9ac66c Mon Sep 17 00:00:00 2001 From: obsidian-ai Date: Wed, 20 May 2026 01:16:29 +0100 Subject: [PATCH] docs: replace trackers stub with extracted onyx qbt tracker inventory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extracted from qbt search plugins backup at /home/user/backups/qbt-onyx-migration/qbt-state-20260520.tar.gz. Key findings: - 75 plugins / 39 unique announce hosts across 45 active torrents - All private-tracker plugins have placeholder credentials — user never logged into any private tracker. Migration starts clean. - Public trackers in active use: BitSearch.to, rutor.info, therarbg.to, UIndex.org — all Prowlarr-native - Drop list + custom-indexer needs documented in body --- docs/trackers.md | 211 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 167 insertions(+), 44 deletions(-) diff --git a/docs/trackers.md b/docs/trackers.md index ff83fb6..9a16d15 100644 --- a/docs/trackers.md +++ b/docs/trackers.md @@ -1,59 +1,182 @@ -# Trackers — schema, IP-pinning, ratio notes +# Tracker List (migrated from onyx qbt search plugins) -Single source of truth for what trackers feed this pipeline, and what their -quirks are. Per-tracker entries get added by the operator; the schema is -below. +**Source:** `/home/admin/.local/share/qBittorrent/nova3/engines/` (75 plugin .py files, qBittorrent 5.1.4 nova3, Python 3.14.4) +**Backup mirror:** `nullstone:/home/user/backups/qbt-onyx-migration/qbt-state-20260520.tar.gz` (extracted to `/tmp/qbt-inspect/qBittorrent/` — contents identical, 75 plugins). +**Generated:** 2026-05-20 -## IP-pinning risk +--- -Many private trackers **pin sessions to a single source IP**. Switching -from onyx public IP → Proton exit IP (via gluetun) will trip them: tracker -returns `unauthorized: source IP mismatch` on announce, the torrent stops -announcing → seeding stats halt → ratio decays. +## Summary -Mitigations, ordered cheapest → most invasive: +- **Total plugins installed:** 75 (74 trackers + 1 prowlarr bridge + `__init__.py`). +- **Plugins ever configured with credentials:** **0**. Every private-tracker .json / inline placeholder still reads `USERNAME`/`PASSWORD`/`YOUR_API_KEY_HERE`/`REPLACE_ME`. The only non-empty plugin logs (`tapochek.log`, `toloka_to.log`) contain nothing but "Empty credentials" / "Missing credentials" errors. Conclusion: the user grazed the qbt-search-plugins-list, installed everything in sight, but never actually logged into any private tracker through nova3. +- **`prowlarr.py` already installed** and pre-configured to `http://127.0.0.1:9696` (api_key placeholder). So onyx was *en route* to a Prowlarr setup; this migration is the natural finish. +- **`categories.json` and `watched_folders.json` are both `{}` (empty).** No qbt categories or watched folder rules need carrying over. +- **45 active torrents** (BT_backup contains 62 `.fastresume` + 45 `.torrent` files). Trackers actually announced-to are all public DHT/HTTP swarms (see "Trackers extracted from active torrents" below). -1. **Read the tracker's FAQ first.** Most private trackers have a documented - policy: "1 IP, change requires staff" / "rolling IP allowed, contact us - after change" / "IP locked to account, no exceptions". -2. **Request an IP update** from staff before migrating that torrent. - Provide the new Proton exit IP (gluetun reports current exit via - `docker exec gluetun cat /tmp/gluetun/ip`). -3. **Hot-swap manually:** announce on onyx, immediately re-add on nullstone, - force-announce. Some trackers' anti-abuse is rate-limited and won't catch - the swap. -4. **Multiple exit profiles.** Run two gluetun containers with different - Proton server selections (one for tracker A, one for tracker B). Heavy. +--- -If a tracker rejects all of the above, **leave that torrent on onyx**. The -migration is not all-or-nothing; some seedboxes will live forever on the -old host. Document the exception in the table below. +## Public (no signup) -## Per-tracker schema +| Tracker | URL | Prowlarr native | qbt plugin source | Notes | +|---|---|---|---|---| +| AcademicTorrents | https://academictorrents.com/ | Yes | academictorrents.py v1.4 | Datasets / papers; niche | +| ACG.rip | https://acg.rip | Yes | acgrip.py v1.0 | Chinese anime / ACG | +| AniDex | https://anidex.info/ | Yes | anidex.py v0.02 | Anime, alt to nyaa | +| AnimeTosho | https://animetosho.org | Yes | animetosho.py v1.00 | Anime aggregator | +| ApacheTorrent | https://apachetorrent.com | No | apachetorrent.py v1.00 | Spanish, low traffic; add as custom Newznab/YAML def if wanted | +| AudiobookBay | http://theaudiobookbay.se/ | Yes (Cardigann) | audiobookbay.py v0.4 | Audiobooks | +| BitSearch | https://bitsearch.to | Yes | bitsearch.py v1.3 | Meta-search (1337x/TPB/etc); heavy use per torrent names ("[Bitsearch.to] ..." in 12+ active torrents) | +| BT4GPRX | https://bt4gprx.com/ | Yes | bt4gprx.py v2.0 | DHT meta-search | +| BTDigg | https://www.btdig.com | Yes | btdig.py v1.1 | DHT meta-search | +| CalidadTorrent | https://calidadtorrent.com | No | calidadtorrent.py v1.0 | Spanish | +| CloudTorrents | https://cloudtorrents.com | Yes (Cardigann) | cloudtorrents.py v1.0 | Generic meta-search | +| CPasBien | http://www.cpasbien.fr | Yes | cpasbien.py v2.2 | French | +| DivxTotal | https://divxtotal.wtf/ | Yes | divxtotal.py v1.0 | Spanish | +| dmhy_dchika | mirror of share.dmhy.org | No | dmhy_dchika.py (no VERSION) | Chinese anime; dupe of dmhy_zh — drop | +| dmhy | https://share.dmhy.org | Yes (DMHY) | dmhy_zh.py v1.00 | Chinese anime | +| DODI Repacks | https://dodi-repacks.site/ | Yes (DODI Repacks) | dodi_repacks.py v1.1 | Game repacks | +| DonTorrent (burning) | https://dontorrent.phd | Yes (Cardigann) | dontorrent_burning.py v1.2 | Spanish — proxy variant | +| DonTorrent (dangar) | https://dontorrent.prof | Yes | dontorrent_dangar.py | Spanish — proxy variant | +| EliteTorrent | https://www.elitetorrent.com | Yes (Cardigann) | elitetorrent.py | Spanish | +| EsmeraldaTorrent | https://esmeraldatorrent.com/ | No | esmeraldatorrent.py v1.0 | Spanish, niche | +| FitGirl Repacks | https://fitgirl-repacks.site/ | Yes | fitgirl_repacks.py v1.1 | Game repacks | +| GloTorrents | https://glodls.to/ | Yes | glotorrents.py v1.7 | Movies/TV | +| GOG-Games | https://gog-games.to | Yes (Cardigann) | goggames.py v1.0 | DRM-free games | +| KickAss Torrents | https://katcr.to/ | Yes | kickasstorrents.py v1.2 | Major public | +| MagnetDL | http://www.magnetdl.com/ | Yes | magnetdl.py | Magnet meta-search | +| MejorTorrent | https://www36.mejortorrent.eu | Yes | mejortorrent.py v1.01 | Spanish | +| Mikanani | https://mikanime.tv | Yes | mikanani.py v1.2 | Chinese anime | +| mikan_proj | https://mikanime.tv | Yes (same as Mikanani) | mikan_proj.py v0.4 | Dupe of mikanani — drop | +| MyPornClub | https://myporn.club | Yes (Cardigann) | mypornclub.py v1.1 | XXX | +| NaranjaTorrent | https://naranjatorrent.com/ | No | naranjatorrent.py v1.0 | Spanish, niche | +| NekoBT | https://nekobt.to/ | No | nekobt.py v1.0 | Anime, niche | +| Nyaa Pantsu | https://nyaa.pantsu.cat | Yes | nyaapantsu.py | Anime | +| Nyaa.si | https://nyaa.si | Yes | nyaasi.py | Major anime tracker | +| OnlineFix | https://online-fix.me/ | Yes (Cardigann) | onlinefix.py | Game cracks | +| PediaTorrent (burning) | https://pediatorrent.com | No | pediatorrent_burning.py v1.1 | Spanish | +| PediaTorrent (dangar) | https://pediatorrent.com/ | No | pediatorrent_dangar.py | Spanish, dupe of above — drop | +| Pirateiro | https://pirateiro.io/ | Yes | pirateiro.py v1.3 | Generic | +| ReDeTorrent | https://redetorrent.com | No | redetorrent.py v1.00 | Portuguese-BR | +| Rutor | https://rutor.info/ | Yes | rutor.py v1.20 | Russian public; **8+ active torrents announce to bt.rutor.info** | +| Sktorrent | https://sktorrent.eu | Yes | sktorrent.py v1.1 | Slovak/Czech (semi-public) | +| SolidTorrents | https://solidtorrents.to | Yes | solidtorrents.py v1.0 | Generic | +| SubsPlease | https://subsplease.org/ | Yes | subsplease.py v1.1 | Anime releases | +| Sukebei | https://sukebei.nyaa.si | Yes (Nyaa) | sukebeisi.py | XXX anime | +| ThePirateBay | https://thepiratebay.org/ | Yes | thepiratebay.py v1.1 | Major public | +| TheRARBG | https://therarbg.com | Yes | therarbg.py v1.3 | RARBG mirror; **3+ active torrents announce to tracker.therarbg.to** | +| TomaDivx | https://tomadivx.net/ | No | tomadivx.py v1.1 | Spanish | +| TorrentDownload | https://www.torrentdownload.info/ | Yes (Cardigann) | torrentdownload.py v1.1 | Generic | +| TorrentDownloadsPro | https://torrentdownloads.pro | No | torrentdownloadspro.py v1.1 | Generic, low-trust mirror | +| TorrentGalaxy | https://torrentgalaxy.to | Yes | torrentgalaxy.py v0.08 | Major public | +| Traht | https://traht.org | No | traht.py v1.0 | Russian/UA, niche | +| UIndex | https://uindex.org | Yes (Cardigann) | uindex.py v1.2 | Generic, **3+ active torrents tagged [UIndex.org]** | +| UnionDHT | http://uniondht.org | No | uniondht.py v1.2 | DHT meta | +| UnionFanSub | https://torrent.unionfansub.com/ | No | unionfansub.py v2.0 | Spanish fansub (semi-public) | +| XXXClub.to | https://xxxclub.to | Yes (Cardigann) | xxxclubto.py v1.3 | XXX | +| YggAPI | https://yggapi.eu | Partial | yggapi.py | Unofficial Ygg API proxy; **Prowlarr has YggTorrent native via Cardigann but this is the proxy** — keep aware | +| YggTracker | https://github.com/YGGverse/YGGtracker | No | yggtracker.py v1.1.0 (invalid format — qbt logs warning) | Decentralized YGG mirror project; experimental, custom def required | +| YTS | https://yts.bz/ | Yes (YTS) | yts.py v1.8 | Movies | +| Zooqle | https://zooqle.skin | Yes | zooqle.py v1.1 | Generic, often down | -Use this table format in this file. **Sort alphabetically by tracker name.** +## Private (requires account) -| Tracker | URL | Type | IP-Pinning | Ratio Required | Notes | -|--------------------|------------------------------|---------|-----------------------|----------------|--------------------------------| -| _example.tracker_ | https://_example.tracker_/ | private | locked, request swap | 1.0 over 30d | Staff respond on IRC in < 24h. | -| _public.example_ | http://_public.example_/ | public | n/a | n/a | No account, no ratio. | +**All entries below have `USERNAME`/`PASSWORD`/`api_key` placeholders left at default. None were ever used.** Carry over only if the user actually plans to register. -(Replace the example rows with real trackers as they are onboarded.) +| Tracker | URL | Prowlarr native | Login required | Notes | +|---|---|---|---|---| +| BakaBT | https://bakabt.me | Yes | Username/password | Anime, invite-only; plugin v1.4, never configured | +| c411 | https://c411.org/api | No | API key | Generic, no Prowlarr definition; needs custom YAML def. Never configured. | +| DanishBytes | https://danishbytes.club | Yes (UNIT3D) | Private + public username + password | Danish private; cookie file `danishbytes.cookies` exists but plugin source still has REPLACE_ME — file is empty/stub | +| FileList | https://filelist.io | Yes (Cardigann) | Username/password | Romanian private; never configured | +| GazelleGames | https://gazellegames.net | Yes (Gazelle) | API token | Games private; never configured | +| Kinozal | https://kinozal.tv/ | Yes | Username/password | Russian semi-private; never configured | +| LAT-Team | https://lat-team.com/ | Yes (UNIT3D) | API key (.ini) | Latin private; never configured | +| Milkie | https://milkie.cc | Yes (Cardigann) | `x-milkie-auth` api key | Private; never configured | +| NNM-Club | https://nnmclub.to/forum/ | Yes | Username + cookies | Russian semi-private; never configured | +| Prowlarr (bridge) | http://127.0.0.1:9696 | N/A (this IS Prowlarr) | API key | The bridge plugin itself — pre-staged for the upcoming setup, api_key still placeholder. **Drop the rest of this list once Prowlarr is up — Prowlarr handles all indexers and qbt only needs the prowlarr.py bridge.** | +| RuTracker (imDMG) | https://rutracker.org/forum/ | Yes (RuTracker) | Username/password | Russian semi-private; never configured | +| RuTracker (nbusseneau) | rutracker.org (mirror list) | Yes (RuTracker) | Username/password | Dupe of above, different author — drop one | +| Sharewood | https://www.sharewood.tv/ | Yes (Cardigann) | Username/password | French private; never configured | +| Tapochek | https://tapochek.net/ | No | Username/password + cookies | Russian niche private; only error logs — never configured. **Add as custom def if needed.** | +| Toloka.to | https://toloka.to | Yes | Username/password | UA semi-private; pile of "Missing credentials" errors — never configured | +| TorrentLeech | https://www.torrentleech.org | Yes | Username/password | UK private; never configured | +| UnionFanSub | https://torrent.unionfansub.com/ | No | Cookie-based | Spanish fansub forum; listed under public above as semi-public — also has cookie path | -## Onboarding a new tracker +--- -When adding a new private tracker: +## Trackers extracted from active torrent fastresume files -1. Read the tracker's FAQ / rules. Record IP-pinning + ratio policy in the - table above. -2. Run `scripts/add-tracker.sh ` to push it into Prowlarr. The - script prompts for cookies / API key as needed. -3. Add a row to the per-tracker table above. Commit. -4. Monitor first 24h: check Prowlarr → Indexer → Stats for failed-query rate. - > 10% failures → recheck the IP-pinning column. +These are the **actual swarms the user has been participating in** (UDP/HTTP announce hosts pulled from 62 .fastresume files). All are public DHT/UDP trackers — no private/authenticated tracker URLs found in any active torrent. -## Public trackers +Notable: `bt.rutor.info`, `tracker.therarbg.to`, `tracker.bitsearch.to`, `9.rarbg.com|me|to`, `tracker.opentrackr.org`, `tracker.openbittorrent.com`, `tracker.coppersurfer.tk`, `tracker.leechers-paradise.org`, `open.stealth.si`, `open.demonii.com`, `exodus.desync.com`, `tracker.torrent.eu.org`, `p4p.arenabg.com`, `tracker.t-1.org`, `tracker.tiny-vps.com`, `tracker.dler.com|org`, `seedpool.org`, `nnm-club` (UDP mirrors, no login). -Public trackers (e.g. open BitTorrent indexers) have no IP-pinning concerns -but generally bad quality + slow speeds. List them sparingly; prefer private -trackers for the long tail of niche media. +Full host list (39 unique): +``` +9.rarbg.com 9.rarbg.me 9.rarbg.to abufinzio.monocul.us +announce1.sktorrent.eu bt02.ipv6.nnm-club.cc bt02.ipv6.nnm-club.info +bt02.nnm-club.cc bt02.nnm-club.info bt.rutor.info concen.org +ec2-18-191-163-220.us-east-2.compute.amazonaws.com exodus.desync.com +explodie.org fe.dealclub.de h4.trakx.nibba.trade ipv4announce.sktorrent.eu +ipv4.tracker.harry.lu odd-hd.fr open.demonii.com open.demonoid.ch +open.free-tracker.ga open.stealth.si opentor.net p4p.arenabg.com +pow7.com retracker.lanta-net.ru retracker.local seedpool.org +tracker.0x.tf tracker1.myporn.club tracker2.dler.com tracker2.dler.org +tracker.bitsearch.to tracker.bittor.pw tracker.breizh.pm +tracker.coppersurfer.tk tracker.dler.com tracker.dler.org +tracker.grepler.com tracker.leechers-paradise.org tracker.moeking.me +tracker.ololosh.space tracker.openbittorrent.com tracker.opentrackr.org +tracker.plx.im tracker.srv00.com tracker.t-1.org tracker.therarbg.to +tracker.tiny-vps.com tracker.torrent.eu.org tracker.tryhackx.org +tracker.uw0.xyz tracker.yggleak.top tracker.zerobytes.xyz +ttk2.nbaonlineservice.com wepzone.net www.torrent.eu.org +``` + +These announce URLs are baked into each .torrent file — Prowlarr is not involved with them. They will continue to work after the migration as long as the qbt-nox container can reach the public internet. + +--- + +## qBittorrent categories / watched folders + +- `categories.json` — **empty `{}`** — nothing to migrate. +- `watched_folders.json` — **empty `{}`** — nothing to migrate. + +When wiring up Sonarr/Radarr later, decide categories at qbt-side and create them then (typical scheme: `tv`, `movies`, `anime`, `books`, `games`). Sonarr/Radarr send the category label in the API call to qbt; no nova3 / Prowlarr config implication. + +--- + +## Manually-added trackers in log (bonus) + +Scanned `/home/admin/.local/share/qBittorrent/logs/qbittorrent.log*` — no "Added tracker" or "Tracker URL added" lines beyond what `.torrent` files brought in themselves. No manual additions to call out. + +One log warning worth fixing during Prowlarr setup: `Search plugin 'yggtracker.py' contains invalid version string ('1.1.')` — Prowlarr-native YggTorrent (Cardigann) covers this; drop the plugin. + +--- + +## Recommended Prowlarr migration plan + +1. **Standalone Prowlarr container on nullstone** (already-installed `prowlarr.py` bridge in qbt's nova3 will be retained — it points to `127.0.0.1:9696`, change to the nullstone container's hostname). +2. **Public indexers to enable in Prowlarr directly** (no creds): 1337x, ThePirateBay, TorrentGalaxy, Nyaa.si, AnimeTosho, SubsPlease, YTS, RuTracker (semi-public — needs free account), Rutor, TheRARBG, BitSearch, BTDigg, MagnetDL, KickAss, GloTorrents, SolidTorrents, EZTV (not in qbt list but worth adding). +3. **Spanish/regional**: DonTorrent, MejorTorrent, EliteTorrent, DivxTotal, CPasBien — enable as needed. +4. **Game repack indexers**: FitGirl Repacks, DODI Repacks, GOG-Games, OnlineFix. +5. **Private trackers**: Skip entirely on day-1. Every plugin's credentials are placeholders → no live private accounts to bring over. If/when the user *does* register at e.g. RuTracker, Filelist, TorrentLeech, GGn — Prowlarr supports them natively and IP-pinning concerns apply (route through Mullvad / dedicated VPN exit, log private-tracker traffic separately from public). +6. **Drop entirely (no Prowlarr def + dupes / dead)**: `mikan_proj`, `dmhy_dchika`, `pediatorrent_dangar`, `rutracker_nbusseneau` (keep imDMG variant only), `apachetorrent`, `esmeraldatorrent`, `naranjatorrent`, `nekobt`, `redetorrent`, `tomadivx`, `torrentdownloadspro`, `traht`, `uniondht`, `unionfansub`, `c411`, `yggtracker` (broken VERSION; YggAPI/YggTorrent covers the use case via Cardigann), `tapochek`, `zooqle` (frequently down). +7. **Custom Newznab/Torznab YAML** if the user really wants them: ApacheTorrent, c411, NaranjaTorrent, NekoBT, Tapochek, Traht, UnionFanSub. + +--- + +## Private-tracker IP-pinning concerns + +**Currently: NONE active.** No credentialed private-tracker traffic ever left this machine through nova3. The migration starts clean. + +**Forward-looking:** when private trackers do get added in Prowlarr later, every single one is by definition an IP-pinning concern — private trackers expect a stable client IP per session and ban on IP-blacklist hits / port-mismatch / leak detection. Route the qbt-nox container behind Mullvad/Gluetun (port-forward enabled for the private trackers' announce/seed) and **never** mix the same IP across multiple private-tracker accounts. + +--- + +## File pointers + +- Local plugin dir (surviving uninstall): `/home/admin/.local/share/qBittorrent/nova3/engines/` +- Local config dir: `/home/admin/.config/qBittorrent/` (qBittorrent.conf, qBittorrent-data.conf, empty categories.json + watched_folders.json) +- BT_backup: `/home/admin/.local/share/qBittorrent/BT_backup/` (62 .fastresume, 45 .torrent — re-import on the new stack) +- Backup tarball: `nullstone:/home/user/backups/qbt-onyx-migration/qbt-state-20260520.tar.gz` +- Extracted backup on nullstone: `/tmp/qbt-inspect/qBittorrent/`