GPU access in LXC relies on Linux group permissions.
Common groups:
video→ legacy DRM access (e.g./dev/dri/card*)render→ render node access
Check group IDs inside the container:
cat /etc/group | egrep 'video|render'Typical values:
video: GID44render: GID104
⚠️ Important
GIDs must match inside the container, not the host.
ls -l /dev/driTypical output:
/dev/dri/cardX→ display node/dev/dri/renderD128→ render node (preferred)
ls -l /sys/class/drm/renderD*/device/driver
ls -l /dev/dri/by-pathlspci | grep -E 'VGA|3D'Edit the container config /etc/pve/lxc/<VMID>.conf, add:
dev0: /dev/dri/card1,gid=44,uid=0
dev1: /dev/dri/renderD128,gid=104,uid=0Explanation:
card*→ optional, needed for display/X11renderD*→ required for compute & headless workloadsgid→ must match container group IDsuid=0→ root inside container
Restart the container and verify:
ls -l /dev/dri groupsThis is the simplest and safest approach for modern Proxmox (cgroup v2).
Add to /etc/pve/lxc/<VMID>.conf:
dev0: /dev/dri/card1,gid=44,uid=0
dev1: /dev/dri/renderD128,gid=104,uid=0
dev2: /dev/nvidia0
dev3: /dev/nvidiactl
dev4: /dev/nvidia-modeset
dev5: /dev/nvidia-uvm
dev6: /dev/nvidia-uvm-tools
dev7: /dev/nvidia-caps/nvidia-cap1
dev8: /dev/nvidia-caps/nvidia-cap2✔ Works with multiple containers
✔ No PCI lock
✔ No major/minor maintenance
Only needed if devX: entries are unavailable or insufficient.
ls -al /dev/nvidia*lxc.cgroup2.devices.allow: c 195:* rwm # NVIDIA core
lxc.cgroup2.devices.allow: c 226:* rwm # DRM
lxc.cgroup2.devices.allow: c 510:* rwm # nvidia-uvm
lxc.cgroup2.devices.allow: c 235:* rwm # nvidia-caps
⚠️ Major numbers may change between driver versions.
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
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-modeset dev/nvidia-modeset none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-caps dev/nvidia-caps none bind,optional,create=dir💡 The kernel module must remain on the host
Containers only install user-space libraries
See: 3. Remove Existing NVIDIA/CUDA Drivers
pct push <VMID> NVIDIA-Linux-x86_64-580.95.05.run /tmp/nvidia.runsudo chmod +x /tmp/nvidia.run
sudo /tmp/nvidia.run --no-kernel-module- Missing X libraries → OK
- 32-bit compatibility → NO
nvidia-xconfig→ NO (headless)
sudo reboot
sudo nvidia-smi