Jellyfin Full Automation Guide (2026): Radarr, Sonarr, Bazarr, Jellyseerr From Request to Stream

Jellyfin Full Automation Guide (2026): Radarr, Sonarr, Bazarr, Jellyseerr From Request to Stream

Jellyfin Full Automation Guide (2026): Radarr, Sonarr, Bazarr & Jellyseerr

A manual media server means you download files, rename them, move them, and refresh your library by hand. A fully automated stack means a user requests a movie, and it appears in Jellyfin subtitles included without you touching anything.

This guide builds that stack from scratch.


The Automation Stack

User request (Jellyseerr)
  → Radarr / Sonarr (find & grab)
  → qBittorrent (download)
  → Bazarr (subtitles)
  → Jellyfin (serve)
ToolRole
JellyseerrUsers request movies and TV shows
RadarrMonitors and grabs movies automatically
SonarrMonitors and grabs TV shows automatically
ProwlarrManages all indexers in one place
qBittorrentDownloads the files
BazarrDownloads subtitles automatically
JellyfinServes everything to your users

Docker Compose: Full Stack

Create ~/automation/docker-compose.yml:

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    network_mode: host
    volumes:
      - ./jellyfin/config:/config
      - ./jellyfin/cache:/cache
      - /mnt/media:/media:ro
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    restart: unless-stopped

  jellyseerr:
    image: fallenbagel/jellyseerr:latest
    container_name: jellyseerr
    environment:
      - LOG_LEVEL=info
      - TZ=Europe/Paris
    volumes:
      - ./jellyseerr/config:/app/config
    ports:
      - 5055:5055
    restart: unless-stopped

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

  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - ./sonarr/config:/config
      - /mnt/media/tv:/tv
      - /mnt/downloads:/downloads
    ports:
      - 8989:8989
    restart: unless-stopped

  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - ./prowlarr/config:/config
    ports:
      - 9696:9696
    restart: unless-stopped

  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - WEBUI_PORT=8080
    volumes:
      - ./qbittorrent/config:/config
      - /mnt/downloads:/downloads
    ports:
      - 8080:8080
      - 6881:6881
      - 6881:6881/udp
    restart: unless-stopped

  bazarr:
    image: lscr.io/linuxserver/bazarr:latest
    container_name: bazarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - ./bazarr/config:/config
      - /mnt/media/movies:/movies
      - /mnt/media/tv:/tv
    ports:
      - 6767:6767
    restart: unless-stopped
docker compose up -d

Critical: All containers that handle media files must share the same /mnt/downloads and /mnt/media paths. This enables hardlinks files exist in both locations without doubling storage.


Step 1: Configure Prowlarr (Indexers)

Prowlarr manages all your indexers in one place and syncs them to Radarr and Sonarr automatically.

  1. Open http://your-server:9696
  2. Indexers → Add Indexer → search for your preferred trackers
  3. Settings → Apps → Add Application:
    • Add Radarr (URL: http://radarr:7878, API key from Radarr → Settings → General)
    • Add Sonarr (URL: http://sonarr:8989, API key from Sonarr → Settings → General)
  4. Click Sync App Indexers

From now on, add indexers only in Prowlarr they sync everywhere automatically.


Step 2: Configure qBittorrent

  1. Open http://your-server:8080
  2. Default login: admin / adminadmin change this immediately
  3. Tools → Options → Downloads:
    • Default save path: /downloads/complete
    • Keep incomplete in: /downloads/incomplete
  4. Tools → Options → Web UI → change username and password

Step 3: Configure Radarr (Movies)

  1. Open http://your-server:7878
  2. Settings → Download Clients → Add → qBittorrent:
    • Host: qbittorrent, Port: 8080
    • Username / Password: your qBittorrent credentials
    • Category: radarr
  3. Settings → Media Management → Root Folders → Add /movies
  4. Settings → Media Management → enable Rename Movies
  5. Naming format (recommended):
    {Movie Title} ({Release Year})/{Movie Title} ({Release Year})
    
  6. Settings → Connect → Add → Jellyfin:
    • Host: localhost (or your server IP), Port: 8096
    • API Key: from Jellyfin Dashboard → API Keys

Now when Radarr imports a movie, Jellyfin refreshes automatically.


Step 4: Configure Sonarr (TV Shows)

Same process as Radarr:

  1. Open http://your-server:8989
  2. Settings → Download Clients → Add → qBittorrent (category: sonarr)
  3. Settings → Media Management → Root Folders → Add /tv
  4. Settings → Media Management → enable Rename Episodes
  5. Naming format (recommended):
    {Series Title}/Season {season:00}/{Series Title} - S{season:00}E{episode:00} - {Episode Title}
    
  6. Settings → Connect → Add → Jellyfin

Step 5: Configure Bazarr (Subtitles)

Bazarr automatically downloads subtitles for every movie and episode in your library.

JellyWatchTry JellyWatch — Your Jellyfin companion, everywhere.
  1. Open http://your-server:6767
  2. Settings → Providers → Add your subtitle providers:
    • OpenSubtitles.com (requires free account + API key)
    • Addic7ed (best for TV shows)
    • Podnapisi (good European language coverage)
  3. Settings → Languages → Add your desired languages (e.g., English, French)
  4. Settings → Radarr:
    • URL: http://radarr:7878
    • API Key: from Radarr → Settings → General
  5. Settings → Sonarr:
    • URL: http://sonarr:8989
    • API Key: from Sonarr → Settings → General
  6. Bazarr → Movies / Series → Scan All to download missing subtitles

Bazarr best practices

  • Set a score threshold of 90+ to avoid bad matches
  • Enable subtitle sync to fix timing offsets automatically
  • Schedule scans at 3 AM to avoid impacting streaming performance

Step 6: Configure Jellyseerr (User Requests)

Jellyseerr gives your users a Netflix-like interface to request new content.

  1. Open http://your-server:5055
  2. Complete the setup wizard:
    • Connect to your Jellyfin server
    • Connect to Radarr (URL: http://radarr:7878, API key, root folder: /movies)
    • Connect to Sonarr (URL: http://sonarr:8989, API key, root folder: /tv)
  3. Settings → Users → configure who can request and how many requests per week

The request workflow

  1. User searches for a movie in Jellyseerr
  2. User clicks Request
  3. Jellyseerr sends the request to Radarr/Sonarr
  4. Radarr/Sonarr finds and grabs the file via Prowlarr
  5. qBittorrent downloads it
  6. Radarr/Sonarr imports and renames the file
  7. Bazarr downloads subtitles
  8. Jellyfin library refreshes automatically
  9. User gets a notification: content is available

The entire process is hands-free.


File Naming: Why It Matters

Jellyfin matches metadata from TMDB/TVDB based on filenames. Wrong naming = wrong metadata.

Movies:

/mnt/media/movies/
  The Dark Knight (2008)/
    The Dark Knight (2008).mkv

TV Shows:

/mnt/media/tv/
  Breaking Bad/
    Season 01/
      Breaking Bad - S01E01 - Pilot.mkv

Radarr and Sonarr handle renaming automatically when configured correctly.


Quality Profiles: TRaSH Guides

For the best quality settings, use TRaSH Guides with Recyclarr to sync community-tested quality profiles to Radarr and Sonarr automatically.

docker run --rm -v ./recyclarr/config:/config \
  ghcr.io/recyclarr/recyclarr:latest sync

See trash-guides.info for the full configuration.


Automation Checklist

StepDone
Prowlarr indexers configured
Prowlarr synced to Radarr + Sonarr
qBittorrent credentials changed
Radarr connected to qBittorrent
Radarr connected to Jellyfin
Sonarr connected to qBittorrent
Sonarr connected to Jellyfin
Bazarr connected to Radarr + Sonarr
Jellyseerr connected to Jellyfin + Radarr + Sonarr
Test: request a movie end-to-end

Manage Your Automation Stack from Your Phone

Once your stack is running, you want to manage it without opening five browser tabs.

JellyWatch consolidates everything into one Android app:

  • Approve or reject Jellyseerr requests with one tap
  • Monitor Radarr and Sonarr download queues
  • See active Jellyfin sessions in real time
  • Get push notifications when new content is available
  • Check server health while your automation runs in the background

Your automation stack is live manage it from your pocket. Download JellyWatch on Google Play Jellyfin, Radarr, Sonarr, Jellyseerr, and Bazarr monitoring in one Android app.

Comments 2

pierredub·

Followed this guide end to end. My wife requested a movie on Jellyseerr at 8 PM, by 9 PM it was in our library with French subtitles courtesy of Bazarr. She thinks I did something manually. I did not.

Jason W.·

The hardlinks section is crucial and most guides skip it. Without hardlinks on the same filesystem, you double your storage usage. This guide explains it clearly.

Leave a comment

Never displayed publicly.
0 / 2000 · Supports limited Markdown: **bold**, *italic*, `code`, [link](url), lists, > quote.