Skip to main content

Jellyfin (Media Server)

What this is

Self-hosted media server for streaming movies and TV shows from my NAS to local and remote devices.


Why I set this up

I wanted a fully self-hosted alternative to streaming services, with media stored locally on my Synology NAS and streamed via Docker.


Where it runs

  • Host: micropc (192.168.86.100)

  • Storage: Synology NAS (mounted to /mnt/sjb2/media)


Docker Compose

services:
  jellyfin:
    image: linuxserver/jellyfin:latest
    container_name: jellyfin
    network_mode: host

    environment:
      - PUID=1026
      - PGID=100
      - TZ=America/Santo_Domingo
    
    group_add:
      - "44"

    shm_size: "2gb"

    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128

    volumes:
      - /opt/docker/jellyfin/config:/config
      - /mnt/sjb2/media:/media
      - /opt/docker/jellyfin/transcode:/transcode

    restart: unless-stopped
    
    labels:
      - diun.enable=true

Key Configuration Notes

Network

  • Uses network_mode: host

  • Required for:

    • DLNA / device discovery

    • Simpler local network access

  • Access via: http://192.168.86.100:8096


Storage

  • /mnt/sjb2/media → mounted NAS share containing movies/TV

  • Ensure NAS is mounted before container starts


Permissions

  • Runs with:

    • PUID=1026

    • PGID=100

  • Must match permissions on NAS files, otherwise media won’t show


Hardware Acceleration

  • Uses Intel iGPU via:

    • /dev/dri/renderD128

  • group_add: 44 → required for video access

  • Enables smoother playback and transcoding


Transcoding

  • /transcode directory mapped to local storage

  • shm_size: 2gb improves performance during transcodes


Setup Steps

  1. Mount Synology NAS to:
    /mnt/sjb2/media

  2. Create required directories:

    • /opt/docker/jellyfin/config

    • /opt/docker/jellyfin/transcode

  3. Start container:

    docker compose up -d
    
  4. Open web UI:
    http://192.168.86.100:8096

  5. Add media libraries inside Jellyfin UI


Problems / Fixes

Media not appearing

  • Cause: permission mismatch

  • Fix: ensure PUID/PGID matches NAS file ownership


Hardware acceleration not working

  • Check:

    ls /dev/dri
    
  • Ensure container has access to renderD128


NAS not mounted at boot

  • Container starts before mount is available

  • Fix:

    • Ensure proper fstab mount

    • Or restart container after boot


Result

Stable and reliable media server running on micropc.

  • Streams locally without issues

  • Hardware transcoding working

  • Media served directly from NAS


Notes

  • Managed with Docker Compose

  • Monitored via Dozzle logs

  • Updates tracked via DIUN