Plex Hardware-Transcoding mit Intel Arc A310 im Proxmox-LXC
Ein großes Remux buffert in Plex alle paar Minuten, obwohl dein Server sich eigentlich langweilt? Dann lohnt sich ein Blick auf zwei Dinge: die Netzwerkanbindung deines Proxmox-Nodes und das Transcoding. In diesem Guide zeige ich dir, wie du Plex und andere Media-Container auf einen schnelleren Node umziehst und Hardware-Transcoding mit einer Intel Arc A310* im LXC einrichtest, inklusive der Stellen, an denen Proxmox sich querstellt. Bei mir läuft Plex seitdem genau so.
Kurz erklärt
- Transcoding heißt, Plex wandelt ein Video beim Abspielen in ein anderes Format oder eine niedrigere Qualität um. Mit Hardware-Transcoding übernimmt das die GPU statt der CPU.
- LXC ist ein schlanker Container in Proxmox. Damit Plex darin die GPU nutzen kann, musst du das Device der Karte in den Container durchreichen.
- Liegen deine Medien auf einem NAS, bremst oft die Netzwerkanbindung des Nodes. Dann hilft der Umzug auf einen schneller angebundenen Node.
- Der Guide ist für dich, wenn Plex in einem LXC auf Proxmox läuft und du eine Intel Arc für Hardware-Transcoding nutzen willst.
Das brauchst du
- Einen Proxmox-Node mit einer GPU, bei mir eine Intel Arc A310 als PCIe-Karte. Für den Umzug brauchst du einen zweiten Node im selben Cluster.
- Root-Zugriff auf die Proxmox-Shell, weil du dort
pctundvzdumpausführst. - Für den einfachen Weg über Device Passthrough (
dev0) Proxmox VE 8.2 oder neuer. Auf älteren Versionen nimmst du Variante 2 weiter unten. - Plex Media Server in einem LXC, bei mir als normale Linux-Installation. Liegen die Medien auf einem NAS, sollte es auf jedem Node unter demselben Pfad gemountet sein.
- Einen aktiven Plex Pass, denn Hardware-Transcoding ist in Plex ein Plex-Pass-Feature.
Ursache finden: Warum das Remux buffert
Prüf zuerst, wie dein Plex-Host angebunden ist. In meinem Setup besteht der Proxmox-Cluster in Frankreich aus zwei Nodes: einem Minisforum MS-01* und einem Minisforum MS-A2* mit Ryzen 9 9955HX. Die Medien liegen auf einem NAS, einem UniFi UNAS Pro*, und sind per SMB in die Container gemountet. Plex und die restlichen Media-Container liefen damals auf dem MS-01.
Der MS-01 hat zwar SFP+-Ports, die waren bei mir aber ungenutzt, weil am Switch kein SFP+-Port mehr frei war. Er hing also nur mit 1 GbE im Netz. Genau in dem Moment, in dem ich das Remux schauen wollte, lief ein Subtitle-Sync-Job, der ein 82 GB großes Remux eingelesen hat. Der hat den 1-GbE-Link komplett ausgelastet, und für Plex blieb fast nichts übrig. Achte also darauf, welche anderen Jobs gleichzeitig vom NAS lesen.
Der MS-A2 ist dagegen per 10 GbE über ein SFP+-DAC-Kabel* angebunden. Nach dem Umzug ging der NAS-Lesedurchsatz in Plex bei mir von etwa 9,5 MB/s auf etwa 414 MB/s hoch.
Schritt 1: Container zwischen Proxmox-Nodes umziehen
Schreib vor dem Umzug von jedem Container ein vzdump-Backup aufs NAS. Wenn bei der Migration etwas schiefgeht, ist der Container damit in ein paar Minuten wieder da:
vzdump <id> --storage <nas-storage>
Die erste Hürde ist der NAS-Mount. Proxmox weigert sich, einen Container mit Bind-Mount zu migrieren, weil es nicht weiß, ob der Pfad auf dem Ziel-Node überhaupt existiert. Mit shared=1 am Mount Point sagst du Proxmox, dass der Pfad auf allen Nodes gleich verfügbar ist:
pct set <id> -mp0 /mnt/nas/media,mp=/media,shared=1
Das stimmt natürlich nur, wenn das NAS auf dem Ziel-Node wirklich unter demselben Pfad gemountet ist. Prüf das vorher, sonst startet der Container drüben ohne Medien.
Die zweite Hürde: Eine Restart-Migration, bei der Proxmox den Container selbst stoppt und auf dem Ziel wieder startet, hat Proxmox bei mir abgelehnt. Migrier in dem Fall offline. Container stoppen, dann:
pct shutdown <id>
pct migrate <id> <ziel-node>
pct start <id>
Den letzten Befehl führst du auf dem Ziel-Node aus oder startest den Container dort im Web-UI. Mein Tipp: Leg die IPs per DHCP-Reservierung auf die MAC-Adresse fest. Die MAC bleibt bei der Migration gleich, also behalten die Container ihre IPs. Bei mir musste ich deshalb am Reverse Proxy und in den Apps nichts anfassen.

Schritt 2: Die Arc A310 in den LXC durchreichen
Im MS-A2 steckt bei mir eine Intel Arc A310 als PCIe-Karte. Plex braucht für Hardware-Transcoding nur den Render-Node der Karte, bei mir /dev/dri/renderD128. Welcher es bei dir ist, siehst du auf dem Host mit:
ls -l /dev/dri/
ls -l /dev/dri/by-path/
Unter by-path stehen die PCI-Adressen neben den Device-Namen. Das hilft, wenn mehrere GPUs im System sind.
Variante 1: dev0 in neueren Proxmox-Versionen
Ab Proxmox VE 8.2 kann Proxmox Devices direkt durchreichen. Das machst du im Web-UI unter Ressourcen → Hinzufügen → Device Passthrough oder per CLI:
pct set <id> -dev0 /dev/dri/renderD128,gid=<render-gid>
Die gid ist die ID der Gruppe render im Container, die du dort mit getent group render nachschaust. Der Plex-User muss in dieser Gruppe sein. Bei unprivilegierten Containern ist das der einfachste Weg, weil Proxmox sich um die Rechte kümmert.
Variante 2: cgroup und Mount-Entry
Der klassische Weg, der auch auf älteren Versionen läuft, sind zwei Zeilen in /etc/pve/lxc/<id>.conf:
lxc.cgroup2.devices.allow: c 226:* rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
Die erste Zeile erlaubt dem Container Zugriff auf alle Character Devices mit Major-Nummer 226, das sind die DRM-Devices unter /dev/dri. Die zweite mountet den Ordner in den Container. Bei unprivilegierten Containern musst du hier zusätzlich dafür sorgen, dass die Rechte auf dem Device passen. Mein Tipp: Nimm deshalb lieber dev0, wenn deine Proxmox-Version es kann.
Nach einem Neustart des Containers sollte ls -l /dev/dri im Container den Render-Node zeigen.
Schritt 3: Plex die richtige GPU geben
Für Hardware-Transcoding in Plex brauchst du einen Plex Pass. Mit Plex Pass aktivierst du in den Transcoder-Einstellungen die Hardwarebeschleunigung.
Sind mehrere GPUs im System, entscheidet die Einstellung HardwareDevicePath in der Preferences.xml, welches Device Plex nimmt. Die Datei liegt bei einer normalen Linux-Installation hier:
/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Preferences.xml
Stopp Plex, bevor du sie bearbeitest, sonst überschreibt Plex deine Änderung beim Beenden. Und mach vorher eine Kopie:
systemctl stop plexmediaserver
cp "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Preferences.xml" /root/Preferences.xml.bak
Im <Preferences …>-Tag ergänzt oder änderst du das Attribut. Bei mir steht dort die PCI-ID der Arc:
HardwareDevicePath="8086:56a6:172f:4019@0000:0a:00.0"
Vor dem @ stehen Vendor-ID, Device-ID und die beiden Subsystem-IDs, dahinter die PCI-Adresse. Achtung, hier lag mein Fehler: Ich hatte nur 8086:56a6@0000:0a:00.0 eingetragen, ohne Subsystem-IDs. Plex hat den Wert nicht erkannt und ist ohne Meldung auf „Auto“ zurückgefallen. Aufgefallen ist mir das erst Tage später in der Weboberfläche. Sicherer ist deshalb der Weg über Plex selbst: Settings, dann Transcoder, dann „Hardware transcoding device“. Dort steht die Arc mit vollem Namen in der Liste, und Plex schreibt den Wert im richtigen Format. Die PCI-Adresse deiner Karte findest du auf dem Host mit:
lspci -Dnn | grep -iE "vga|display"
Danach startest du Plex wieder mit systemctl start plexmediaserver.

So prüfst du, ob die GPU wirklich arbeitet
Starte einen Film und erzwinge in der App eine niedrigere Qualität, damit Plex transcodieren muss. Im Plex-Dashboard steht bei der laufenden Session dann ein „(hw)“ hinter dem Transcode. Fehlt das, transcodiert Plex auf der CPU, und meistens stimmen dann die Rechte auf dem Render-Node im Container nicht.
Bei mir läuft Plex seit dem Umzug auf dem MS-A2 mit der A310 und liest mit etwa 414 MB/s vom NAS.
Läuft dein Plex mit einer anderen GPU im LXC? Schreib dein Setup in die Kommentare.
* Affiliate-Link: Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Für dich ändert sich am Preis nichts. Mehr dazu
Hat dir der Guide geholfen? Dann spendier mir gern einen Kaffee auf Ko-fi. Damit bleibt MappleBox werbefrei.