Skip to content

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

  1. Install Debian 12 Minimal (Standard system utilities + SSH server only).
  2. 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:

  1. Identify the drive ID on the Proxmox host.
  2. Attach the disk to the VM:
qm set 111 -scsi1 /dev/disk/by-id/usb-ST6000NM_0024-1HT17Z_...

VM-Level Mounting

Configure /etc/fstab within the Media-VM for persistent mounting:

# Identifier   Mountpoint   Type     Options
/dev/sdb1      /mnt/media   ext4     defaults,noatime 0 2

4. GPU Passthrough and Hardware Acceleration

Intel QuickSync (QSV) is utilized for hardware-accelerated transcoding.

Proxmox Host Preparation

  1. Enable IOMMU in /etc/default/grub.
  2. Add kernel modules to /etc/modules:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

VM Hardware Configuration

  1. Add "PCI Device" in the Proxmox VM Hardware tab.
  2. Select the Intel Graphics Controller (00:02.0).
  3. 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:

devices:
  - /dev/dri/renderD128:/dev/dri/renderD128
  - /dev/dri/card0:/dev/dri/card0

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.