Media Stack
Set up a complete self-hosted media server — Jellyfin, Sonarr, Radarr, Prowlarr, qBittorrent, and Overseerr — in one conversation.
The media stack is Talome's most popular use case. One message replaces a weekend of manual setup: installing six apps, configuring their APIs, wiring download clients, syncing indexers, mapping volumes, and verifying health. The AI does all of it in under two minutes.
Watch: Setting up a full media stack in one conversation
The Stack Explained
A self-hosted media server is a pipeline. Each app handles one stage:
| App | Role | What It Does |
|---|---|---|
| Jellyfin or Plex | Media server | Streams your library to any device. Jellyfin is fully open-source; Plex has a free tier with optional premium features. |
| Sonarr | TV management | Monitors TV shows, searches for episodes, manages quality profiles, renames files |
| Radarr | Movie management | Same as Sonarr, but for movies. Separate app because movies and TV have different release patterns. |
| Prowlarr | Indexer manager | Centralizes your search sources (indexers). Configure indexers once in Prowlarr, sync to all *arr apps. |
| qBittorrent | Download client | Handles the actual file transfers. Sonarr/Radarr tell it what to download; it reports back when done. |
| Overseerr | Request system | A clean web UI for family and friends to request movies and TV shows. Requests flow to Sonarr/Radarr automatically. |
One-Message Setup
The fastest path from nothing to a working media server:
I will install Jellyfin, Sonarr, Radarr, Prowlarr, and qBittorrent, then wire everything together.
All five apps installed. Now wiring them together.
Your media stack is running. Jellyfin at :8096, Sonarr at :8989, Radarr at :7878, Prowlarr at :9696, qBittorrent at :8080. Configuration complete: Sonarr and Radarr use qBittorrent as download client, root folders at /mnt/media/TV and /mnt/media/Movies, indexers synced from Prowlarr, Jellyfin pointed at /mnt/media for library scanning. Next step: add indexers in Prowlarr, then try "Search for Inception" to test the pipeline.
That's it. Five apps installed, APIs wired, volumes mapped, health verified. The AI remembered your media path from the conversation (and stored it as a memory for future use).
Volume Configuration
Media apps need to see the same files. The key is mapping your host media directory into every container that needs it.
Common Directory Structures
Linux (typical NAS mount):
/mnt/media/
├── Movies/
├── TV/
├── Music/
├── Downloads/
│ ├── complete/
│ └── incomplete/
└── Books/macOS:
/Volumes/Media Vault/Media/
├── Movies/
├── TV Shows/
├── Downloads/
└── Music/How Volumes Map
When the AI installs an app with volumeMounts, it maps your host directory into the container:
| App | Host Path | Container Path | Why |
|---|---|---|---|
| Jellyfin | /mnt/media | /media | Scans and streams the full library |
| Sonarr | /mnt/media | /media | Moves completed TV episodes to /media/TV |
| Radarr | /mnt/media | /media | Moves completed movies to /media/Movies |
| qBittorrent | /mnt/media/Downloads | /downloads | Stores downloads here; *arr apps hardlink or move from here |
The critical rule: Sonarr/Radarr and qBittorrent must see the same filesystem for hardlinks to work. If Sonarr's /media and qBittorrent's /downloads are on the same host mount, file moves are instant (hardlink) instead of slow copies.
Fixing Volumes After Install
If you installed apps without specifying media paths:
Jellyfin currently has no media mount — only config and cache volumes. Adding your media drive now.
Done. Jellyfin now has two libraries:
- Movies → /Volumes/Media Vault/Media/Movies
- TV Shows → /Volumes/Media Vault/Media/TV Shows
Library scan started — it'll find your existing files automatically.
Step-by-Step (Manual Control)
If you prefer installing and configuring each app individually, the AI supports that too.
1. Install the Media Server
The AI installs Jellyfin, maps your media volume, creates libraries for Movies and TV, and triggers an initial scan.
2. Install Sonarr and Radarr
Both apps install with the correct volume mapping. The AI creates root folders pointing to /mnt/media/TV and /mnt/media/Movies.
3. Install Prowlarr
Prowlarr installs. After you add indexers in Prowlarr's web UI, the AI syncs them to your *arr apps using arr_sync_indexers_from_prowlarr.
4. Install qBittorrent
qBittorrent installs with downloads mapped to your media drive. The AI calls arr_add_download_client for both Sonarr and Radarr, pointing them at qBittorrent's API.
5. Wire Everything
If you installed apps separately and need to connect them:
The wire_apps tool auto-discovers installed media apps and configures their connections — download clients, root folders, and indexer sync.
Adding Overseerr
Once your core stack is running, Overseerr adds a clean request interface:
Overseerr is running at http://localhost:5055 and connected to:
- Jellyfin (user authentication + media availability checks)
- Sonarr (TV requests → HD-1080p profile → /mnt/media/TV)
- Radarr (movie requests → HD-1080p profile → /mnt/media/Movies)
Share the Overseerr URL with family and friends. When they request a movie, it flows automatically: Overseerr → Radarr → Prowlarr → qBittorrent → Jellyfin
Media Optimization
Talome includes a built-in media optimizer — 9 dedicated tools for analyzing and transcoding your library.
Scanning for Opportunities
Scanned 847 movies. Found 23 optimization candidates:
- 12 HEVC files that could be transcoded to H.264 for wider device compatibility
- 8 files with oversized bitrates (>20 Mbps for 1080p content)
- 3 files with missing audio tracks (no English audio)
Estimated space savings: 41 GB. Want me to queue these for optimization?
Transcoding
Queued 8 files for optimization:
- Target: reduce bitrate to 12 Mbps (visually lossless for 1080p)
- Estimated time: 2 hours 15 minutes
- Estimated savings: 28 GB
Progress is tracked in real-time. Check back with "How's the optimization going?" or I'll notify you when it's done.
Diagnosing Failures
3 jobs failed:
| File | Error | Fix |
|---|---|---|
| Interstellar.mkv | Out of disk space | Need 4.2 GB free in temp dir |
| Dune.mkv | Codec not supported | Source uses DV Profile 5 — skip |
| Matrix.mkv | Process killed | Ran out of memory during encode |
I can reprocess the first and third after freeing space. Dune uses Dolby Vision Profile 5 which doesn't transcode cleanly — I'd recommend keeping it as-is.
Common Conversations
Searching and Adding Media
Monitoring Downloads
Library Management
Quality and Profiles
Cleanup and Maintenance
Overseerr Requests
Troubleshooting
Indexers Not Working
Sonarr has 0 indexers. Prowlarr has 3 indexers but they haven't been synced to Sonarr yet.
Fixed. Sonarr now has 3 indexers. Try searching again.
qBittorrent Connection Failed
The download client is configured with host "localhost:8080" but containers can't reach each other via localhost. The correct host is the container name on the Docker network.
Connection test passed. Sonarr can now reach qBittorrent at qbittorrent:8080 on the Docker network.
Volume Mount Issues
Found the issue. Jellyfin has a "Movies" library pointing to /movies inside the container, but the volume mount maps your host /mnt/media to /media. The library path doesn't match the mount.
Created a new library with the correct path. The old empty library can be removed from Jellyfin's dashboard.
Scan started — your movies should appear within a few minutes.
Prowlarr Sync Failures
Prowlarr can't reach Radarr. They're on different Docker networks.
Connected Prowlarr to the media network. Syncing now:
Success — 3 indexers synced to Radarr.