Trouble running Tdarr with GPU passthrough in TrueNAS SCALE LXC – NVML driver/library mismatch

Hi all,

I’m working on getting Tdarr (server + node) running inside an Arch-based LXC on my TrueNAS SCALE system. The goal is to take advantage of NVENC on my RTX 4070 for transcoding.

I know most people would run Tdarr through SCALE Apps/Docker, but I’ve been moving my workloads into LXCs for consistency and portability across my servers (Proxmox + SCALE). It makes it easier for me to manage configs, migrate, and keep everything structured.

So far:

  • Tdarr is unpacked and running under systemd services (tdarr-server.service and tdarr-node.service). Both are active and stable.
  • The Node process detects CPU encoders just fine, but GPU access is failing.

Here’s the issue:

  • On the host (TrueNAS SCALE):
root@Lir:~# nvidia-smi
NVIDIA-SMI 550.142   Driver Version: 550.142   CUDA Version: 12.4
  • Inside the Tdarr Arch LXC:
root@tdarr:~# nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
NVML library version: 580.76
  • /dev/nvidia* devices are visible inside the container with correct permissions, but the container’s NVML library (580.76) doesn’t match the host driver (550.142).

From what I understand, Tdarr (and nvidia-smi) require the NVML libraries inside the container to match the host driver version. In Proxmox LXCs, this is often solved by **bind-mounting the host’s NVIDIA libs into the container ** so they stay in sync.

Questions:

  1. Has anyone successfully run Tdarr in a TrueNAS SCALE LXC with GPU passthrough?
  2. Is there a way on SCALE to bind-mount the host’s NVIDIA libraries into the LXC (like you can on Proxmox)?
  3. Or is this fundamentally going to be problematic, meaning I should rethink running Tdarr in an LXC on SCALE?

Any advice, examples, or workarounds would be greatly appreciated.

Thanks!

well you’re in for a treat, truenas uses a version of the nvidia-toolkit that has a bug with incus which prevents gpu passthrough. And since incus will be replaced by libvirt based lxcs it’s not going to get fixed. Its broken for months…

Edit:
To passthrough the host nvidia libraries you have to manually edit the incus config file from shell

the command is

sudo incus config edit instance_name

and you’d have to add:

nvidia.driver.capabilities: compute,graphics,utility,video
nvidia.runtime: "true"

Thanks @LarsR — that explains the headaches I was running into. I managed to get nvidia-smi and NVENC working after a lot of manual library mounts and symlinks, but it was fragile. Since incus is being phased out anyway, I’ve decided to scrap the LXC and just run Tdarr in Docker with NVIDIA runtime enabled. Much less hassle and everything works out of the box.