Rough guide for installing Jellyfin with hardware transcoding

This is my rough guide to install Jellyfin, with hardware transcoding enabled. (Intel processor only)

I’m writing this since many guides online are scattered or force you to use Task Scheduler to add Docker container. Some guide also suggestes changing graphics driver permission, which I think it’s risky. I hope this helps you to migrate from Video Station to Jellyfin.

Prepare to install:

  1. Create 3 folder in appropriate location. These folder will hold Jellyfin data, cache, font. For example, under /docker/jellyfin.

  2. Go to Container Manager → Registry. Search for Jellyfin/Jellyfin and download latest. Don’t create container yet.

  3. Execute command cat /etc/group | grep videodriver. You can do this with SSH, or Task Scheduler to email the result. Remember the number at the end of result; in my case, videodriver:x:937 so remember 937.

  4. Go to Container Manager → Projects. Create new project.

  5. Put project name as you with, and select the folder where you created 3 folders before. In this example, /docker/jellyfin.

  6. Choose create docker-compose.yml. Then, paste following code. Replace {{ }} part to your data.

version: "3.9"
services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: Jellyfin-HT
    volumes:
      - {{config folder}}:/config:rw
      - {{cache folder}}:/cache:rw
      - {{font folder}}:/usr/share/fonts:rw
      - {{video folder}}:/media:rw
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
    environment:
      TZ: {{Your timezone}}
    restart: on-failure:5
    network_mode: bridge
    ports:
      - {{port number}}:8096
    group_add:
      - "{{group number you saw in step 3}}"

For exact timezone names, see List of tz database time zones - Wikipedia. Put TZ identifier. (For example: America/New_York)

Notice devices: part and add_group: part. These will map device to Docker container and give container permission to use them, hence enables hardware acceleration.

Here’s my example.

version: "3.9"
services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: Jellyfin-HT
    volumes:
      - /volume1/docker/jellyfin/config:/config:rw
      - /volume1/docker/jellyfin/cache:/cache:rw
      - /volume1/docker/jellyfin/fonts:/usr/share/fonts:rw
      - /volume1/video:/media/video:rw
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
    environment:
      TZ: Asia/Seoul
    restart: on-failure:5
    network_mode: bridge
    ports:
      - 8096:8096
    group_add:
      - "937"
  1. Create project, and run.

  2. Go to Jellyfin. Create your account, add library. Then, go to dashboard and enable transcoding with “Intel QuickSync”. If you want to use Trickplay(Images when you hovering over play bar), you have to enable hardware acceleration there, too.

1 Like