← Turning an Old Laptop Into a Home Server SELF-HOSTING · MEDIA

The Media Automation Stack

How Radarr, Sonarr, Prowlarr, and Transmission work together so your Jellyfin library organizes and fills itself in.

Diagram of the media automation pipeline
How a request flows: Prowlarr's indexers → Radarr/Sonarr → Transmission → your organized library.

The Idea: Four Tools, One Pipeline

Each of these tools does one narrow job well, and they hand work off to each other automatically:

ToolJob
ProwlarrManages your indexers (search sources) in one place, so you don't configure them separately in every other tool
RadarrTracks movies you want, searches for them automatically, and organizes them once downloaded
SonarrSame idea as Radarr, but for TV shows — tracks entire series, season by season, episode by episode
TransmissionThe actual download client that fetches the files Radarr/Sonarr find

Once connected together, the workflow becomes: you add a movie or show to Radarr/Sonarr → it searches through Prowlarr's indexers → a match gets sent to Transmission to download → once complete, Radarr/Sonarr automatically renames and moves the file into your organized media folder → Jellyfin picks it up and it's ready to watch.

Running the Stack in Docker

services:
  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    ports:
      - "9696:9696"
    volumes:
      - './prowlarr-config:/config'
    restart: unless-stopped

  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    ports:
      - "7878:7878"
    volumes:
      - './radarr-config:/config'
      - '/mnt/external-drive/movies:/movies'
      - '/mnt/external-drive/downloads:/downloads'
    restart: unless-stopped

  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    ports:
      - "8989:8989"
    volumes:
      - './sonarr-config:/config'
      - '/mnt/external-drive/tvshows:/tv'
      - '/mnt/external-drive/downloads:/downloads'
    restart: unless-stopped

  transmission:
    image: lscr.io/linuxserver/transmission:latest
    container_name: transmission
    ports:
      - "9091:9091"
    volumes:
      - './transmission-config:/config'
      - '/mnt/external-drive/downloads:/downloads'
    restart: unless-stopped
Notice the shared /downloads folder. Every tool above points at the same downloads location on your drive. This matters — it's how Radarr and Sonarr are able to find files that Transmission just finished downloading, and move them into their proper organized folders afterward.

Connecting the Pieces

  1. Set up Prowlarr first. Add your indexers inside Prowlarr's web interface (http://your-server-ip:9696)
  2. Connect Prowlarr to Radarr and Sonarr. In Prowlarr, go to Settings → Apps, and add both Radarr and Sonarr with their respective addresses and API keys (found in each tool's own Settings → General page) — this pushes your indexers into both automatically, so you never configure them twice
  3. Connect Transmission as the download client. In both Radarr and Sonarr, go to Settings → Download Clients, and add Transmission using its address, port, and any credentials you set
  4. Point Radarr/Sonarr at your organized folders. Under Settings → Media Management, confirm the root folders match where you want finished movies/shows to end up — the same folders Jellyfin is watching

Adding Content

Once connected, using the stack day-to-day is simple: search for a movie in Radarr or a show in Sonarr, add it, and the rest happens automatically in the background. Sonarr in particular can be set to monitor an entire ongoing series, automatically grabbing new episodes as they become available.

Common Issues

Downloads complete in Transmission but never show up in Radarr/Sonarr. Almost always a path mismatch — the folder path Transmission reports as its download location has to exactly match what Radarr/Sonarr expect, which is why the shared volume mapping above matters so much. Double check the paths inside each container match.

Searches return nothing. Usually an indexer issue in Prowlarr — check that your configured indexers are actually online and working from Prowlarr's own test/search function before troubleshooting further downstream.

← Back to the full home server guide