Modern Media Streaming: Jellyfin on Docker with Intel QuickSync & NVIDIA Hardware Transcoding

2 min read

Dedicated Home Theater PCs (HTPCs) connected directly to living room displays with IR remotes are a relic of the past. Modern media distribution relies on centralized network streaming using Jellyfin.

This guide explains how to deploy production Jellyfin in Docker Compose with hardware-accelerated transcoding (Intel QuickSync / NVIDIA NVENC) and high-speed SMB/NFS storage offloading.

⚡ Quick Runbook: 60-Second Implementation

TL;DR: Copy and deploy the baseline production definition directly onto your host:

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    restart: unless-stopped
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    volumes:
      - /opt/stacks/jellyfin/config:/config
      - /opt/stacks/jellyfin/cache:/cache
      - /mnt/storage/media/movies:/media/movies:ro
      - /mnt/storage/media/tv:/media/tv:ro
    ports:
      - "8096:8096"
    environment:
      - JELLYFIN_PublishedServerUrl=https://media.example.com

1. Hardware Acceleration Architecture

Real-time 4K HDR HEVC transcoding will overwhelm even modern multi-core server CPUs if executed in software. Passing GPU device nodes directly into the container offloads video decoding and tone mapping to dedicated ASIC silicon:

Intel QuickSync (VAAPI)

  • Requires passing /dev/dri/renderD128 into the container.
  • Extremely energy-efficient; handles 4K HEVC 10-bit tonemapping on Intel 8th-gen and newer CPUs.

NVIDIA NVENC

  • Requires NVIDIA Container Toolkit installed on host.
  • Environment variable NVIDIA_VISIBLE_DEVICES=all enables fast hardware encoding across multiple streams.

2. Production Docker Compose Configuration

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    restart: unless-stopped
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    volumes:
      - /opt/stacks/jellyfin/config:/config
      - /opt/stacks/jellyfin/cache:/cache
      - /mnt/storage/media/movies:/media/movies:ro
      - /mnt/storage/media/tv:/media/tv:ro
    ports:
      - "8096:8096"
    environment:
      - JELLYFIN_PublishedServerUrl=https://media.example.com

Related Runbooks in This Series

Tags:

Next: →