Media & Streaming¶
The media stack is designed for seamless, high-performance streaming across the Tailscale network.
๐๏ธ Jellyfin¶
Jellyfin is the centerpiece of the media stack, providing an open-source, private alternative to Plex or Emby.
- Storage: Media is mounted from a dedicated storage volume (
/Volumes/homelab/streaming/media). - Transcoding: Configured to use hardware acceleration (where available) to support multiple remote streams.
- Client Support: Fully accessible via Jellyfin apps on iOS, Android, and Smart TVs over the Tailscale tunnel.
- Access: jellyfin.ts.debdut.in
๐ฌ Servarr Stack¶
The Servarr ecosystem automates the entire media lifecycle.
| Service | Role |
|---|---|
| Sonarr | Automated TV show management and tracking. |
| Radarr | Automated movie management and tracking. |
| Prowlarr | Centralized indexer manager for Sonarr and Radarr. |
| qBittorrent | High-performance BitTorrent client with WebUI. |
| Recyclarr | Syncs quality profiles from TRaSH Guides. |
| FlareSolverr | Cloudflare bypass proxy for Prowlarr indexers. |
| Autoheal | Automatically restarts unhealthy containers. |
โ๏ธ Post-Import Pipeline¶
A custom post_import.py script runs automatically after Sonarr/Radarr imports media:
- Conversion: Remuxes MKV to MP4. Incompatible audio codecs (DTS, Opus) are transcoded to AAC stereo for universal device support.
- ๐ iPad Validation: Verifies the converted file has compatible codecs (H.264/H.265 video, AAC audio) and passes an integrity check.
- ๐งน Torrent Cleanup: On successful validation, removes the torrent and download files from qBittorrent via API.
- ๐ฒ Telegram Notification: Sends a success or failure notification via Bridge โ Apprise โ Telegram.
Manual Cleanup¶
To validate all imported media and clean up completed torrents in bulk:
๐ Network Security¶
No ports are exposed on the host for Sonarr, Radarr, Prowlarr, FlareSolverr, or the qBittorrent WebUI. All access is through Nginx Proxy Manager. Only qBittorrent's torrent port (6882) is exposed for peer connections.