Wat is Jellyfin?

Jellyfin is een gratis mediaserver met open source. De server streamt je films, series, muziek en foto's naar browsers, telefoons, tv's en andere apparaten, en kan video on the fly transcoderen. Het project biedt een officiële image, jellyfin/jellyfin, die ook wordt gepubliceerd als ghcr.io/jellyfin/jellyfin. Het project LinuxServer.io biedt een andere image, lscr.io/linuxserver/jellyfin, met eigen mappen en variabelen.

Beschrijving van de tool

Deze tool maakt een compose.yaml voor Jellyfin op basis van de installatiehandleiding van het project. Je kiest de image en tag, poorten en netwerkconfiguratie, de gebruiker, de mappen voor configuratie en cache, en een willekeurig aantal mediamappen, die alleen-lezen kunnen worden aangekoppeld. Met de officiële image kun je ook mappen met aangepaste lettertypen en fallback-lettertypen koppelen. Voor de grafische kaart voegt de tool toe wat de Jellyfin-documentatie beschrijft: /dev/dri en de render-groep voor Intel en AMD, of de NVIDIA-runtime en een GPU-reservering voor NVIDIA. De tool wijzigt het bestand wanneer je de LinuxServer.io-image kiest, die PUID, PGID en TZ gebruikt in plaats van een user. Alles wordt in je browser aangemaakt.

Functies

  • De officiële image van Docker Hub of de GitHub Container Registry, of de image van LinuxServer.io, met elke gewenste tag
  • Bridge-modus met de poorten 8096 en 7359/udp, een optionele HTTPS-poort 8920 en een bindadres, of hostmodus, die DLNA nodig heeft
  • De gepubliceerde server-URL voor clients die de server automatisch ontdekken
  • Een gebruiker in de vorm uid:gid voor de officiële image, of PUID, PGID en de tijdzone voor LinuxServer.io
  • Configuratie en cache op de host of in benoemde Docker-volumes, die automatisch voor je worden gedeclareerd
  • Meerdere mediamappen, elk met een pad in de container en een optie om de map alleen-lezen aan te koppelen
  • Aangepaste lettertypen en fallback-lettertypen voor ondertitels die tijdens het transcoderen in de video worden ingebrand
  • Hardwareversnelling met VA-API of QSV voor Intel en AMD, of NVENC voor NVIDIA
  • Elke andere omgevingsvariabele, opmerkingen die het bestand uitleggen en een download als compose.yaml

Voorbeelden

De standaardinstellingen geven het voorbeeld uit de Jellyfin-documentatie, met de mappen naast het bestand:

services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    ports:
      - "8096:8096"
      - "7359:7359/udp"
    volumes:
      - ./config:/config
      - ./cache:/cache
      - /path/to/media:/media
    restart: unless-stopped

Als je NVIDIA-hardwareversnelling kiest, worden de runtime en de GPU-reservering toegevoegd:

runtime: nvidia
deploy:
  resources:
    reservations:
      devices:
        - driver: nvidia
          count: all
          capabilities:
            - gpu

Tips

  • Sla het resultaat op als compose.yaml en start het met docker compose up -d. Open vervolgens http://localhost:8096 en voeg je mediamappen toe als bibliotheken, waarbij je de paden in de container gebruikt
  • Jellyfin uitvoeren in een container wordt alleen ondersteund op Linux. Installeer Jellyfin op Windows en macOS rechtstreeks, omdat hardwareversnelling en bibliotheeks scans daar in containers niet goed werken
  • Zoek de ID van de render-groep op de host met getent group render | cut -d: -f3. Op sommige systemen heet de groep video of input
  • Installeer voor NVIDIA eerst het NVIDIA-stuurprogramma en de NVIDIA Container Toolkit op de host
  • Schakel hardwareversnelling na het inschakelen in de container ook in het Jellyfin-dashboard in onder Afspelen, Transcoderen
  • DLNA is een plugin en heeft hostmodus nodig, omdat het zoeken via broadcasts op poort 1900/udp verloopt en deze niet door de bridge gaan
  • De images van het officiële project en van LinuxServer.io slaan hun gegevens op verschillende plaatsen op, dus je kunt de ene niet vervangen door de andere in een bestaande map
  • Koppel media alleen-lezen aan wanneer Jellyfin deze niet hoeft te wijzigen