vrijdag 17 oktober 2025

Jellyfin server in docker op de QNAP nas

 Complete setup Jellyfin op QNAP

Ik ga uit van de volgende zaken:

de QNAP heeft een intel processor. in mijn geval een Intel celeron. En een externe USB harddisk met daarop de jellyfin film bestanden op share/external/DEV3303_1

Als dat jij jouw systeem anders is, dien je de opdrachten dienovereenkomstig aan te passen.

Log in met SSH in het admin account. Vaak moet je dat activeren, omdat dat op veel QNAP nas apparaten is uitgezet. Doe dat in Control Panel, Bevoegdheden, gebruikers en klik dan op het knopje "wijzig gebruikers profiel"achter admin als deze de status uitgeschakeld heeft.

Onder rnetwerk en bestandsservice staat telnet/SSH waar je de SSH service kunt aanzetten. Daarna kun je met een programma zoals remmina inloggen in een SSH sessie van de NAS. de commando'sdie hier staan genoteerd worden gegeven in deze SSH omgeving.


Mappen aanmaken voor config en cachecd /share/Container

mkdir -p jellyfin/config

mkdir -p jellyfin/cache

Hier slaat Jellyfin zijn instellingen en cache op
Altijd persistent, dus updates van Docker vernietigen deze mappen niet

Controleer USB-schijf

Je USB-schijf zit in mijn geval op /share/external/DEV3303_1.
Controleer:

ls /share/external/DEV3303_1

Je zou de films en mappen moeten zien

Geen extra mount nodig, Docker kan er direct bij als we PUID/PGID op 0 zetten

check of er hardware transcoding mogelijk is:

Aangezien je een Intel-processor hebt, kun je hardware-versnelling gebruiken.

  1. Zorg dat /dev/dri beschikbaar is op je NAS:

ls /dev/dri

Als je 

card0  renderD128 

ziet dan zit je goed en moet je deze regel ook gebruiken:

devices:

  - /dev/dri:/dev/dri


in Jellyfin zelf activeer je de hardware versnelling straks met:

  • Ga naar Instellingen → Afspelen → Transcodering

  • Zet “Hardware Acceleration” aan → kies “Intel QuickSync”


Maar nu eerst:

Maak docker-compose.yml aan

Ga naar de Jellyfin-map:

cd /share/Container/jellyfin

Maak het bestand:

vi docker-compose.yml

Druk i om insert mode te starten
Plak dit:


services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    network_mode: host    
    environment:
      - TZ=Europe/Amsterdam
      - PUID=0
      - PGID=0
    volumes:
      - /share/CACHEDEV1_DATA/Container/jellyfin/config:/config
      - /share/CACHEDEV1_DATA/Container/jellyfin/cache:/cache
      - /share/external/DEV3303_1:/media
    devices:
      - /dev/dri:/dev/dri
    restart: unless-stopped

Opslaan en vi verlaten:

  1. Druk Esc

  2. Typ :wq

  3. Druk Enter


de regels 
devices:
      - /dev/dri:/dev/dri

alleen  gebruiken als je eerder met

ls /dev/dri

dit als output kreeg:

card0  renderD128 

Zo niet, dan laat je die twee regels weg.

Container starten


docker compose up -d

  • Docker downloadt de laatste Jellyfin image
  • Container draait direct op poort 8096 en is zichtbaar in het netwerk
  • /media verwijst naar je USB-schijf
  • Intel QuickSync hardware-transcodering is actief

Controleer:

docker ps


Jellyfin configureren via browser

Open:

http://<NAS-IP>:8096

  1. Doorloop setup-wizard → admin account

  2. Voeg mediabibliotheek toe → pad: /media

  3. Hardware-transcodering aanzetten:

    • Instellingen → Afspelen → Transcodering → Hardwareversnelling

    • Kies Intel QuickSync (VAAPI)

Test met een film → Dashboard → Activiteit → “Hardware acceleration: Yes (QSV)”


Updates van Jellyfin uitvoeren via SSH

Activeer zonodig eerst jouw admin gebruiker. Deze commando's moeten vanuit die gebruiker worden ingegeven.

Eerst naar de map gaan waarin de docker compose file van jellyfin staat. Op mijn QNAP is dat in:

/share/CACHEDEV1_DATA/Container/jellyfin/

Als dat bij jou ergens anders is kun je de juiste compose file met dit commando vinden:

find /share -type f -name "docker-compose.yml" 2>/dev/null

Zodra je de jellyfin compose file gevonden hebt, kun je dit commando stoppen met CTRL-C

Ga met dit commando naar die map en vul de juiste map in voor jouw jellyfin compose file:

cd /share/CACHEDEV1_DATA/Container/jellyfin/

Dankzij docker-compose is het updaten vervolgens heel eenvoudig:

  • Stop oude container (optioneel, meestal niet nodig)
docker compose down

  • Download nieuwste Jellyfin image:
docker compose pull

  • Herstart container:
docker compose up -d

Alle instellingen en cache blijven behouden in config en cache mappen
Container draait weer met de nieuwe versie
controleer of de docker weer draait met:

docker ps

Updaten via de GUI van container station is ook mogelijk

Dat kan handmatig via Container Station

  1. Ga naar Container Station → InstallatiekopieĆ«n

  2. Zoek het image jellyfin/jellyfin

  3. Klik op tandwiel en dan Ophalen 

  4. Wacht tot de download klaar is

  5. Stop de Jellyfin-container

  6. Start hem opnieuw

✅ Je instellingen blijven behouden omdat ze in /config staan.

Automatisch updaten via watchtower

Nog handiger is om watchtower te installeren en die de updates automatisch te laten doen:

start de SSH shell en geef het volgende commando:

docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower

Bij mij bleek watchtower echter geregeld vast te lopen en dan heb je er niks aan.

Handige extra commando’s vanuit de SSH shell

  • Logs bekijken:

docker-compose logs -f

  • Container stoppen:
docker-compose stop

  • Container verwijderen (zonder data):

docker-compose rm

  • Containers en images schoonmaken:
docker-system prune -a

Tips voor QNAP

  • Gebruik altijd /share/Container of /share/Public voor Docker volumes, nooit /share/system

  • PUID=0 en PGID=0 geeft volledige toegang tot USB-schijf

  • Config- en cache-mappen zorgen dat updates veilig zijn

  • Docker Compose maakt toekomstige updates en beheer supersimpel



Installeren van Jellyfin op de QNAP NAS

zonder yaml file kan ook:

Ik ga er van uit dat de volgende mappen in gebruik zijn:

/share/CACHEDEV1_DATA/Container/jellyfin/config:/config \ /share/CACHEDEV1_DATA/Container/jellyfin/cache:/cache \ /share/external/DEV3303_1:/media \

gebruik netwerkmode host in plaats van bridge als je wilt dat de jellyfin server ontdekbaar is op
het netwerk.

log in op het admin account via SSH. Zo nodig moet je dat account eerst aanzetten.

stop de bestaande container

docker stop jellyfin

Check of deze is gestopt

docker ps -a | grep jellyfin

Verwijder de oude zonder de settings

docker rm jellyfin

installeer met de nieuwe settings:

docker run -d \ --name=jellyfin \ --network=host \ --device /dev/dri:/dev/dri \ -v /share/CACHEDEV1_DATA/Container/jellyfin/config:/config \ -v /share/CACHEDEV1_DATA/Container/jellyfin/cache:/cache \ -v /share/external/DEV3303_1:/media \ --restart unless-stopped \ jellyfin/jellyfin:latest

Uitleg van de opties:

  • -d → container draait op de achtergrond

  • --name=jellyfin → container heet jellyfin

  • --network=host → host mode (Chromecast autodiscovery werkt)

  • --device /dev/dri:/dev/dri → hardware transcoding

  • -v … → koppeling van je bestaande configuratie, cache en media

  • --restart unless-stopped → container start automatisch bij reboot

  • jellyfin/jellyfin:latest → de officiĆ«le Jellyfin image

Check of de nieuwe docker draait:

docker ps | grep jellyfin

eventueel kun je vanuit conrainer station de oude jellyfin nu verwijderen. Upodaten is dan ingewikkelder en gaat met dit commando:

docker pull jellyfin/jellyfin:latest && \ docker stop jellyfin && docker rm jellyfin && \ docker run -d \ --name=jellyfin \ --network=host \ --device /dev/dri:/dev/dri \ -v /share/CACHEDEV1_DATA/Container/jellyfin/config:/config \ -v /share/CACHEDEV1_DATA/Container/jellyfin/cache:/cache \ -v /share/external/DEV3303_1:/media \ --restart unless-stopped \ jellyfin/jellyfin:latest



Geen opmerkingen:

Een reactie posten

Opmerking: Alleen leden van deze blog kunnen een reactie posten.

Firefox op een touchscreen / aanraakscherm

Dit is een bekend (en frustrerend) Firefox-probleem op Windows 11 met touchscreens. Standaard interpreteert Firefox een touch-actie vaak als...