selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
arr-dashboard logo

Self-host arr-dashboard

v2.24.1

Unified dashboard for managing *arr media automation

ReleaseOpen SourceMIT
Updated9 hours ago
LanguageTypescript
Setup difficultyModerate
Stars
319
RAM
300-500 MB typical
Ports
3000 (Next.js 16 frontend (web UI)), 3001 (Fastify 4 API server)
Docker
khak1s/arr-dashboard
Install with Docker
Main dashboard view showing queue, statistics, and Plex widgetsLibrary browser with movies, TV shows, music, and booksCalendar view with upcoming releasesDiscover page with TMDB trending and popular contentGlobal search across all indexersIndexer management via ProwlarrDownload and import history timelineAggregated statistics and health metricsSeerr request managementAutomated hunting configuration

What is arr-dashboard?

Arr Dashboard is a self-hosted web application that provides a unified interface for managing multiple instances of the *arr media automation stack (Sonarr, Radarr, Prowlarr, Lidarr, Readarr) along with media servers (Plex, Jellyfin, Emby) and request management (Seerr). It aggregates queue, calendar, library, history, and statistics across all connected instances into a single view. Key capabilities include global search across indexers via Prowlarr, content discovery with TMDB integration, TRaSH Guides quality profile and custom format synchronization, rule-based library cleanup with approval workflows, automated hunting for missing content and quality upgrades, queue cleaning for stalled downloads, and a notification system with 8 channels (Discord, Telegram, Email, Pushover, Gotify, Ntfy, Pushbullet, Web Push). It supports multiple authentication methods: built-in password, OIDC (Authelia, Authentik, Keycloak), and Passkeys (WebAuthn). All credentials are secured using AES-256-GCM encryption at rest. The application runs as a single Docker container exposing ports 3000 (frontend) and 3001 (API), with SQLite as the default database and optional PostgreSQL support. An incognito mode masks sensitive data for safe screenshots. The project is actively maintained with regular releases under the MIT license.

Should you self-host arr-dashboard?

arr-dashboard scores 53/100 on selfhost.directory (how scoring works) and ranks #54 of 142 in Media Management. It has 319 GitHub stars.

It shipped 11 stable releases in the past year. The latest, v2.24.1, came out on 17 August 2026. New versions land roughly every 3 days.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is MIT-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Sonarr (81/100, 17 472 stars). It scores higher overall, so compare the two before you pick. See arr-dashboard vs Sonarr side by side.

Features

  • Automated hunting
  • Auto-tagger
  • Calendar View
  • Content discovery
  • Global Search
  • History Tracking
  • Jellyfin/Emby integration
  • Library cleanup
  • Library Management
  • Multi-instance aggregation
  • Notification system
  • Plex Integration
  • Queue cleaner
  • Seerr integration
  • TRaSH Guides sync

arr-dashboard README

How to install arr-dashboard

Install arr-dashboard with Docker

Docker Engine
Environment variables
PUID, PGID, DATABASE_URL, SESSION_TTL_HOURS, SESSION_COOKIE_NAME, PASSWORD_POLICY, API_RATE_LIMIT_MAX, API_CORS_ORIGIN, BACKUP_PASSWORD, WEBAUTHN_RP_NAME, WEBAUTHN_RP_ID, WEBAUTHN_ORIGIN, APP_URL, LOG_LEVEL, GITHUB_TOKEN, HEAP_AUTO_SNAPSHOT

docker run -d
--name arr-dashboard
-p 3000:3000
-v /path/to/config:/config
-e PUID=1000
-e PGID=1000
--restart unless-stopped
khak1s/arr-dashboard:latest

Recommended installation method

How to configure arr-dashboard

  • API_CORS_ORIGINlocalhost:3000,3001Allowed CORS origins (comma-separated)

    Allowed CORS origins (comma-separated)

  • API_RATE_LIMIT_MAX200Max requests per minute

    Max requests per minute

  • APP_URLhttp://localhost:3000Preferred public application URL for OIDC callbacks

    Preferred public application URL for OIDC callbacks

  • BACKUP_PASSWORDPassword for encrypted backups (optional)

    Password for encrypted backups (optional)

  • DATABASE_URLfile:/config/prod.dbDatabase connection string (SQLite or PostgreSQL)

    Database connection string (SQLite or PostgreSQL)

  • GITHUB_TOKENOptional GitHub token for TRaSH Guides (higher rate limits)

    Optional GitHub token for TRaSH Guides (higher rate limits)

  • HEAP_AUTO_SNAPSHOT0Set to 1 to capture a V8 heap snapshot just before OOM

    Set to 1 to capture a V8 heap snapshot just before OOM

    values: 0, 1

  • LOG_LEVELinfoLogging level

    Logging level

    values: debug, info, warn, error

  • PASSWORD_POLICYstrictPassword policy: strict (uppercase, lowercase, number, special char) or relaxed (8+ chars, passphrase-friendly)

    Password policy: strict (uppercase, lowercase, number, special char) or relaxed (8+ chars, passphrase-friendly)

    values: strict, relaxed

  • PGID911Group ID for file permissions (LinuxServer.io style)

    Group ID for file permissions (LinuxServer.io style)

  • PUID911User ID for file permissions (LinuxServer.io style)

    User ID for file permissions (LinuxServer.io style)

  • SESSION_COOKIE_NAMEarr_sessionName of the session cookie

    Name of the session cookie

  • SESSION_TTL_HOURS24Session expiration time in hours

    Session expiration time in hours

  • WEBAUTHN_ORIGINhttp://localhost:3000Public browser origin for passkeys; also an OIDC callback fallback when APP_URL is local

    Public browser origin for passkeys; also an OIDC callback fallback when APP_URL is local

  • WEBAUTHN_RP_IDlocalhostPasskey relying party ID (your domain, no protocol)

    Passkey relying party ID (your domain, no protocol)

  • WEBAUTHN_RP_NAMEArr DashboardPasskey display name

    Passkey display name

arr-dashboard releases & version history

FAQ

I get "Authentication required" errors

Causes: session expired, database reset or container recreated with new volume, or secrets.json regenerated. Solutions: log out and log back in, run through setup wizard again if database was reset, clear browser cookies for the dashboard URL if stale cookies persist.

The dashboard shows no data

Causes: no service instances configured, instances unreachable, or incorrect API keys. Solutions: verify at least one instance is configured in Settings > Services, click Test on each instance, verify base URL and API key, ensure *arr services are running and accessible from the Arr Dashboard container.

Can I use it behind a VPN?

Yes, Arr Dashboard works behind VPNs with no special configuration for most features. The exception is passkeys (WebAuthn), which require the browser's origin to match the configured WEBAUTHN_ORIGIN environment variable. Set WEBAUTHN_RP_ID to your domain and WEBAUTHN_ORIGIN to the full URL the browser uses.

How does TRaSH Guides sync work?

Arr Dashboard pulls the latest TRaSH Guides JSON data from GitHub and caches it locally. You create templates based on TRaSH recommendations, preview changes before deploying, and templates are deployed to selected Sonarr/Radarr instances with automatic backup. Sync can be triggered manually and templates updated independently as TRaSH publishes new recommendations.

What's incognito mode?

Incognito mode hides all sensitive information from the dashboard interface: service names, URLs, and API keys are masked; media titles and file paths are obscured; a "Linux ISO" theme is applied; statistics and counts remain visible but anonymized. Useful for public demos, screenshots, or streaming.

Can I switch from SQLite to PostgreSQL?

Yes. Create a backup from Settings > Backup, set DATABASE_URL to your PostgreSQL connection string, restart the container (schema applies automatically), then re-add service instances (API keys need re-entry since they're tied to the encryption key). Back up secrets.json before making database changes.

How much RAM does it need?

Typical memory usage is 300-500 MB depending on number of connected service instances, size of media libraries, whether Plex/Tautulli caching is active, and database size. A Raspberry Pi 4 with 4 GB RAM can comfortably run Arr Dashboard alongside other services.

Does it work on ARM/Raspberry Pi?

Yes. The Docker image supports the arm64 architecture and runs on Raspberry Pi 4/5 and other ARM-based devices. Use the same image tag (khak1s/arr-dashboard:latest) — Docker automatically pulls the correct architecture.

How do I update?

For Docker Compose: docker-compose pull && docker-compose up -d. For Docker CLI: pull the latest image, stop and remove the container, then run a new container with your options. Database schema updates are applied automatically on startup.

Can multiple users use it?

Arr Dashboard is a single-admin application by design. However, if you connect a Jellyseerr or Overseerr instance, the Requests page provides multi-user media request management where users submit requests through Jellyseerr/Overseerr and the admin approves or denies them from Arr Dashboard.

What happens if I lose secrets.json?

All encrypted API keys become unrecoverable and you'll need to re-enter them for every connected service. All active sessions are invalidated. A new encryption key and cookie secret are auto-generated on next startup. Back up secrets.json alongside your database backups.

Is my data safe?

Yes. API keys are encrypted at rest using AES-256-GCM, passwords are hashed with Argon2id, sessions use cryptographically random tokens stored as SHA-256 hashes, secrets are auto-generated on first run, OIDC client secrets are encrypted, and account lockout activates after 5 failed login attempts.

Can I use it without Prowlarr?

Yes. Any combination of supported services works. You can connect just Sonarr and Radarr, or just Plex, or all 8 services. Features that depend on a specific service simply won't appear if that service is not configured.

Does it replace Sonarr/Radarr?

No. Arr Dashboard is a management layer that sits on top of your existing *arr applications. It aggregates data from multiple instances into a single unified view and adds features like TRaSH Guides sync, library cleanup, and hunting. Your Sonarr, Radarr, and other *arr apps continue to run independently.

What services does Arr Dashboard support?

Arr Dashboard supports Sonarr, Radarr, Prowlarr, Lidarr, Readarr, Plex, Tautulli (optional enrichment), and Jellyseerr/Overseerr. You can connect multiple instances of any service.

More in Application Management

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…