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.

Prismarr logo

Self-host Prismarr

v1.3.0

Unified dashboard for Radarr, Sonarr, Prowlarr and TMDb

ReleaseOpen SourceAGPL-3.0
Docker ComposeCompose file & guide
docker compose up -d
Updated8 hours ago
LanguageTwig
Setup difficultyEasy
MobileResponsive
ThemeDark mode
Stars
469
Port
7070 (Web interface (internal listening port; host mapping e.g. 7070:7070))
Docker
shoshuo/prismarr
Main dashboard with widgets and service healthUnified search / discover pageMerged calendar of movie and episode releasesMovies library page backed by RadarrSeries detail page backed by SonarrDownloads page for qBittorrentSettings page with a custom theme

What is Prismarr?

Prismarr is a homelab media dashboard: one Symfony 8 web interface that gathers the Servarr stack, Seerr-style request apps, torrent and usenet clients plus TMDb lookup into a single place, so managing a library stops meaning a dozen browser tabs. Highlights include a typo-tolerant search box covering both the local collection and TMDb, a calendar merging film release dates and episode airings across instances (month/week/day views, iCal export), a start page showing service health, pending requests, watchlist and trending titles, and full download screens for qBittorrent, Deluge, Transmission, SABnzbd and NZBGet. Several Radarr or Sonarr instances — say 1080p, 4K and Anime — sit side by side as first-class citizens, and optional pages cover Plex stats via Tautulli, Tracearr activity, Emby sessions and Bazarr subtitles. All configuration happens in the UI: API keys land in the bundled SQLite database rather than env files, and the two framework secrets are auto-generated at first launch. Deployment is one multi-arch Docker image (roughly 282 MB) started with Docker Compose plus a single data volume mounted at the container path the docs mandate, followed by a first-run wizard for language and admin account. Notable limits: it is a solo-maintained project with no SLA, and it deliberately acts as a control surface alongside Radarr and Sonarr rather than replacing them.

Should you self-host Prismarr?

Prismarr scores 49/100 on selfhost.directory (how scoring works) and ranks #70 of 142 in Media Management. It has 469 GitHub stars.

It shipped 11 stable releases in the past year. The latest, v1.3.0, came out on 21 October 2026. New versions land roughly every 1 days.

Setup is easy: most people get it running in one sitting. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in Twig.

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 Prismarr vs Sonarr side by side.

Features

  • Dashboard
  • Download client management
  • Global quick search (Ctrl+K)
  • iCal export
  • Multi-Instance Support
  • Multi-language UI
  • Real-time updates
  • Security hardening
  • Settings export / import
  • Setup Wizard
  • Theming
  • Unified calendar
  • Unified search (library + TMDb)

Prismarr README

How to install Prismarr

Install Prismarr with Docker Compose

Docker and Docker Compose
Environment variables
APP_ENV, PRISMARR_PORT, TRUSTED_PROXIES, TZ, PHP_MEMORY_LIMIT, PHP_MAX_EXECUTION_TIME, PRISMARR_WORKER, PRISMARR_WORKER_NUM

Create a file named docker-compose.yml with the following content:

services:
  prismarr:
    image: shoshuo/prismarr:latest
    container_name: prismarr
    restart: unless-stopped
    stop_grace_period: 30s
    ports:
      - "7070:7070"
    volumes:
      - prismarr_data:/var/www/html/var/data

volumes:
  prismarr_data:

Start the container:

docker compose up -d

Open http://localhost:7070 in your browser.

The data volume target inside the container must stay at /var/www/html/var/data; a bind-mount on the wrong path silently resets data. On Unraid, map it to a dedicated subfolder on the cache pool.

How to configure Prismarr

  • APP_ENVprodSwitch to `dev` for local development only

    Switch to `dev` for local development only

  • PHP_MAX_EXECUTION_TIME120PHP wall-time ceiling per request, in seconds. Bump alongside `PHP_MEMORY_LIMIT` if the films / series page times out

    PHP wall-time ceiling per request, in seconds. Bump alongside `PHP_MEMORY_LIMIT` if the films / series page times out

  • PHP_MEMORY_LIMIT1024MPHP memory ceiling per request. Bump (e.g. `2048M`, `-1` for unlimited) if you have a very large Radarr / Sonarr library — see issue #13

    PHP memory ceiling per request. Bump (e.g. `2048M`, `-1` for unlimited) if you have a very large Radarr / Sonarr library — see issue #13

  • PRISMARR_PORT7070Internal listening port

    Internal listening port

  • PRISMARR_WORKER_(unset)_Enables FrankenPHP/Symfony worker mode — the kernel is booted once and kept resident, skipping the per-request bootstrap for faster responses. Set to `1` (or `true`) for the default worker count, or to a number (e.g. `4`) to run that many workers. Off by default / `0` / `false` = classic per-request mode; no image rebuild needed to toggle

    Enables FrankenPHP/Symfony worker mode — the kernel is booted once and kept resident, skipping the per-request bootstrap for faster responses. Set to `1` (or `true`) for the default worker count, or to a number (e.g. `4`) to run that many workers. Off by default / `0` / `false` = classic per-request mode; no image rebuild needed to toggle

  • PRISMARR_WORKER_NUM_(2× CPU)_Optional explicit worker-thread count; overrides the count when `PRISMARR_WORKER` is enabled. Leave unset to use FrankenPHP's default (2× the available CPUs)

    Optional explicit worker-thread count; overrides the count when `PRISMARR_WORKER` is enabled. Leave unset to use FrankenPHP's default (2× the available CPUs)

  • TRUSTED_PROXIES127.0.0.1,REMOTE_ADDRAdjust if running behind Traefik / nginx / Caddy / Cloudflare Tunnel

    Adjust if running behind Traefik / nginx / Caddy / Cloudflare Tunnel

  • TZUTCContainer time zone (e.g. `Europe/Paris`, `Pacific/Honolulu`). Drives both the OS clock and the PHP date helpers — see issue #12

    Container time zone (e.g. `Europe/Paris`, `Pacific/Honolulu`). Drives both the OS clock and the PHP date helpers — see issue #12

Prismarr releases & version history

FAQ

Can I contribute a translation in another language?

Yes; duplicate the English YAML translation file to your locale, translate it and open a PR — the setup wizard picks up the new locale automatically.

How do I back up my install?

Snapshot the prismarr_data Docker volume, which holds the SQLite database, auto-generated secrets, sessions, cache and avatars.

Where are API keys stored? Is it safe?

In the SQLite database's setting table inside the prismarr_data volume, never in environment variables or version-controlled files; the settings export strips every api_key, password or secret.

Does Prismarr need internet access?

Only for TMDb (cover art, metadata, search) and the Servarr services you point it at; the app itself works fully on a LAN, and without TMDb only the Search page is unavailable.

Does Prismarr support ARM / Raspberry Pi?

Yes, the image is built for linux/amd64 and linux/arm64 and runs on a Raspberry Pi 4/5, an Apple Silicon Mac, or any arm64 NAS.

Why PHP / Symfony?

The developer chose Symfony 8 because it lets a solo dev ship a polished, testable web app quickly, with FrankenPHP worker mode keeping per-request overhead small.

More in Download Management

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…