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:
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:
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
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:
http://<your-pi-ip>:8989
Add an Indexer
- Go to Settings > Indexers and click +
- Select your indexer type (e.g., Torznab for Jackett/Prowlarr, or a Usenet indexer)
- Enter the indexer URL, API key, and categories
- Click Test, then Save
Add a Download Client
- Go to Settings > Download Clients and click +
- Select your client (e.g., qBittorrent, Transmission, SABnzbd, or NZBGet)
- Enter the host, port, and credentials, then click Test and Save
Set the Root Folder and Add Content
- Go to Settings > Media Management, click Add Root Folder, and enter
/tv - 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:
- Add an indexer under Settings > Indexers (same indexer(s) as Sonarr)
- Add a download client under Settings > Download Clients (same client as Sonarr)
- Set the root folder under Settings > Media Management to
/movies - 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:
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 withdocker logs sonarrordocker logs radarr. - Permission denied errors: Verify that
PUIDandPGIDmatch the owner of your media and download directories. Check withidon the host. - Downloads complete but files are not imported: Ensure both the download client and Sonarr/Radarr share the same
/downloadspath. 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=2048in/etc/dphys-swapfileand 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.