How to install Jellyfin on Unraid
Updated ยท 5 min read
Unraid makes it easy to install Jellyfin: it's one template away in Community Applications. The parts worth slowing down for are which template you pick, how the paths map, and how to hand Jellyfin your graphics chip.
Which Jellyfin template
Search the Apps tab (Community Applications) for Jellyfin and you'll see more than one result. They all run Jellyfin; they differ in who builds the image and in their defaults:
- Official image (
jellyfin/jellyfin): built by the Jellyfin project. Its Unraid template uses host networking by default, which helps with DLNA and finding HDHomeRun tuners. - linuxserver.io (
lscr.io/linuxserver/jellyfin): a popular community image with bridge networking and the usual PUID and PGID settings. - hotio (
ghcr.io/hotio/jellyfin): another well-kept community image, also bridge by default.
Any of them is a fine choice. Pick one and stick with it. Two Jellyfin containers pointed at the same appdata folder will corrupt each other's database, and switching images later means checking paths carefully.
Install it, step by step
- Make a media share. If you don't have one yet, create a share for media under Shares, for example
media, with folders such asmoviesandshows. It appears at/mnt/user/media. - Open the template. In Apps, search for Jellyfin and click Install on the template you chose.
- Keep the config path on appdata. The container's
/configshould map to/mnt/user/appdata/jellyfin. That's the default; leave it there, ideally on a cache pool so the database is fast. - Map your media. Map the template's media paths to your share, such as container
/data/moviesto/mnt/user/media/movies. To add another folder, use Add another Path, Port, Variable, Label or Device with Config Type Path. Set Access Mode to Read Only if Jellyfin shouldn't change your files. - Check the user. Leave
PUIDat 99 andPGIDat 100, Unraid'snobodyuser andusersgroup, so Jellyfin's files match everything else on the array. - Apply. Click Apply. Unraid downloads the image and starts the container.
- Run the first-run wizard. Open
http://<Unraid address>:8096, create the administrator with a strong password, and add libraries using the container paths, such as/data/movies, not the/mnt/userpaths.
About the official image and PUID: the linuxserver.io and hotio images read PUID and PGID. The official image runs as whatever user Docker starts it with. If you use it and new files in appdata come out owned by root, add --user 99:100 to Extra Parameters (switch the template to Advanced View to see it), and fix the existing files' owner once from the terminal.
Intel graphics
Most Unraid boxes built on an Intel desktop processor have an integrated graphics chip that converts video far faster than the processor alone.
- In Apps, install the Intel GPU TOP plugin. It loads the driver for the integrated graphics, so you don't edit any boot files.
- Edit the Jellyfin container and add a Device with the value
/dev/dri. - In Jellyfin's Dashboard, set hardware acceleration to Intel QuickSync (QSV) or VAAPI, and tick only the formats your generation of chip decodes.
The plugin also gives you intel_gpu_top in the terminal. Run it while a video converts: if the Video bar moves, the chip is doing the work. Jellyfin hardware transcoding explains the formats and what to tick.
NVIDIA graphics
- In Apps, install the Nvidia-Driver plugin and follow its instructions. Its page under Plugins shows your card's UUID, which starts with
GPU-. - Edit the Jellyfin container in Advanced View and add
--runtime=nvidiato Extra Parameters. - Add a variable
NVIDIA_VISIBLE_DEVICESset to that UUID, with no spaces before it, and a variableNVIDIA_DRIVER_CAPABILITIESset toall. - In Jellyfin's Dashboard, choose NVIDIA NVENC and tick the formats your card handles.
A card passed through to a virtual machine isn't available to Docker at the same time. Use it for one or the other.
Careful: to watch away from home, don't forward port 8096 to Unraid. It's plain HTTP, and the server also holds your array. Put HTTPS in front of Jellyfin or use a private network such as Tailscale; Jellyfin remote access walks through the choices. Unraid's own web page uses port 443 when SSL is on, so a reverse proxy container needs another host port.
Questions
Which Jellyfin container should I use on Unraid?
Any of the official, linuxserver.io or hotio templates works. The official one uses host networking by default; the others use bridge and PUID and PGID. Pick one and don't run two on the same appdata folder.
What PUID and PGID does Jellyfin use on Unraid?
99 and 100, which are Unraid's nobody user and users group. That keeps Jellyfin's files owned the same way as the rest of the array.
Why does Jellyfin on Unraid not use my Intel graphics?
Usually /dev/dri isn't passed to the container, or the Intel GPU TOP plugin isn't installed. Add the device, install the plugin, then turn on QSV or VAAPI in Jellyfin's Dashboard.
The one-click way: Reelhost
Reelhost's Docker edition runs next to Jellyfin and works with both the official and linuxserver.io images. On Unraid, sign in to its registry from the terminal, then add it under Docker, Add Container: map /data to /mnt/user/appdata/reelhost, /jellyfin-config to Jellyfin's appdata folder, your media at the same path as in Jellyfin, and port 8099, with PUID 99 and PGID 100. Give it the same graphics device as Jellyfin for the video speed check. The check-up is free; fixes need Core, and watching away from home needs Complete or Yearly.
The check-up is free and changes nothing. Every fix is previewed, backed up and reversible.