Wer keine dedizierte GPU für Jellyfin nutzen möchte, kann mit den LXC Containern von Proxmox die Host Grafikkarte verwenden. Das hat viele Vorteile, Intel-Grafikkarten sind die empfohlenen Grafikkarten von/für Jellyfin und bei den Minisforum PCs eine recht potente Grafikkarte mit an Board. Somit wird eine dedizierte Grafikkarte überflüssig.
Hardware
- Minis Forum Mini-PC NAB6
- Intel Core i7-12650H-Prozessor
Vorbereitung
Damit Proxmox und der LXC Container die Hardwarebeschleunigung nutzen können, müssen die Intel Treiber auf dem Proxmox Host installiert werden.
dgpu-docs.intel.com/driver/client/overview.html
- Intel Repo auf dem Host hinzufügen
wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | \
sudo gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg
echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu jammy client" | \
sudo tee /etc/apt/sources.list.d/intel-gpu-jammy.list
sudo apt update
- Benötigte Pakete installieren
apt install -y \
intel-opencl-icd intel-level-zero-gpu level-zero \
intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 \
libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri \
libglapi-mesa libgles2-mesa-dev libglx-mesa0 libigdgmm12 libxatracker2 mesa-va-drivers \
mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all vainfo hwinfo clinfo
- Nun lassen wir uns den Render auf dem Promxox Host auflisten.
ls - /dev/dri
# Ausgabe
drwxr-xr-x 2 root root 80 Dec 30 13:37 by-path
crw-rw---- 1 root video 226, 0 Dec 30 13:37 card0
crw-rw---- 1 root render 226, 128 Dec 30 13:37 renderD128
Den Render “226” können wir nun an den LXC Container durchreichen.
- LXC Container erstellen
Wir erstellen eine neuen LXC Container mit Ubuntu und installieren diesen durch. Nun wird die LXC Konfiguration angepasst und die Grafikkarte angegeben.
nano /etc/pve/lxc/112.conf
# Am Ende der Datei einfügen:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
Jellyfin installieren
jellyfin.org/docs/general/installation/linux#repository-automatic
curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash
Einstellungen und Codecs im LXC Container prüfen
Wenn alle Einstellungen durchgeführt wurden, prüfen wir mit den intel-gpu-tools
ob die Grafikkarte richtig erkannt und genutzt wird. Anschließend lassen wir und die unterstützen Codecs für die Hardwarebeschleunigung anzeigen.
Grafikkarte Auslastung prüfen
Das Tool zeigt die Grafikkarte und die Auslastung beim Rendern an.
intel_gpu_top
Falls dieses nicht installiert ist kann es über
apt install intel-gpu-tools
installiert werden.
Proxmox Host während des Rendern
Prüfen welche QSV / VA-API Codecs unterstützt werden
sudo /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128
Die ausgegeben Codecs sollten anschließend in Jellyfin hinterlegt werden.
OpenCL runtime prüfen
sudo /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=va:/dev/dri/renderD128 -init_hw_device opencl@va
Wichtig ist hierbei der Part “function found”, mit dieser Ausgabe ist OpenCL aktiv.
[AVHWDeviceContext @ 0x5623f7ba5ec0] Intel QSV to OpenCL mapping function found (clCreateFromVA_APIMediaSurfaceINTEL).
[AVHWDeviceContext @ 0x5623f7ba5ec0] Intel QSV in OpenCL acquire function found (clEnqueueAcquireVA_APIMediaSurfacesINTEL).
[AVHWDeviceContext @ 0x5623f7ba5ec0] Intel QSV in OpenCL release function found (clEnqueueReleaseVA_APIMediaSurfacesINTEL).
Jellyfin Einstellungen anpassen
Unter: “Einstellungen -> Administration -> Übersicht -> Wiedergabe -> Intel QuickSync (QSV)” aktivieren.
Hardwarebeschleunigung Codecs Einstellen:
Hardwarekodierung, VPP-Tone-Mapping und Tone-Mapping aktiveren
Troubleshooting
- Jellyfin könnte kein Mitglied der Render Gruppe sein
sudo usermod -aG render jellyfin
sudo systemctl restart jellyfin
- Die Render Gruppe ist nicht auf
/dev/dri
gesetzt
chown root:render /dev/dri
- CPU Pinning: Falls nur die Performance Cores der CPU für den Container genutzt werden sollen kann man die CPU Cores festlegen.
# LXC Container Konfiguration anpassen
nano /etc/pve/lxc/112.conf
# In die Datei am Ende einfügen
lxc.cgroup2.cpuset.cpus: 0-5
Quellen und Links
- jellyfin.org/docs/general/administration/hardware-acceleration/intel#configure-on-linux-host
- jellyfin.org/docs/general/installation/linux#repository-automatic
- jocke.no/2022/02/23/plex-gpu-transcoding-in-docker-on-lxc-on-proxmox/
- dgpu-docs.intel.com/driver/client/overview.html
- reddit.com/r/Proxmox/comments/14fzj8l/tutorial_full_igpu_passthrough_for_jellyfin/