Media-VM (Jellyfin/Arr Stack)
The Media-VM handles automated media acquisition and streaming.
Role: Automated Media Acquisition & Streaming
VM ID: 111 (configured as 200 in guide) | IP: <MEDIA_IP>
OS: Debian 12 (Optimized Netinst)
1. Primary Hardware Allocation
Virtual Machine resource specifications:
| Component | Specification | Description |
|---|---|---|
| vCPU | 4 Cores | High priority for transcoding |
| RAM | 3072 MB | Ballooning Disabled |
| Storage (OS) | 32 GB | Bus: SCSI / Discard Enabled |
| Storage (Data) | 6TB External HDD | Mounted via VirtIO-FS (media) |
| Network | VirtIO Bridge | Static IPv4: <MEDIA_IP>/24 |
| GPU | Intel UHD Graphics | Full PCI Passthrough (00:02.0) |
2. Base Operating System Setup
Initial Installation
- Install Debian 12 Minimal (Standard system utilities + SSH server only).
- Perform system update and install core dependencies:
apt update && apt upgrade -y
apt install -y curl ca-certificates gnupg2 sudo vainfo intel-media-va-driver
# Grant administrative privileges
usermod -aG sudo <USER>
3. Storage Architecture
6TB External HDD Passthrough
Proxmox host configuration for mounting the external drive:
- Identify the drive ID on the Proxmox host.
- Attach the disk to the VM:
VM-Level Mounting
Configure /etc/fstab within the Media-VM for persistent mounting:
4. GPU Passthrough and Hardware Acceleration
Intel QuickSync (QSV) is utilized for hardware-accelerated transcoding.
Proxmox Host Preparation
- Enable IOMMU in
/etc/default/grub. - Add kernel modules to
/etc/modules:
VM Hardware Configuration
- Add "PCI Device" in the Proxmox VM Hardware tab.
- Select the Intel Graphics Controller (00:02.0).
- Enable All Functions, ROM-Bar, and PCI-Express.
5. Application Stack Deployment
Docker Compose is utilized to orchestrate the media stack.
Stack Components
- Jellyfin: Media server and streaming interface.
- Prowlarr: Indexer management.
- Sonarr/Radarr: Automated series and movie acquisition.
- Transmission: Download client.
Hardware Acceleration (Jellyfin)
The GPU device must be mapped in the Jellyfin service configuration:
6. Integration and Reverse Proxy
Traffic routing is managed via Nginx Proxy Manager:
- Map upstream to
http://<MEDIA_IP>:8096(Jellyfin) and respective ports for the Arr stack. - Internal resolution is handled by AdGuard Home DNS rewrites.