Ce document résume la configuration du GPU AMD Radeon RX 6700 XT sur le serveur Proxmox VE et son exposition à plusieurs conteneurs LXC :
- Ollama LXC (CT
21211434) – IA / LLM avec ROCm + Vulkan - Plex LXC (CT
20232400) – transcodage vidéo matériel via VAAPI - Jellyfin LXC (CT
20308096) – transcodage vidéo matériel via VAAPI - ComfyUI LXC (CT
21608188) – VAAPI fonctionnel (ROCm/PyTorch pour Stable Diff non couvert ici)
⚠️ Important
- Ce README couvre l’exposition du GPU et les tests VAAPI/ROCm à l’intérieur des conteneurs.
- La configuration applicative détaillée (UI Plex/Jellyfin/ComfyUI, modèles Ollama, workflows ComfyUI, etc.) n’est pas décrite ici.
- Pour ComfyUI, seule la partie VAAPI est validée. La stack ROCm + PyTorch pour Stable Diff sera documentée séparément.
- Proxmox VE 8.x avec noyau :
uname -a
Linux pve 6.8.12-16-pve ...- GPU AMD visible :
lspci -nnk | grep -A2 'VGA compatible controller'
# ... AMD Radeon RX 6700 XT ...
# Kernel driver in use: amdgpu- Périphériques GPU sur l’hôte :
ls -l /dev/kfd /dev/dri
crw-rw---- 1 root render 234, 0 ... /dev/kfd
total 0
drwxr-xr-x 2 root root 80 ... by-path
crw-rw---- 1 root video 226, 0 ... card0
crw-rw---- 1 root render 226, 128 ... renderD128grep -w 'video\|render' /etc/group
video:x:44:
render:x:993:Ces GIDs sont réutilisés dans les configs LXC pour mapper correctement les droits sur les devices.
Pour tous les conteneurs utilisant le GPU :
-
**Ne pas utiliser
pct restart**Toujours faire :pct stop <CTID> pct start <CTID>
-
LXC en mode unprivileged (
unprivileged: 1) quand c’est supporté par le template (c’est le cas ici pour Ollama & ComfyUI). -
Exposition du GPU via
devX:dans la conf LXC, en réutilisant les GID de l’hôte :/dev/dri/renderD128→ GID 44 (groupevideo)/dev/kfd→ GID 993 (grouperendersur l’hôte /kvmou équivalent dans le LXC)
# ROCm / AMD GPU pour Ollama
arch: amd64
cmode: shell
cores: 8
memory: 32768
swap: 0
hostname: ollama-lxc
ostype: ubuntu
unprivileged: 1
nameserver: 192.168.1.3
searchdomain: z-server.me
net0: name=eth0,bridge=vmbr0,gw=192.168.1.1,hwaddr=BC:24:11:3D:C3:0A,ip=192.168.1.212/24,ip6=auto,type=veth
rootfs: vm-docker:vm-21211434-disk-0,size=200G
startup: order=15
tags: community-script;linux;lxc;marechal;remote;server;ssh;webserver
# GPU
dev0: /dev/kfd,gid=993,uid=0
dev1: /dev/dri/renderD128,gid=44💡 Ici, on n’utilise pas de
lxc.mount.entrypour/dev/dri, uniquement les lignesdev0/dev1.
Ollama LXC est basé sur Ubuntu 24.04, avec ROCm 6.2.4 :
# Dans le CT 21211434
rocminfo | grep -i gfx | head
# Name: gfx1030
# amdgcn-amd-amdhsa--gfx1030Variables globales pour le GPU :
cat <<'EOF' >> /etc/environment
HSA_OVERRIDE_GFX_VERSION=10.3.0
ROCR_VISIBLE_DEVICES=0
EOFPuis installation d’Ollama via le script officiel :
curl -fsSL https://ollama.com/install.sh | shOverride systemd :
mkdir -p /etc/systemd/system/ollama.service.d
cat <<'EOF' >/etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_VULKAN=1"
Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0"
Environment="ROCR_VISIBLE_DEVICES=0"
EOF
systemctl daemon-reload
systemctl restart ollama- GPU détecté par ROCm :
rocminfo | grep -i gfx | head
# gfx1030 ...- Journal Ollama, détection ROCm :
journalctl -u ollama -n 40 --no-pager | grep -E 'inference compute|ROCm0'
# inference compute id=0 library=ROCm compute=gfx1030 name=ROCm0 description="AMD Radeon RX 6700 XT" ...Ollama utilise alors le GPU via ROCm/Vulkan.
# Plex LXC – GPU AMD pour VAAPI
arch: amd64
cmode: shell
cores: 12
memory: 4096
swap: 2048
hostname: plex
ostype: ubuntu
unprivileged: 1
nameserver: 192.168.1.3
searchdomain: z-server.me
net0: name=eth0,bridge=vmbr0,gw=192.168.1.1,hwaddr=BC:24:11:2C:BF:A3,ip=192.168.1.202/24,type=veth
rootfs: vm-docker:vm-20232400-disk-0,size=300G
startup: order=4
tags: community-script;linux;lxc;marechal;media;server;share;ssh;webserver
# GPU VAAPI
dev0: /dev/dri/renderD128,gid=44
lxc.cgroup2.devices.allow: c 226:* rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dirgrep -w 'video\|render' /etc/group
# video:x:44:plex
# render:x:118:plexVérifier que l’utilisateur
plexest bien dansvideoetrender.
apt update
apt install -y vainfo mesa-va-drivers ffmpeg
export LIBVA_DRIVER_NAME=radeonsi
vainfo | egrep 'Driver version|VAProfile'
# Driver version: Mesa Gallium ... for AMD Radeon RX 6700 XT ...
# VAProfileH264* / HEVC* / VP9* / AV1* ...Test d’encodage matériel :
ffmpeg -v verbose \
-init_hw_device vaapi=va:/dev/dri/renderD128 \
-filter_hw_device va \
-f lavfi -i testsrc2=size=1920x1080:rate=30 \
-t 5 \
-vf 'format=nv12,hwupload' \
-c:v h264_vaapi \
-f null -Si le test passe, VAAPI est fonctionnel pour Plex (à activer ensuite dans l’UI Plex).
# Jellyfin LXC – GPU AMD pour VAAPI
arch: amd64
cmode: shell
cores: 12
memory: 6144
swap: 2048
hostname: jellyfin
ostype: ubuntu
unprivileged: 1
nameserver: 192.168.1.3
searchdomain: z-server.me
net0: name=eth0,bridge=vmbr0,gw=192.168.1.1,hwaddr=BC:24:11:E7:9C:CC,ip=192.168.1.203/24,type=veth
rootfs: vm-docker:vm-20308096-disk-0,size=100G
startup: order=5
tags: community-script;linux;lxc;marechal;media;server;share;ssh;webserver
# GPU VAAPI
lxc.cgroup2.devices.allow: c 226:* rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir(Ici on n’utilise que /dev/dri pour VAAPI, pas /dev/kfd.)
grep -w 'video\|render' /etc/group
# video:x:44:jellyfin
# render:x:104:jellyfinMême principe que Plex :
apt update
apt install -y vainfo mesa-va-drivers ffmpeg
export LIBVA_DRIVER_NAME=radeonsi
vainfo | egrep 'Driver version|VAProfile'
ffmpeg -v verbose \
-init_hw_device vaapi=va:/dev/dri/renderD128 \
-filter_hw_device va \
-f lavfi -i testsrc2=size=1920x1080:rate=30 \
-t 5 \
-vf 'format=nv12,hwupload' \
-c:v h264_vaapi \
-f null -Une fois validé, on active VAAPI dans l’UI Jellyfin (section Lecture / Transcodage).
# ComfyUI LXC – GPU AMD (VAAPI)
arch: amd64
cmode: shell
cores: 4
memory: 32768
swap: 512
hostname: comfyui
ostype: debian
unprivileged: 1
nameserver: 192.168.1.3
searchdomain: z-server.me
net0: name=eth0,bridge=vmbr0,gw=192.168.1.1,hwaddr=BC:24:11:40:40:37,ip=192.168.1.216/24,type=veth
rootfs: vm-docker:vm-21608188-disk-0,size=100G
startup: order=15
tags: ai;community-script
# GPU
dev0: /dev/kfd,gid=993,uid=0
dev1: /dev/dri/renderD128,gid=44On réplique ici le même principe que pour Ollama (ROCm possible plus tard), mais on valide surtout VAAPI.
ls -l /dev/kfd /dev/dri/renderD128
# /dev/dri/renderD128 → root video
# /dev/kfd → root kvm (ou groupe équivalent)
grep -w 'video\|render' /etc/group
# video:x:44:root
# render:x:992:rootapt update
apt install -y vainfo mesa-va-drivers mesa-vulkan-drivers ffmpeg
export LIBVA_DRIVER_NAME=radeonsi
vainfo --display drm --device /dev/dri/renderD128 \
| egrep 'Driver version|VAProfile'
# Driver version: Mesa Gallium driver 25.0.7-2 for AMD Radeon RX 6700 XT ...Test encode :
ffmpeg -v verbose \
-init_hw_device vaapi=va:/dev/dri/renderD128 \
-filter_hw_device va \
-f lavfi -i testsrc2=size=1920x1080:rate=30 \
-t 5 \
-vf 'format=nv12,hwupload' \
-c:v h264_vaapi \
-f null -Si ce test passe, l’accélération VAAPI fonctionne et ComfyUI peut en tirer parti pour certaines opérations vidéo (selon les nodes utilisés).
| CT | Service | OS | GPU exposé | Usage principal | Test de validation |
|---|---|---|---|---|---|
| 21211434 | Ollama | Ubuntu | /dev/kfd + renderD128 |
LLM via ROCm/Vulkan | rocminfo, journalctl -u ollama |
| 20232400 | Plex | Ubuntu | /dev/dri (VAAPI) |
Transcodage vidéo | vainfo + ffmpeg h264_vaapi |
| 20308096 | Jellyfin | Ubuntu | /dev/dri (VAAPI) |
Transcodage vidéo | vainfo + ffmpeg h264_vaapi |
| 21608188 | ComfyUI | Debian | /dev/kfd + renderD128 |
IA / vidéo (VAAPI ok) | vainfo + ffmpeg h264_vaapi |
Ce README sert de référence unique pour l’exposition du GPU AMD RX 6700 XT aux conteneurs LXC sur Proxmox VE. Toute nouvelle LXC GPU (autre service) pourra se baser sur ces modèles de configuration.