All apps · 0 apps
Trackarr
Docker app from confinedfish's Repository
Overview
Features include queue monitoring with health scoring, missing media tracking, multi-server support, background routines, and download history.
Setup: After starting the container, open the WebUI and add your Radarr/Sonarr servers under the Servers page. You will need the host, port, and API key for each instance.
Readme
View on GitHubTrackarr
A self-hosted companion app for Radarr and Sonarr that gives you a unified view of your media automation — downloads, queue health, missing media, and what needs your attention.
Alpha software — Trackarr is in early development (v5.x-alpha). Expect breaking changes, incomplete features, and rough edges. It connects to live Radarr/Sonarr instances and there is no read-only mode yet. Use at your own risk.
Features
Queue monitoring — See active downloads across all your Radarr and Sonarr instances in one place. Track download progress, status changes, and stalled or failing items.
Health scoring — Every download gets a health score (0–100) based on its lifecycle. Stalls, errors, and lack of progress reduce the score; recoveries and steady progress improve it. Configurable thresholds can automatically flag or remove unhealthy downloads.
Missing media tracking — Automatically detects movies and episodes that are missing from your library. Tracks search state, manages cooldowns between searches, and abandons items that repeatedly fail to find results.
Multi-server support — Connect multiple Radarr and Sonarr instances. Each server gets independent health checks, queue monitoring, and configuration.
Background routines — Scheduled jobs handle heartbeat checks, queue refreshes, health evaluations, missing media detection, and database cleanup. Each routine tracks its own run history and can be individually configured.
Download history — Browse past download attempts with event-level detail to understand what happened and why.
Installation
Docker Compose (recommended)
services:
trackarr:
container_name: trackarr
image: confinedfish/trackarr:latest
restart: unless-stopped
ports:
- "5264:8080"
volumes:
- ./docker-data/trackarr:/config
environment:
ASPNETCORE_ENVIRONMENT: Production
DOTNET_ENVIRONMENT: Production
ASPNETCORE_URLS: http://+:8080
ConnectionStrings__DefaultConnection: "Data Source=/config/trackarr.db"
DataProtection__KeysPath: "/config/keys"
docker compose up -d
Trackarr will be available at http://localhost:5264. The database and configuration are persisted to ./docker-data/trackarr/.
Docker CLI
docker run -d \
--name trackarr \
--restart unless-stopped \
-p 5264:8080 \
-v /path/to/config:/config \
-e ASPNETCORE_ENVIRONMENT=Production \
-e DOTNET_ENVIRONMENT=Production \
-e ASPNETCORE_URLS=http://+:8080 \
-e "ConnectionStrings__DefaultConnection=Data Source=/config/trackarr.db" \
-e DataProtection__KeysPath=/config/keys \
confinedfish/trackarr:latest
Unraid
- In the Unraid Docker tab, click Add Container
- Set Repository to
confinedfish/trackarr:latest - Under Template, you can use the Unraid template XML from this repo
- Configure the port (default
5264) and appdata path (default/mnt/user/appdata/trackarr) - Click Apply
Unraid will automatically detect when a new image is available on Docker Hub and offer to update the container.
Updating
Images are automatically built and pushed to Docker Hub on every release. To update:
- Docker Compose:
docker compose pull && docker compose up -d - Docker CLI:
docker pull confinedfish/trackarr:latestand recreate the container - Unraid: Click the update notification in the Docker tab
First-time setup
- Open Trackarr in your browser
- Go to Servers and add your Radarr/Sonarr instances (you'll need the host, port, and API key for each)
- Background routines will start syncing queue and missing media data automatically
Configuration
Trackarr stores its settings in the database and exposes them through the UI. Key configuration areas:
| Category | Examples |
|---|---|
| General | App name, auto-start routines, default server type |
| Server defaults | Queue monitoring, auto-remove failed downloads, missing media search, request timeout |
| Health policy | Starting score, penalty/reward weights, removal thresholds, grace periods |
| Missing policy | Search cooldown, max failed searches, cascade limit, abandonment threshold |
| Display | Date/time format, table page sizes, chart visibility, table density |
Development
Requirements: .NET 10.0 SDK
git clone https://github.com/alexzeigler/Trackarr.git
cd Trackarr
dotnet run --project Trackarr/Trackarr.csproj
The app starts at http://localhost:5264. The database is created automatically on first run.
Running tests:
dotnet test
Project structure
Trackarr/ Web app — Blazor Server UI, startup, middleware
Trackarr.Core/ Domain models — media, health, queue, settings
Trackarr.Data/ EF Core DbContext and migrations (SQLite)
Trackarr.Services/ Business logic — API clients, health scoring, search
Trackarr.Routines/ Background job implementations
Trackarr.Client/ Blazor WebAssembly client components
Trackarr.Tests/ Unit and integration tests (xUnit)
Tech stack
- .NET 10 / ASP.NET Core / Blazor Server
- SQLite via Entity Framework Core
- Blazor Bootstrap / Bootstrap
- xUnit for testing
Contributing
Trackarr is not yet set up for outside contributions. Once the first alpha builds are more stable, bug reports, testing feedback, and setup experience reports will be the most useful.
Disclaimer
Trackarr is an independent project, not affiliated with Radarr, Sonarr, or any download client.
Install Trackarr on Unraid in a few clicks.
Find Trackarr in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Categories
Download Statistics
Related apps
Explore more like this
Explore allDetails
confinedfish/trackarr:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8080]/- Network
bridge- Shell
bash- Privileged
- false
Template configuration
Port for the Trackarr web interface.
- Target
- 8080
- Default
- 5264
- Value
- 5264
Path to store Trackarr configuration and database.
- Target
- /config
- Default
- /mnt/user/appdata/trackarr
- Value
- /mnt/user/appdata/trackarr
Application environment. Leave as Production.
- Default
- Production
- Value
- Production
Runtime environment. Leave as Production.
- Default
- Production
- Value
- Production
Internal listen URL. Do not change.
- Default
- http://+:8080
- Value
- http://+:8080
SQLite database path. Only change if you know what you are doing.
- Target
- ConnectionStrings__DefaultConnection
- Default
- Data Source=/config/trackarr.db
- Value
- Data Source=/config/trackarr.db
Path for encryption key storage.
- Target
- DataProtection__KeysPath
- Default
- /config/keys
- Value
- /config/keys