Self-hosted dashboard for monitoring private tracker stats over time. Track upload, download, ratio, buffer, seedbonus, and rank across all your trackers from one place.
- Per-tracker and fleet-wide stats with 30+ charts
- UNIT3D, Gazelle, GGn, Nebulance, MAM, and AvistaZ network support out of the box
- qBittorrent integration - cross-seed tracking, activity heatmaps, speed history, etc
- Everything stays on your machine. No telemetry, no phoning home.
You can check out a few other, longer, screenshots in the docs folder.
| Tracker | Platform | Status | Note |
|---|---|---|---|
| Aither | UNIT3D | ✅ Verified | |
| Anthelion | Nebulance | ✅ Verified | |
| Blutopia | UNIT3D | ✅ Verified | |
| Concertos | UNIT3D | ✅ Verified | |
| FearNoPeer | UNIT3D | ✅ Verified | |
| GazelleGames (GGn) | GGn | ✅ Verified | |
| LST | UNIT3D | ✅ Verified | |
| Nebulance | Nebulance | ✅ Verified | |
| OldToons | UNIT3D | ✅ Verified | |
| OnlyEncodes | UNIT3D | ✅ Verified | |
| Orpheus (OPS) | Gazelle | ✅ Verified | |
| Phoenix Project (PP) | Gazelle | ✅ Verified | |
| Racing4Everyone | UNIT3D | ✅ Verified | |
| Redacted (RED) | Gazelle | ✅ Verified | |
| ReelFlix | UNIT3D | ✅ Verified | |
| SkipTheCommercials | UNIT3D | ✅ Verified | |
| Seedpool | UNIT3D | ✅ Verified | |
| Upload.cx | UNIT3D | ✅ Verified | |
| AlphaRatio | Gazelle | 🟡 Unverified ⛔ Stuck | |
| AnimeBytes | Gazelle | 🟡 Unverified ⛔ Stuck | |
| BroadcastheNet (BTN) | Gazelle | 🟡 Unverified ⛔ Stuck | |
| Empornium | Gazelle | 🟡 Unverified ⛔ Stuck | XXX trackers aren't really my jam, so PRs welcome |
| GreatPosterWall (GPW) | Gazelle | 🟡 Unverified | |
| MoreThanTV (MTV) | Gazelle | 🟡 Unverified | |
| PassThePopcorn (PTP) | Gazelle | 🟡 Unverified | |
| 720pier | Custom | 📋 Needs adapter | |
| ABTorrents | Custom | 📋 Needs adapter | |
| AvistaZ | AvistaZ | ✅ Verified | Cookie auth + HTML scraping |
| AnimeZ | AvistaZ | 🟡 Unverified | Same adapter as AvistaZ |
| CinemaZ | AvistaZ | ✅ Verified | Same adapter as AvistaZ |
| ExoticaZ | AvistaZ | 🟡 Unverified | Same adapter as AvistaZ |
| PrivateHD | AvistaZ | 🟡 Unverified | Same adapter as AvistaZ |
| MyAnonamouse (MAM) | MAM | ✅ Verified | Cookie auth via mam_id |
| DarkPeers | UNIT3D | ✅ Verified | |
| Luminarr | UNIT3D | 🟡 Unverified | |
| CathodeRayTube (CRT) | UNIT3D | 📋 Draft | |
| DigitalCore | Custom | 📋 Needs adapter | |
| HDBits | Custom | 📋 Needs adapter | |
| SecretCinema | Custom | 📋 Needs adapter | |
| SportsCult | Custom | 📋 Needs adapter | |
| TorrentLeech | Custom | 📋 Needs adapter | |
| BeyondHD | Custom | ⛔ Stuck | |
| Cinemageddon | Custom | ⛔ Stuck | |
| FileList | Custom | ⛔ Stuck | |
| HD-Torrents | Custom | ⛔ Stuck | |
| IPTorrents | Custom | ⛔ Stuck | |
| TVVault | Custom | ⛔ Stuck | |
| HawkeUno | UNIT3D | ❌ Broken | API does not permit /user requests |
Legend:
- ✅ Verified — tested against a live tracker
- 🟡 Unverified — platform adapter exists and should work, but not yet tested.
- 📋 Needs adapter — registry entry exists, but the platform requires a custom adapter that I haven't gotten around to yet
- ⛔ Stuck — trackers I'm not a member of and have no way of implementing
- ❌ Broken — known issue prevents polling (i.e API blocks required endpoints, etc)
| Client | Status | Notes |
|---|---|---|
| qBittorrent | ✅ Supported | Torrent stats, cross-seed tracking, activity heatmaps, speed history |
| Deluge | 📋 Planned | |
| Transmission | 📋 Planned | |
| rTorrent | 📋 Planned |
mkdir tracker-tracker && cd tracker-tracker-
Download the compose file and example env:
curl -LO https://raw.githubusercontent.com/jordanlambrecht/tracker-tracker/main/docker-compose.yml curl -L https://raw.githubusercontent.com/jordanlambrecht/tracker-tracker/main/.env.example -o .env
-
Generate secrets and paste them into
.env:# Run these, then copy the output into .env openssl rand -base64 24 # → POSTGRES_PASSWORD openssl rand -base64 48 # → SESSION_SECRET
-
Start the stack:
docker compose up -d
-
Visit
http://localhost:3000to set your master password and start adding trackers.
docker compose pull && docker compose up -dThe database schema is synced automatically on startup.
If you already run Postgres, remove the tracker-tracker-db service and depends_on block from docker-compose.yml. Set DATABASE_URL in your .env and remove POSTGRES_PASSWORD and POSTGRES_USER.
Requires Node.js 24+, pnpm, and PostgreSQL.
pnpm install
cp .env.example .env.local
# Edit .env.local — set DATABASE_URL to your local Postgres and SESSION_SECRET
pnpm db:push
pnpm dev| Variable | Required | Default | Description |
|---|---|---|---|
POSTGRES_PASSWORD |
Yes* | — | Database password |
SESSION_SECRET |
Yes | — | AES-256 key for session cookies (min 32 characters) |
TZ |
No | UTC |
Timezone for cron schedules and log timestamps |
PORT |
No | 3000 |
Port the app listens on |
LOG_LEVEL |
No | info |
Log verbosity: error, warn, info, debug |
POSTGRES_USER |
No | postgres |
Database user |
POSTGRES_DB |
No | tracker_tracker |
Database name |
DATABASE_URL |
No* | (auto-built) | Override to use an external Postgres instance |
SECURE_COOKIES |
No | (auto) | Set true for HTTPS. Auto-enabled by BASE_URL. |
* Set either POSTGRES_PASSWORD (bundled DB) or DATABASE_URL (external DB).
All other settings — polling interval, privacy mode, proxy, backups — are configured in the app's Settings page after login.
| Host path | Container path | Contents |
|---|---|---|
./data/backups |
/data/backups |
Scheduled backup files |
./data/logs |
/data/logs |
Application log files |
pgdata (named) |
PG data dir | PostgreSQL database (managed by Docker) |
- Click + Add Tracker in the sidebar
- Select from the registry or enter details manually
- Paste your API token (found in your tracker's security/API settings)
- The app validates the connection and starts polling automatically
Full documentation is available at jordanlambrecht.github.io/tracker-tracker.
Covers installation, tracker setup (UNIT3D, Gazelle, GGn, MAM, AvistaZ), features (proxies, TOTP, backups, download clients, notifications), and troubleshooting.
PRs welcome. Areas where help matters most:
- New trackers & missing data — copy
src/data/trackers/_template.ts, fill in what you know, and submit a PR. Partial entries are fine — setdraft: trueand CI will accept it. Filling in user classes, rules, release groups, and banned groups on existing trackers is just as valuable. - Download client adapters — only qBittorrent is supported. Deluge, Transmission, and rTorrent all need adapters. See
src/lib/qbt/for the pattern. - Tracker verification — if you belong to a tracker marked 🟡 above, testing and confirming it works helps greatly.
- Security auditing — Check out SECURITY.md for threat surfice info.
- Responsiveness - I only have my 16" MBP to work off of, so feedback of different screen experiences is much appreciated
- Data Visualization - I ain't no math wizard, so any contributions for data viz, charts/graphs, etc.
- Custom platform adapters — trackers marked "Custom" need bespoke adapters since they don't run a supported platform.
- HawkeUno lobbying — convince the Hawke mods to add a
/usersendpoint so the adapter can work
- Next.js 16 (App Router)
- PostgreSQL + Drizzle ORM
- ECharts
- node-cron
- Argon2
- jose