docs: replace trackers stub with extracted onyx qbt tracker inventory
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
This commit is contained in:
parent
d300d83ce1
commit
b129708196
1 changed files with 167 additions and 44 deletions
211
docs/trackers.md
211
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 <name> <url>` 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/`
|
||||
|
|
|
|||
Reference in a new issue