Prowlarr + qBittorrent: Complete Download Stack for Jellyfin (2026)
Radarr and Sonarr handle automation - but they need two things to work: an indexer manager (Prowlarr) and a download client (qBittorrent or Transmission). This guide covers the full download layer setup and how it feeds directly into your Jellyfin library.
The Full Stack Overview
Prowlarr (indexers) → Radarr/Sonarr (automation) → qBittorrent (download) → Jellyfin (media server)
| Tool | Role |
|---|---|
| Prowlarr | Manages all torrent/usenet indexers in one place |
| Radarr | Monitors and grabs movies automatically |
| Sonarr | Monitors and grabs TV shows automatically |
| qBittorrent | Downloads the files |
| Jellyfin | Serves the media to your users |
Docker Compose: Full Stack
services:
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
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
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
- WEBUI_PORT=8080
volumes:
- ./qbittorrent/config:/config
- /path/to/downloads:/downloads
ports:
- 8080:8080
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
volumes:
- ./radarr/config:/config
- /path/to/movies:/movies
- /path/to/downloads:/downloads
ports:
- 7878:7878
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
volumes:
- ./sonarr/config:/config
- /path/to/tv:/tv
- /path/to/downloads:/downloads
ports:
- 8989:8989
restart: unless-stopped
Critical: All containers must share the same
/downloadspath so Radarr/Sonarr can move completed files.
Step 1: Configure Prowlarr
Prowlarr replaces individual indexer configuration in Radarr and Sonarr. Configure once, sync everywhere.
Add indexers
- Open Prowlarr at
http://your-server:9696 - Indexers → Add Indexer
- Search for your preferred indexers (public or private trackers)
- Configure credentials if required
- Test and save
Connect to Radarr and Sonarr
- Settings → Apps → Add Application
- Select Radarr → enter URL and API key
- Repeat for Sonarr
- Click Sync App Indexers - all indexers push to both apps automatically
From now on, add indexers only in Prowlarr. They sync to all connected apps.
Step 2: Configure qBittorrent
Initial setup
- Open qBittorrent Web UI at
http://your-server:8080 - Default credentials:
admin/adminadmin(change immediately) - Tools → Options → Web UI → Change username and password
Recommended settings
Downloads tab:
- Default save path:
/downloads/complete - Keep incomplete torrents in:
/downloads/incomplete - Enable "Append .!qB extension to incomplete files"
Connection tab:
- Listening port:
6881(or random, avoid ISP-blocked ports) - Enable UPnP/NAT-PMP if behind a router
Speed tab:
- Set upload limits to avoid saturating your connection
- Schedule lower speeds during peak hours
BitTorrent tab:
- Enable DHT, PeX, and Local Peer Discovery for public trackers
- Set seeding ratio limit (e.g., 2.0) to be a good community member
Step 3: Connect qBittorrent to Radarr and Sonarr
In Radarr
- Settings → Download Clients → Add
- Select qBittorrent
- Host:
qbittorrent(Docker service name) - Port:
8080 - Username / Password: your qBittorrent credentials
- Category:
radarr(qBittorrent will create this category automatically) - Test → Save
In Sonarr
Same steps, use category sonarr.
Using separate categories lets you apply different rules (seeding limits, paths) per app.
Step 4: Configure Root Folders and Import
Radarr root folder
Settings → Media Management → Root Folders → Add /movies
When a download completes, Radarr:
- Detects the completed file in
/downloads - Renames it according to your naming format
- Moves (hardlinks) it to
/movies/Movie Name (Year)/ - Triggers a Jellyfin library scan
Enable hardlinks (critical for storage efficiency)
Hardlinks let the file exist in both /downloads (for seeding) and /movies (for Jellyfin) without using double the disk space.
This only works if /downloads and /movies are on the same filesystem. This is why the Docker volume mapping must be consistent across all containers.
Step 5: Connect Radarr/Sonarr to Jellyfin
After import, trigger an automatic Jellyfin library scan:
In Radarr
- Settings → Connect → Add Connection → Jellyfin
- Host:
jellyfin, Port:8096 - API Key: from Jellyfin Dashboard → API Keys
- Select which libraries to refresh
- Save
Now when Radarr imports a movie, Jellyfin automatically scans and adds it - no manual refresh needed.
Naming Conventions
Jellyfin requires specific naming for correct metadata matching:
Movies:
/movies/Movie Name (2024)/Movie Name (2024).mkv
TV Shows:
/tv/Show Name/Season 01/Show Name - S01E01 - Episode Title.mkv
Radarr and Sonarr handle renaming automatically - configure the format in Settings → Media Management → Naming.
Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
| Radarr can't move files | Permission mismatch (PUID/PGID) | Ensure all containers use same PUID/PGID |
| Hardlinks not working | Different filesystems | Map /downloads and /movies to same volume |
| qBittorrent not reachable | Wrong hostname | Use Docker service name, not localhost |
| Jellyfin not updating | Notification not configured | Add Jellyfin connection in Radarr/Sonarr |
| Downloads stuck | Port blocked by ISP | Change listening port or use VPN |
Monitor Your Download Activity
Once your stack is running, new content appears in Jellyfin automatically. But you still want to know:
- When new content is available for your users
- Whether the server is handling new streams correctly
- If a new download triggered unexpected transcoding
JellyWatch notifies you when new sessions start and shows real-time transcoding status - so you know the moment your users start watching newly imported content.
Your download stack is running - now monitor what your users do with it. Download JellyWatch on Google Play - session monitoring, transcoding alerts, and server health for Jellyfin on Android.
On Emby? Download EmbyWatch on Google Play - the same monitoring experience for Emby servers.




Comments
No comments yet. Be the first to share your thoughts.
Leave a comment