Last updated Jul 1, 2026
What this stack does#
This stack handles everything from requesting a movie or show to downloading, organizing, and streaming it, with no manual steps between request and playback. Every service runs locally on a Proxmox host.
For a practical comparison with Netflix and a high-level overview of why this setup works, read the blog post.
Services#
| Service | Role |
|---|---|
| Plex or Jellyfin | Streams media to any device |
| Seerr | Web UI where you (or others) request movies and shows |
| Sonarr | Manages TV shows: monitors, downloads, and organizes episodes |
| Radarr | Same as Sonarr, but for movies |
| Prowlarr | Manages Usenet indexers and syncs them to Sonarr and Radarr |
| SABnzbd | The download client: receives NZBs, downloads from Usenet, and unpacks them |
Not sure whether to use Plex or Jellyfin? See the Media Automation Guide for a side-by-side comparison.
How it's deployed#
Plex or Jellyfin runs in its own dedicated LXC container on Proxmox. This gives the media server direct access to ZFS storage via bind mount (no NFS overhead) and makes GPU passthrough easier to configure than inside a VM.
Everything else — Sonarr, Radarr, Prowlarr, SABnzbd, and Seerr — runs as Docker containers inside a VM on the same Proxmox host, regardless of which media server you choose.
Media storage is a ZFS pool (tank) mounted into the media server LXC via bind mount, and into the Docker VM via NFS.
Downloads land on a separate path (/mnt/downloads), also mounted into the Docker VM. Sonarr and Radarr import files from there into the final media directories once a download completes.
What this is not#
- Not a cloud setup. Everything runs locally on your Proxmox server.
- Not BitTorrent. The stack is built around Usenet (NZB).
- Not a Proxmox management guide. The host is assumed to be already running.