Is there an existing issue for this?
Current Behavior
Tried getting jellyfin with Intel Hardware Accel to work. After many an experimentation I found the actual documentation about this here: https://docs.linuxserver.io/images/docker-jellyfin/
I added the docker mod (https://github.com/linuxserver/docker-mods/tree/jellyfin-opencl-intel) to the container and mapped the /dev/dri device.
But it still wouldn't work when enabling in jellyfin.
After more investigation I found that the /dev/dri/renderD128 device didn't have a group, so it couldn't be properly accessed.
root@f46b89695ce1:/# ls -l /dev/dri
total 0
crw-rw---- 1 root video 226, 0 Mar 18 13:28 card0
crw-rw---- 1 root 105 226, 128 Mar 18 13:28 renderD128
The permissions for those devices on the docker host system are as follows.
root@zimaboard:~/# ls -l /dev/dri/
total 0
drwxr-xr-x 2 root root 80 Mar 18 14:28 by-path
crw-rw---- 1 root video 226, 0 Mar 18 14:28 card0
crw-rw---- 1 root render 226, 128 Mar 18 14:28 renderD128
I was able to solve this problem by creating a group render inside the container and adding the user abc to it. But this will not survive container update I guess.
We will automatically ensure the abc user inside of the container has the proper permissions to access this device. only applied to the video group inside the container.
Expected Behavior
Permissions inside the container applied correctly for the /dev/dri/renderD128 device and the abc user.
Steps To Reproduce
- Have Debian 12 as host
- Run jellyfin container with device mapped and docker-mod for intel opencl
- When enabling hardware accel it fails with permission issues.
Environment
- OS: Debian 12
- How docker service was installed: through Cosmos Cloud installation
CPU architecture
x86-64
Docker creation
Cosmos Cloud specific "compose" configuration:
{
"services": {
"Jellyfin": {
"container_name": "Jellyfin",
"image": "lscr.io/linuxserver/jellyfin:latest",
"environment": [
"PUID=1000",
"PGID=1000",
"PATH=/lsiopy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"HOME=/root",
"LANGUAGE=en_US.UTF-8",
"LANG=en_US.UTF-8",
"TERM=xterm",
"S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0",
"S6_VERBOSITY=1",
"S6_STAGE2_HOOK=/docker-mods",
"VIRTUAL_ENV=/lsiopy",
"LSIO_FIRST_PARTY=true",
"NVIDIA_DRIVER_CAPABILITIES=compute,video,utility",
"DOCKER_MODS=linuxserver/mods:jellyfin-opencl-intel"
],
"labels": {
"build_version": "Linuxserver.io version:- 10.10.6ubu2404-ls54 Build-date:- 2025-03-04T12:57:51+00:00",
"cosmos-auto-update": "true",
"cosmos-force-network-mode": "cosmos-Jellyfin-default",
"cosmos-force-network-secured": "true",
"cosmos-icon": "https://azukaar.github.io/cosmos-servapps-official/servapps/Jellyfin/icon.png",
"maintainer": "thelamer",
"org.opencontainers.image.authors": "linuxserver.io",
"org.opencontainers.image.created": "2025-03-04T12:57:51+00:00",
"org.opencontainers.image.description": "[Jellyfin](https://github.com/jellyfin/jellyfin) is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it.",
"org.opencontainers.image.documentation": "https://docs.linuxserver.io/images/docker-jellyfin",
"org.opencontainers.image.licenses": "GPL-3.0-only",
"org.opencontainers.image.ref.name": "aafa95871135ded51cfdcde363275fbe2c36960b",
"org.opencontainers.image.revision": "aafa95871135ded51cfdcde363275fbe2c36960b",
"org.opencontainers.image.source": "https://github.com/linuxserver/docker-jellyfin",
"org.opencontainers.image.title": "Jellyfin",
"org.opencontainers.image.url": "https://github.com/linuxserver/docker-jellyfin/packages",
"org.opencontainers.image.vendor": "linuxserver.io",
"org.opencontainers.image.version": "10.10.6ubu2404-ls54"
},
"ports": [],
"volumes": [
{
"Type": "volume",
"Source": "Jellyfin-config",
"Target": "/config"
},
{
"Type": "bind",
"Source": "/mnt/sda1/Media/Movies",
"Target": "/data/movies"
},
{
"Type": "bind",
"Source": "/mnt/sda1/Media/Shows",
"Target": "/data/tvshows"
},
{
"Type": "bind",
"Source": "/dev/dri/renderD128",
"Target": "/dev/dri/renderD128"
},
{
"Type": "bind",
"Source": "/dev/dri/card0",
"Target": "/dev/dri/card0"
}
],
"networks": {
"cosmos-Jellyfin-default": {},
"cosmos-Media": {}
},
"routes": null,
"restart": "unless-stopped",
"devices": [
"/dev/dri:/dev/dri"
],
"expose": [],
"entrypoint": "/init",
"runtime": "runc",
"working_dir": "/",
"hostname": "f46b89695ce1",
"network_mode": "cosmos-Jellyfin-default",
"healthcheck": {
"test": null,
"interval": 0,
"timeout": 0,
"retries": 0,
"start_period": 0
}
}
}
}
Container logs
from the jellyfin transcode logs
ffmpeg version 7.0.2-Jellyfin Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 13 (Ubuntu 13.3.0-6ubuntu2~24.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto=auto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libxml2 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libharfbuzz --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil 59. 8.100 / 59. 8.100
libavcodec 61. 3.100 / 61. 3.100
libavformat 61. 1.100 / 61. 1.100
libavdevice 61. 1.100 / 61. 1.100
libavfilter 10. 1.100 / 10. 1.100
libswscale 8. 1.100 / 8. 1.100
libswresample 5. 1.100 / 5. 1.100
libpostproc 58. 1.100 / 58. 1.100
Device creation failed: -542398533.
Failed to set value 'vaapi=va:,vendor_id=0x8086,driver=iHD' for option 'init_hw_device': Generic error in an external library
Error parsing global options: Generic error in an external library
Is there an existing issue for this?
Current Behavior
Tried getting jellyfin with Intel Hardware Accel to work. After many an experimentation I found the actual documentation about this here: https://docs.linuxserver.io/images/docker-jellyfin/
I added the docker mod (https://github.com/linuxserver/docker-mods/tree/jellyfin-opencl-intel) to the container and mapped the
/dev/dridevice.But it still wouldn't work when enabling in jellyfin.
After more investigation I found that the
/dev/dri/renderD128device didn't have a group, so it couldn't be properly accessed.The permissions for those devices on the docker host system are as follows.
I was able to solve this problem by creating a group
renderinside the container and adding the userabcto it. But this will not survive container update I guess.We will automatically ensure the abc user inside of the container has the proper permissions to access this device.only applied to the video group inside the container.Expected Behavior
Permissions inside the container applied correctly for the
/dev/dri/renderD128device and theabcuser.Steps To Reproduce
Environment
CPU architecture
x86-64
Docker creation
Container logs