TrackSeerr is a self-hosted music request and library manager. Your users find music and ask for it. TrackSeerr gets it, files it, and puts it on your media server, along with their playlists.
It works with Plex, Jellyfin, and Subsonic servers such as Navidrome. It can download music on its own, or hand the work to Lidarr if you already use it.
TrackSeerr is in active development. Features, settings, and the API still change between builds. Wait for a tagged release before you rely on it.
- Discover. Search artists, albums, and tracks. Browse charts and new releases. Play 30-second previews. No API keys needed.
- Request. Users request a track, an album, or a whole discography. You set quotas and approve requests, or let trusted users skip approval.
- Playlists. Import playlists from Spotify, Deezer, YouTube Music, Last.fm, ListenBrainz, or plain text. TrackSeerr matches them to your library, keeps them in sync, and pushes them to your media server for each user.
- Get the music. Search Usenet and torrent indexers, or Soulseek, and download through SABnzbd, qBittorrent, or slskd. Or send requests to Lidarr.
- Manage the library. Scan, tag, rename, and import files. Track quality and upgrade it over time. Find files your media server missed.
- Users. Sign in with Plex or with a local account. Each user has their own requests, playlists, quotas, and scrobbling.
- Notify. Send alerts to Discord, Telegram, Pushover, email, or a webhook.
Users (web, mobile)
|
v
+-----------------------+
| TrackSeerr | discover, request, playlists, users
| |
| library manager: |
| TrackSeerr or Lidarr|
+-----------------------+
| |
v v
Indexers and Your music folder
download clients |
v
Media server
(Plex, Jellyfin, Navidrome...)
- A user requests music or imports a playlist.
- TrackSeerr checks what is already in your library.
- For anything missing, the library manager searches your indexers and sends the release to a download client.
- When the download finishes, TrackSeerr checks the files, tags them, renames them, and moves them into your music folder.
- Your media server picks up the new files. TrackSeerr adds the tracks to the right playlists and notifies the user.
You choose the media server. Media servers plug in as adapters. TrackSeerr runs fine with no media server at all; it then manages files and finds missing tracks but pushes nothing.
One library manager at a time. TrackSeerr has its own library manager, built to do what Lidarr does with more control at the track level. If you prefer Lidarr, switch to it in one setting and TrackSeerr becomes the request front end. Only one can manage the library at a time, so the two never fight over the same files. You can also import an existing Lidarr library into TrackSeerr.
Two ways to deploy. Run one container on your home network. If you put TrackSeerr on the internet, split it into two containers: a public one that holds no files and no secrets, and a private core that holds everything else. If the public container is compromised, the attacker gets request data, not your library or admin controls. See Architecture and security.
You need Docker and a folder for your music. Pick one setup:
| Setup | Use it when | Guide |
|---|---|---|
| Single container | TrackSeerr is only reachable on your LAN, a VPN, or Tailscale | Install guide |
| Two containers | TrackSeerr is reachable from the internet | Install guide |
| Unraid | You run Unraid | Unraid guide |
Minimal single-container example:
services:
trackseerr:
image: ghcr.io/ronfburgundy/trackseerr:latest
container_name: trackseerr
restart: unless-stopped
ports:
- "5250:5250"
volumes:
- ./appdata:/config
- /path/to/data:/data # holds media/music and downloads
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
# With Plex: the server owner signs in with Plex
- PLEX_URL=http://192.168.1.100:32400
- PLEX_TOKEN=your_plex_token
# Without Plex: sign in as "admin" with this password instead
# - ADMIN_PASSWORD=change-me-to-12-or-more-charactersStart it with docker compose up -d and open http://<server-ip>:5250. Jellyfin, Subsonic servers, download clients, indexers, and Lidarr are set up in the web UI.
Setup:
- Install guide: Docker Compose, folders, networking, reverse proxies, the two-container setup
- Unraid guide
- Configuration reference: every environment variable
- Media servers: Plex, Jellyfin, Subsonic, or none
Using TrackSeerr:
- Users and requests: sign-in, local accounts, permissions, quotas, approval
- Playlists: importing, syncing, and per-user playlists
- Downloading music: download clients, indexers, profiles, seeding, Lidarr
- Library management: scanning, importing, naming, quality, cleanup
Reference:
TrackSeerr started from rnagabhyrava/plex-playlist-sync. Thanks to its author for the original playlist matching idea.
It has since grown into its own project. It owes a lot to:
- Overseerr and its successors, for the discovery, request, and quota model.
- Lidarr, Sonarr, and the rest of the *arr projects, for naming templates, quality profiles, and the download lifecycle.
- Mutagen (Christoph Reiter and the Quod Libet team), for reading and writing audio tags.
- slskd, for a clean API to the Soulseek network.
A lot of what TrackSeerr does rests on libraries and services built by independent developers, often one person in their spare time. Thank you:
- ytmusicapi by sigma67, for reading YouTube Music playlists without an account.
- deezer-python by Bruno Alla, for the Deezer catalog and playlists.
- Spotipy, started by Paul Lamere, for the Spotify Web API.
- python-plexapi, started by Michael Shepanski, for talking to Plex.
- Chromaprint and AcoustID by Lukáš Lalinský, for audio fingerprinting and the open fingerprint database.
- pyacoustid by Adrian Sampson (of beets), for the Python side of AcoustID.
- mrab-regex by Matthew Barnett, for Unicode-aware matching.
- FastAPI by Sebastián RamÃrez, for the API layer.
- pywebpush by JR Conlin, for push notifications.
- TanStack Virtual by Tanner Linsley, for the long, fast-scrolling lists.
- Lucide, the community icon set grown from Cole Bemis's Feather.
And to the MetaBrainz Foundation and the volunteers behind MusicBrainz, the Cover Art Archive and ListenBrainz, whose open data makes accurate tagging possible at all.
GNU General Public License v3.0. See LICENSE.md.
