Grafikkarte für Home Server

Seit nunmehr als fünf Jahren läuft mein Homeserver größtenteils durchgängig. Unter normalen Umständen wäre ein Hardware-Update denkbar. Leider sind die Preise aufgrund der hohen Nachfrage durch KI-Rechenzentren so stark gestiegen, dass sich dies auf fast alle anderen Hardwarekomponenten auswirkt.

Ich betreibe seit Kurzem eine Jellyfin-Instanz auf meinem Server. Für das Transcoding benötige ich eine Grafikkarte.

Da das Mainboard schon älter ist und das Gehäuse sehr klein ausfällt, kommen nicht viele Karten infrage. Am liebsten hätte ich die NVIDIA Quadro T600 mit 4 GB genommen, aber selbst hier haben sich die Preise nahezu verdoppelt.

Letztendlich ist es die NVIDIA Quadro P400 geworden. Für Full-HD-Transcoding sollte sie ausreichen. 4K ist damit bedauerlicherweise nicht drin.

Der Einbau war aufgrund des geringen Platzes im Gehäuse etwas fummelig. Alles in allem war er aber einfach und schnell erledigt.

Treiber auf dem Host installieren

Zunächst müssen wir den Open-Source-Treiber Nouveau deaktivieren, da dieser kein Hardware-Transcoding über NVENC unterstützt.

Prüfen, ob Nouveau verwendet wird:

lsmod | grep nouveau

Wenn das der Fall ist, muss der Treiber blockiert werden:

echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist-nouveau.conf
update-initramfs -u
reboot

Anschließend installieren wir die benötigten Werkzeuge:

apt update && apt full-upgrade -y
apt install -y pve-headers-$(uname -r) build-essential dkms

Den passenden Treiber heraussuchen:

Hier kann man die Daten der Grafikkarte eingeben. Bei mir wurde dieser Treiber angezeigt.

wget https://de.download.nvidia.com/XFree86/Linux-x86_64/580.196.07/NVIDIA-Linux-x86_64-580.196.07.run
chmod +x NVIDIA-Linux-x86_64-580.196.07.run
./NVIDIA-Linux-x86_64-580.196.07.run

Die erfolgreiche Installation überprüfen:

nvidia-smi

Karte an einen Container durchreichen

Die Grafikkarte wird an den LXC-Container durchgereicht. Dort muss exakt derselbe Treiber installiert werden, allerdings ohne das Kernel-Modul, da sich der Container den Kernel mit dem Proxmox-Host teilt.

vim /etc/pve/lxc/380.conf

Folgende Einträge ergänzen:

lxc.cgroup2.devices.allow: c 195:* rwm
lxc.cgroup2.devices.allow: c 226:* rwm
lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file

Anschließend den Treiber installieren:

wget https://de.download.nvidia.com/XFree86/Linux-x86_64/580.196.07/NVIDIA-Linux-x86_64-580.196.07.run
chmod +x NVIDIA-Linux-x86_64-580.196.07.run
./NVIDIA-Linux-x86_64-580.196.07.run --no-kernel-module