Jellyfin enables you to collect, manage, and stream your media. Run the Jellyfin server on your system and gain access to the leading free-software entertainment system, bells and whistles included.
services:
jellyfin:
container_name: jellyfin
image: lscr.io/linuxserver/jellyfin:latest
runtime: nvidia
environment:
- PUID=568
- PGID=568
- TZ=America/New_York
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
ports:
- '8096:8096'
restart: unless-stopped
volumes:
- /mnt/tank/configs/jellyfin:/config
- /mnt/tank/media:/media
Note this stack enables nVidia GPUs. If you don’t need this, remove all the lines with
nvidia
in them.
media
directory into the container as /media.Check out the new docs from TrueNAS
To watch content on a device in your house on your home network, download the Jellyfin App from wherever your device gets apps from. When you start the Jellyfin app, manually add a server. Type in the IP Address of your server (for me it would look like http://192.168.1.215
) and use the default port of 8096
. Once its connected you should see the sign-in screen with your name on it. If not, use the manual login and type the username and password you set up earlier.
If you are using Nginx Proxy Manager to route your traffic use these settings to be sure you’re not caching media:
Field | Value |
---|---|
location | / |
Cog Icon | click this to expand the box at the bottom |
scheme | http |
Forward Hostname / IP | private IPv4 of your media server |
Forward Port | port media server is running on |
expandable box | add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate"; add_header Pragma "no-cache"; add_header Expires "0"; |
This section is under development and may not work for you
nvidia
in themcd /dev/dri && ls -l
. You should see a line at the bottom that looks like:crw-rw---- 1 root render 226, 128 Apr 15 14:44 renderD128
render
group, run the command getent group render | cut -d: -f3
. In my case the output was 107
.group_add:
- "107"
devices:
- /dev/dri/:/dev/dri/
services:
jellyfin:
container_name: jellyfin
image: lscr.io/linuxserver/jellyfin:latest
environment:
- PUID=568
- PGID=568
- TZ=America/New_York
ports:
- "8096:8096"
restart: unless-stopped
group_add:
- "107" # Access to /dev/dri/renderD128
- "44" # Access to /dev/dri/card0
devices:
- /dev/dri/:/dev/dri/
volumes:
- /mnt/tank/configs/jellyfin:/config
- /mnt/tank/media:/media
**** creating video group videol7cu with id 107 ****
**** adding /dev/dri/renderD128 to video group videol7cu with id 107 ****
**** adding /dev/dri/card0 to video group video with id 44 ****
Intel QuickSync (QSV)
/dev/dri/renderD128
if that was the output from Step 2Many people ask how to setup the transcoding section of Jellyfin for their specific GPU. I usually tell them “it depends” because each GPU has different capabilities. However, I will tell you a great way to answer this for your individual GPU is ChatGPT. To do this, take a screenshot of the transcode page and ask: "if i have <insert_GPU> which of these should i select for hardware decoding and tone mapping?"
ChatGPT can read the image and tell me which boxes to check and what my Tone Mapping settings should be.
As an example, here was the response:
With an NVIDIA Quadro P2000 GPU, you can enable several hardware decoding options thanks to its support for NVDEC (NVIDIA Video Decoder). The P2000 supports hardware decoding for a wide variety of codecs, so here’s what you should ideally enable in Jellyfin based on your screenshot:
✅ Safe to Enable with P2000:H264 ✅ (already enabled)
HEVC ✅ (Main/8-bit only; 10-bit HEVC decoding is supported via partial acceleration)
MPEG2 ✅
MPEG4 ✅
VC1 ✅ (already enabled)
VP8 ✅
VP9 ✅ (8-bit; 10-bit is partially supported)
HEVC 10bit ✅ (Partial decoding support—still useful)
VP9 10bit ✅ (already enabled; partial support)
❌ Not Supported or Questionable on P2000:
AV1 ❌ (AV1 is not supported on P2000)
HEVC RExt 8/10bit ❌ (Refers to extended profiles—unsupported)
HEVC RExt 12bit ❌
Recommended settings for you:
✅ Enable: H264, HEVC, MPEG2, MPEG4, VC1, VP8, VP9, HEVC 10bit, VP9 10bit
❌ Disable or leave unchecked: AV1, HEVC RExt 8/10bit, HEVC RExt 12bit
Bonus Tips:
Enhanced NVDEC Decoder ✅ (keep this enabled — improves decoding on newer drivers)
Enable Hardware Encoding ✅ (already enabled — the P2000 supports NVENC)
For encoding, H264 is your best option. You can enable HEVC encoding if you want smaller file sizes and are okay with slightly slower performance.
✅ Recommended Tone Mapping Settings for P2000:
Enable Tone Mapping: ✅ Yes (only if you’re playing HDR content on SDR displays).
Tone Mapping Algorithm: BT.2390 (recommended default — a perceptually better curve for HDR→SDR conversion).
Tone Mapping Mode: Auto (you can try RGB if you notice washed-out colors or blown highlights).
Tone Mapping Range: Auto (keeps the same color range as input; usually best unless you know you’re targeting limited-range SDR).