Sonarr Radarr Jellyseerr Setup: Self-Hosted Media Stack

Quick answer: a complete sonarr radarr jellyseerr setup takes three Docker containers — Sonarr for TV, Radarr for movies, Jellyseerr as the request front-end — wired to a shared media folder and one download client. Once connected, requesting a show becomes a single click instead of a manual download.

Setting up Jellyfin feels like a finish line right up until the moment you realize you’re still the one manually downloading every episode, renaming files, and dragging them into the right folder. That’s not a media server, that’s a part-time job. The fix is a small stack of three tools that do the finding, downloading, and requesting for you — so the only thing left for you to do is press play.

This is the setup I run alongside my Raspberry Pi 5 Jellyfin build: Sonarr for TV, Radarr for movies, and Jellyseerr as the front-end so anyone in the house can request something without touching a terminal.

A note on how this works: Sonarr and Radarr automate legally-sourced downloads through indexers and download clients you configure yourself — this guide covers the self-hosting setup, not where content comes from. Point them at your own legal sources.
Sonarr radarr jellyseerr setup running on a home server desk
Container Approx. RAM Use Role
Sonarr Under 200MB Finds and grabs new TV episodes
Radarr Under 200MB Finds and grabs new movies
Jellyseerr Lightest of the three Request front-end for the household
All three combined Under 500MB total The full automation layer on top of Jellyfin

What Each Piece Actually Does

Sonarr watches your TV show library and grabs new episodes the moment they’re available. Radarr does the same for movies. Jellyseerr sits on top of both and gives you (and anyone you share access with) a simple “request this show” button that quietly kicks off Sonarr or Radarr behind the scenes — and once the download finishes, it shows up in Jellyfin automatically.

The Sonarr Radarr Jellyseerr Setup: Step by Step

Here’s the full sequence, start to finish. Each step below builds on the last, and none of them require touching a terminal once the containers are running.

Step 1: Add the Containers to Your Docker Compose File

If you’re already running Jellyfin via Docker Compose, this is just three more services in the same file. Keep each app’s config folder separate and point them all at the same shared media directory so they can all see (and move files into) the same library Jellyfin is reading from.

services:
  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Chicago
    volumes:
      - ./sonarr:/config
      - ./media/tv:/tv
      - ./downloads:/downloads
    ports:
      - 8989:8989
    restart: unless-stopped

  radarr:
    image: lscr.io/linuxserver/radarr:latest
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Chicago
    volumes:
      - ./radarr:/config
      - ./media/movies:/movies
      - ./downloads:/downloads
    ports:
      - 7878:7878
    restart: unless-stopped

  jellyseerr:
    image: fallenbagel/jellyseerr:latest
    environment:
      - TZ=America/Chicago
    volumes:
      - ./jellyseerr:/app/config
    ports:
      - 5055:5055
    restart: unless-stopped

Step 2: Connect a Download Client

Sonarr and Radarr don’t download anything themselves — they hand instructions to a download client. qBittorrent or Transmission both work well as Docker containers on the same box; add whichever one you prefer as another service in the same compose file, then plug its address and port into Sonarr and Radarr’s settings under Settings → Download Clients.

Step 3: Point Sonarr and Radarr at Indexers

Indexers are what Sonarr and Radarr search when they’re looking for a specific episode or movie. Add yours under Settings → Indexers in each app — Prowlarr (a free, self-hosted indexer manager from the same team behind Sonarr and Radarr) is worth adding to this stack too, since it syncs your indexer list to both apps at once instead of configuring each one separately. The official Sonarr wiki keeps an up-to-date list of supported indexer types if you get stuck.

Step 4: Connect Everything to Jellyseerr

In Jellyseerr, go to Settings → Services and add your Sonarr and Radarr instances using their internal Docker network addresses (e.g. http://sonarr:8989) and the API key from each app’s Settings → General page. Once that’s connected, Jellyseerr becomes the only interface most people in your house will ever need to touch. The Jellyseerr documentation covers permission tiers if you want to limit what younger household members can request.

Step 5: Point Jellyfin at the Same Media Folders

Last step — make sure Jellyfin’s library paths match the /tv and /movies folders Sonarr and Radarr are writing into. Once a download finishes, Sonarr and Radarr rename and move the file automatically, and Jellyfin’s library scanner picks it up on its next scheduled scan (or immediately, if you’ve got real-time monitoring enabled).

How Much Hardware Does This Actually Need?

None of these three containers are heavy. Sonarr and Radarr mostly sit idle, waking up briefly on a schedule (or when Jellyseerr pings them) to check indexers and process a completed download — expect well under 200MB of RAM each in normal use. Jellyseerr is even lighter since it’s just a request UI talking to the other two over the local network. On a Raspberry Pi 5 or a budget mini PC already running Jellyfin, adding all three typically adds less than 500MB of RAM and negligible CPU outside of the few seconds it takes to process a new file. The real resource cost in this stack isn’t Sonarr, Radarr, or Jellyseerr — it’s the download client and Jellyfin’s transcoding, which is why keeping this automation layer light matters if you’re running everything on one small box.

The Payoff

Once this is running, the entire loop looks like this: someone requests a show in Jellyseerr → Sonarr finds it → your download client grabs it → Sonarr renames and files it → Jellyfin notices the new file and it’s just there, ready to watch. No manual downloading, no folder wrangling, no “did that finish yet” checking. It’s the difference between running a media server and babysitting one.

Sonarr Radarr Jellyseerr Setup: Common Questions

Do I need Prowlarr, or can I skip it?

You can skip it — Sonarr and Radarr each have their own indexer settings and will work fine without it. Prowlarr just saves you from configuring the same indexer twice once you’re running both apps, and it’s a five-minute addition once the core stack is up.

Why isn’t Jellyfin picking up new downloads automatically?

This is almost always a path mismatch. Double-check that the volume paths inside each container (/tv, /movies) point at the exact same folders Jellyfin’s library is scanning — if Sonarr is writing to a folder Jellyfin doesn’t know about, nothing will show up no matter how many times you rescan.

Can I run this whole stack on the same Raspberry Pi or mini PC as Jellyfin?

Yes. Sonarr, Radarr, and Jellyseerr are all lightweight compared to Jellyfin’s transcoding load, so a single Pi 5 or budget mini PC can comfortably run all four containers together — just give yourself enough storage headroom for downloads-in-progress alongside your permanent media library.

Is this legal?

Sonarr, Radarr, and Jellyseerr are automation and library-management tools — they don’t include or endorse any specific content source. What you point them at is on you; this guide only covers the self-hosting mechanics.

How do I keep everything updated?

If you’re running these through Docker Compose with the :latest tag, a simple docker compose pull && docker compose up -d pulls fresh images and recreates any container with an update available, leaving the others untouched. Tools like Watchtower can automate this on a schedule, but for a stack this small, checking in manually every few weeks is just as easy and gives you a chance to skim the release notes before something changes on you.


Haven’t set up the base server yet? Start with Jellyfin vs Plex to pick your platform, then follow the Raspberry Pi 5 Jellyfin build before layering this automation stack on top.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top