How to Set Up Sonarr and Radarr on Raspberry Pi for Automated Media Management

How to Set Up Sonarr and Radarr on Raspberry Pi for Automated Media Management

Sonarr and Radarr are companion applications for automating media library management. Sonarr monitors and downloads TV shows while Radarr handles movies. Both integrate with indexers (search providers) and download clients to fully automate the process of finding, downloading, and organizing media files.

This guide assumes you already have Docker running on your Pi. If not, see our Docker setup guide. If you need a media server to play your content, see our Jellyfin guide.


Prerequisites

  • Raspberry Pi 4 or 5 (4 GB RAM recommended)
  • Docker and Docker Compose installed
  • A download client already set up (such as Transmission, qBittorrent, SABnzbd, or NZBGet)
  • An external drive or storage mounted for media files

Step 1: Create the Directory Structure

Set up directories for configuration and media:

Bash
mkdir -p ~/media-stack/sonarr ~/media-stack/radarr
sudo mkdir -p /mnt/media/tvshows /mnt/media/movies /mnt/downloads

Step 2: Create the Docker Compose File

Create ~/media-stack/docker-compose.yml with the following configuration:

YAML
services:
  sonarr:
    image: linuxserver/sonarr
    container_name: sonarr
    restart: unless-stopped
    ports:
      - "8989:8989"
    volumes:
      - ./sonarr:/config
      - /mnt/media/tvshows:/tv
      - /mnt/downloads:/downloads
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York

  radarr:
    image: linuxserver/radarr
    container_name: radarr
    restart: unless-stopped
    ports:
      - "7878:7878"
    volumes:
      - ./radarr:/config
      - /mnt/media/movies:/movies
      - /mnt/downloads:/downloads
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York

PUID/PGID set to 1000 matches the default pi user. Both services share /downloads so they can perform efficient hardlinks instead of copy-and-delete operations.


Step 3: Start the Services

Bash
cd ~/media-stack
docker compose up -d
docker ps

You should see both sonarr and radarr listed and running.


Step 4: Configure Sonarr

Open Sonarr in your browser:

Code
http://<your-pi-ip>:8989

Add an Indexer

  1. Go to Settings > Indexers and click +
  2. Select your indexer type (e.g., Torznab for Jackett/Prowlarr, or a Usenet indexer)
  3. Enter the indexer URL, API key, and categories
  4. Click Test, then Save

Add a Download Client

  1. Go to Settings > Download Clients and click +
  2. Select your client (e.g., qBittorrent, Transmission, SABnzbd, or NZBGet)
  3. Enter the host, port, and credentials, then click Test and Save

Set the Root Folder and Add Content

  1. Go to Settings > Media Management, click Add Root Folder, and enter /tv
  2. Click Add New in the sidebar to search for and add TV shows to monitor

Step 5: Configure Radarr

Open Radarr at http://<your-pi-ip>:7878. The configuration mirrors Sonarr exactly:

  1. Add an indexer under Settings > Indexers (same indexer(s) as Sonarr)
  2. Add a download client under Settings > Download Clients (same client as Sonarr)
  3. Set the root folder under Settings > Media Management to /movies
  4. Add a movie via Add New, select quality profile and minimum availability

Step 6: Connect Sonarr and Radarr to Jellyfin

In both Sonarr and Radarr, go to Settings > Connect, click +, and select Jellyfin / Emby. Enter your Pi's IP address, port 8096, and a Jellyfin API key (create one in Jellyfin under Dashboard > API Keys). Click Test, then Save.

Now when either service imports a new file, Jellyfin will automatically scan for new content.


Updating the Services

Pull the latest images and recreate the containers:

Bash
cd ~/media-stack
docker compose pull
docker compose up -d

Your configuration is preserved in the mounted volumes.


Troubleshooting

  • Web UI not loading: Check that the container is running with docker ps. Review logs with docker logs sonarr or docker logs radarr.
  • Permission denied errors: Verify that PUID and PGID match the owner of your media and download directories. Check with id on the host.
  • Downloads complete but files are not imported: Ensure both the download client and Sonarr/Radarr share the same /downloads path. If the paths differ inside and outside the container, Sonarr/Radarr cannot find the files.
  • Indexer connection failures: Double-check the indexer URL and API key. Ensure the indexer service is reachable from the Pi.
  • Jellyfin not updating after import: Verify the API key is correct and that the Jellyfin connection test succeeds in Sonarr/Radarr settings.
  • High memory usage: The Pi 4 with 2 GB RAM may struggle. Consider adding swap: set CONF_SWAPSIZE=2048 in /etc/dphys-swapfile and restart the swap service.
  • Slow search results: This is normal on a Pi. An SSD for config volumes improves responsiveness.

Conclusion

With Sonarr and Radarr running on your Raspberry Pi, you have a fully automated media management pipeline. New episodes and movies are automatically searched, downloaded, renamed, and organized into your library. Combined with Jellyfin, you have a complete self-hosted media server stack running on affordable, low-power hardware.