Official Plex docker container refusing to use GPU. Other containers use GPU fine

Server Version#: 1.43.0.10231 in docker
Player Version#: Web

Yes I have plex pass. When I first set this server up, hardware transcoding was working. Then some updates installed for the host and now I can’t get it to work for the life of me. I also have CodeProjectAI Running in docker using the same GPU just fine. nvidia-smi inside the container sees the GPU just fine. Here are the errors in the debug logs since I can’t figure out how to attach them:

Nov 04, 2025 08:49:37.756 [140012314766136] DEBUG - [Req#220/Transcode] Codecs: testing hevc (decoder) with hwdevice nvdec
Nov 04, 2025 08:49:37.756 [140012314766136] DEBUG - [Req#220/Transcode] Codecs: hardware transcoding: testing API nvdec for device ‘pci:0000:06:10.0’ (NVIDIA GA102 [GeForce RTX 3090])
Nov 04, 2025 08:49:37.756 [140012314766136] ERROR - [Req#220/Transcode] [FFMPEG] - Cannot load libcuda.so.1
Nov 04, 2025 08:49:37.756 [140012314766136] ERROR - [Req#220/Transcode] [FFMPEG] - Could not dynamically load CUDA
Nov 04, 2025 08:49:37.756 [140012314766136] DEBUG - [Req#220/Transcode] Codecs: hardware transcoding: opening hw device failed - probably not supported by this system, error: Operation not permitted
Nov 04, 2025 08:49:37.756 [140012314766136] DEBUG - [Req#220/Transcode] Could not create hardware context for hevc

Here is my docker command to run the container:



-bash-5.3# cat runPlex.sh
docker run 
-d 
-–name plex 
-p 32400:32400/tcp 
-p 3005:3005/tcp 
-p 8324:8324/tcp 
-p 32469:32469/tcp 
-p 1900:1900/udp 
-p 32410:32410/udp 
-p 32412:32412/udp 
-p 32413:32413/udp 
-p 32414:32414/udp 
-e TZ=“America/New_York” 
-e ADVERTISE_IP=“http://192.168.1.23:32400/” 
-h plex 
-v  /var/docker/volumes/plex/config:/config 
-v  /var/docker/volumes/plex/transcode:/transcode 
-v  /mnt/media:/data 
-–restart=always 
-–runtime=nvidia 
-e NVIDIA_VISIBLE_DEVICES=“all” 
-e NVIDIA_DRIVER_CAPABILITIES=“all” 
-–device /dev/dri:/dev/dri 
plexinc/pms-docker:beta

nvidia-smi on the host:

-bash-5.3# nvidia-smi
Tue Nov  4 09:07:04 2025
±----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.95.05              Driver Version: 580.95.05      CUDA Version: 13.0     |
±----------------------------------------±-----------------------±---------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 3090        Off |   00000000:06:10.0 Off |                  N/A |
|  0%   48C    P2            106W /  350W |    2113MiB /  24576MiB |      0%      Default |
|                                         |                        |                  N/A |
±----------------------------------------±-----------------------±---------------------+

±----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A            2912      C   python3.8                              1202MiB |
|    0   N/A  N/A            2969      C   python3.8                               896MiB |
±----------------------------------------------------------------------------------------+

One more thing I wanted to add, Plex definitely sees the GPU because I can select it on the transcode tab of settings under “Hardware transcode device”

Check permissions, puid and guid, of user you want and of the render

I am not exactly sure what you are asking me to check. I just noticed that PMS is not running at the user I thought it was on the host. I added that user to the render group and restarted the container. No luck. I even tried adding the –privileged flag to my docker run command and still no luck.

Here is a ps from the host:

-bash-5.3# ps -aux | grep -i plex
root 16907 0.0 0.0 212 56 ? S 12:54 0:00 s6-supervise plex
jq 16910 15.6 0.4 283608 78720 ? Ssl 12:54 0:05 /usr/lib/plexmediaserver/Plex Media Server
jq 16982 2.0 0.2 65420 44580 ? SNl 12:55 0:00 Plex Plug-in [com.plexapp.system] /usr/lib/plexmediaserver/Resources/Plug-ins-ca3956848/Framework.bundle/Contents/Resources/Versions/2/Python/bootstrap.py --server-version 1.43.0.10231-ca3956848 /usr/lib/plexmediaserver/Resources/Plug-ins-ca3956848/System.bundle
jq 17057 0.0 0.0 43944 13424 ? Sl 12:55 0:00 /usr/lib/plexmediaserver/Plex Tuner Service /usr/lib/plexmediaserver/Resources/Tuner/Private /usr/lib/plexmediaserver/Resources/Tuner/Shared 1.43.0.10231-ca3956848 32600
jq 17089 1.6 0.2 64644 44244 ? Sl 12:55 0:00 Plex Plug-in [com.plexapp.agents.imdb] /usr/lib/plexmediaserver/Resources/Plug-ins-ca3956848/Framework.bundle/Contents/Resources/Versions/2/Python/bootstrap.py --server-version 1.43.0.10231-ca3956848 /usr/lib/plexmediaserver/Resources/Plug-ins-ca3956848/PlexMovie.bundle
root 17377 0.0 0.0 6624 4216 pts/1 S+ 12:55 0:00 grep -i plex

And here are the user it is running as, as well as the user I thought I was running it as:

-bash-5.3# id jq
uid=1000(jq) gid=1000(jq) groups=1000(jq),3(sys),90(network),998(wheel),996(audio),991(lp),989(render),987(storage),985(video),984(users),981(rfkill),965(docker)
-bash-5.3# id plex
uid=1017(plex) gid=1017(plex) groups=1017(plex),989(render),985(video)

And here is my current plex command:

-bash-5.3# cat runPlex.sh
docker run
-d
-–name plex
-–privileged
-e PUID=1017
-e PGID=1017
-p 32400:32400/tcp
-p 3005:3005/tcp
-p 8324:8324/tcp
-p 32469:32469/tcp
-p 1900:1900/udp
-p 32410:32410/udp
-p 32412:32412/udp
-p 32413:32413/udp
-p 32414:32414/udp
-e TZ=“America/New_York”
-e ADVERTISE_IP=“``http://192.168.1.23:32400/”``
-h plex
-v /var/docker/volumes/plex/config:/config
-v /var/docker/volumes/plex/transcode:/transcode
-v /mnt/media:/data
-–restart=always
-–runtime=nvidia
-–gpus all
-e NVIDIA_VISIBLE_DEVICES=“all”
-e NVIDIA_DRIVER_CAPABILITIES=“all”
-–device /dev/dri:/dev/dri
plexinc/pms-docker:beta

I have found some other threads about this. Seems like nvidia and docker are putting the file somewhere Plex doesn’t look for it.

This is from inside the container:

root@plex:/usr/lib/plexmediaserver/lib# ls -l
total 85848
-rwxr-xr-x 1 root root 747264 Oct 9 06:03 ld-musl-x86_64.so.1
-rwxr-xr-x 1 root root 6121544 Oct 9 06:03 libavcodec.so.60
-rwxr-xr-x 1 root root 6927632 Oct 9 06:03 libavfilter.so.9
-rwxr-xr-x 1 root root 3220672 Oct 9 06:03 libavformat.so.60
-rwxr-xr-x 1 root root 1037112 Oct 9 06:03 libavutil.so.58
-rwxr-xr-x 1 root root 10616 Oct 9 06:03 libboost_atomic.so
-rwxr-xr-x 1 root root 33056 Oct 9 06:03 libboost_chrono.so
-rwxr-xr-x 1 root root 4760 Oct 9 06:03 libboost_date_time.so
-rwxr-xr-x 1 root root 130968 Oct 9 06:03 libboost_filesystem.so
-rwxr-xr-x 1 root root 196256 Oct 9 06:03 libboost_iostreams.so
-rwxr-xr-x 1 root root 265608 Oct 9 06:03 libboost_json.so
-rwxr-xr-x 1 root root 470008 Oct 9 06:03 libboost_locale.so
-rwxr-xr-x 1 root root 323024 Oct 9 06:03 libboost_program_options.so
-rwxr-xr-x 1 root root 26880 Oct 9 06:03 libboost_random.so
-rwxr-xr-x 1 root root 195288 Oct 9 06:03 libboost_regex.so
-rwxr-xr-x 1 root root 4728 Oct 9 06:03 libboost_system.so
-rwxr-xr-x 1 root root 113248 Oct 9 06:03 libboost_thread.so
-rwxr-xr-x 1 root root 30800 Oct 9 06:03 libboost_timer.so
-rw-r–r-- 1 root root 1152880 Oct 9 06:03 libc++.so.2
-rwxr-xr-x 1 root root 747264 Oct 9 06:03 libc.so
-rwxr-xr-x 1 root root 5096 Oct 9 06:03 libcharset.so.1
-rwxr-xr-x 1 root root 4990824 Oct 9 06:03 libcrypto.so.3
-rwxr-xr-x 1 root root 519808 Oct 9 06:03 libcurl.so.4
-rwxr-xr-x 1 root root 84624 Oct 9 06:03 libdrm.so.2
-rwxr-xr-x 1 root root 41568 Oct 9 06:03 libdrm_amdgpu.so.1
-rwxr-xr-x 1 root root 135288 Oct 9 06:03 libdrm_intel.so.1
-rwxr-xr-x 1 root root 39312 Oct 9 06:03 libdrm_radeon.so.1
-rwxr-xr-x 1 root root 39368 Oct 9 06:03 libeditline.so.1
-rw-r–r-- 1 root root 94064 Oct 9 06:03 libfmt.so.8
-rwxr-xr-x 1 root root 5431224 Oct 9 06:03 libfreeimage.so
-rwxr-xr-x 1 root root 58688 Oct 9 06:03 libgcompat.so.0
-rwxr-xr-x 1 root root 88368 Oct 9 06:03 libhdhomerun.so
-rwxr-xr-x 1 root root 918856 Oct 9 06:03 libiconv.so.2
-rwxr-xr-x 1 root root 11037448 Oct 9 06:03 libicudataplex.so.69
-rwxr-xr-x 1 root root 3670024 Oct 9 06:03 libicui18nplex.so.69
-rwxr-xr-x 1 root root 59968 Oct 9 06:03 libicuioplex.so.69
-rwxr-xr-x 1 root root 2110136 Oct 9 06:03 libicuucplex.so.69
-rw-r–r-- 1 root root 668744 Oct 9 06:03 libigdgmm.so.12
-rwxr-xr-x 1 root root 57624 Oct 9 06:03 libminiupnpc.so.17
-rw-r–r-- 1 root root 149256 Oct 9 06:03 libnghttp2.so
-rwxr-xr-x 1 root root 14941184 Oct 9 06:03 libonnxruntime.so.1.16.3
-rwxr-xr-x 1 root root 2588152 Oct 9 06:03 libopencv_core.so.405
-rwxr-xr-x 1 root root 3263192 Oct 9 06:03 libopencv_dnn.so.405
-rwxr-xr-x 1 root root 915048 Oct 9 06:03 libopencv_imgcodecs.so.405
-rwxr-xr-x 1 root root 3789064 Oct 9 06:03 libopencv_imgproc.so.405
-rwxr-xr-x 1 root root 37000 Oct 9 06:03 libpciaccess.so.0
-rw-r–r-- 1 root root 1218440 Oct 9 06:03 libpion.so
-rwxr-xr-x 1 root root 4598688 Oct 9 06:03 libpython27.so
-rwxr-xr-x 1 root root 223560 Oct 9 06:03 libsoci_core.so
-rwxr-xr-x 1 root root 87976 Oct 9 06:03 libsoci_sqlite3.so
-rwxr-xr-x 1 root root 982016 Oct 9 06:03 libsqlite3.so
-rwxr-xr-x 1 root root 642008 Oct 9 06:03 libssl.so.3
-rwxr-xr-x 1 root root 149912 Oct 9 06:03 libswresample.so.4
-rwxr-xr-x 1 root root 949344 Oct 9 06:03 libswscale.so.7
-rwxr-xr-x 1 root root 1157360 Oct 9 06:03 libtag.so.1
-rwxr-xr-x 1 root root 87488 Oct 9 06:03 libusb-1.0.so.0
-rwxr-xr-x 1 root root 9328 Oct 9 06:03 libva-drm.so.2
-rwxr-xr-x 1 root root 172968 Oct 9 06:03 libva.so.2
-rw-r–r-- 1 root root 920 Oct 9 07:11 plexmediaserver.default
-rwxr-xr-x 1 root root 6669 Oct 9 07:11 plexmediaserver.init
-rw-r–r-- 1 root root 1664 Oct 9 07:11 plexmediaserver.service

root@plex:/usr/lib/plexmediaserver/lib# find / -name libcuda.so.1
/usr/lib/libcuda.so.1

I can confirm the fix listed here [BUG] cuda broken - Cannot load libcuda.so.1 · Issue #403 · linuxserver/docker-plex · GitHub

for i in /usr/lib/lib*.so.1;
do ln -s $i /usr/lib/plexmediaserver/lib/;
done

does resolve the issue.

Is there any way to report a bug?

Am I doing something wrong here or are there plans to fix this?

I have the exact same issue, also exact same solution fixed it. I run my docker container as a specific user so from the sounds of it that might be part of the problem as well?