Was ist Jellyfin?

Jellyfin ist ein kostenloser Open-Source-Medienserver. Er streamt Ihre Filme, Serien, Musik und Fotos an Browser, Smartphones, Fernseher und andere Geräte und kann Videos während der Wiedergabe transcodieren. Das Projekt stellt ein offizielles Image, jellyfin/jellyfin, bereit, das auch als ghcr.io/jellyfin/jellyfin veröffentlicht wird. Das Projekt LinuxServer.io bietet ein weiteres Image, lscr.io/linuxserver/jellyfin, mit eigenen Ordnern und Variablen.

Beschreibung des Tools

Dieses Tool erstellt anhand der Installationsanleitung des Projekts eine compose.yaml für Jellyfin. Sie wählen das Image und den Tag, Ports und Netzwerk, den Benutzer, die Ordner für Konfiguration und cache sowie beliebig viele Medienordner aus, die schreibgeschützt eingebunden werden können. Mit dem offiziellen Image können Sie außerdem Ordner mit benutzerdefinierten Schriften und Ersatzschriften einbinden. Für die Grafikkarte fügt das Tool hinzu, was in der Jellyfin-Dokumentation beschrieben wird: /dev/dri und die Render-Gruppe für Intel und AMD oder die NVIDIA-Runtime und eine GPU-Reservierung für NVIDIA. Wenn Sie das LinuxServer.io-Image auswählen, ändert es die Datei, da dieses anstelle eines user die Variablen PUID, PGID und TZ verwendet. Alles wird in Ihrem Browser erstellt.

Funktionen

  • Das offizielle Image von Docker Hub oder der GitHub Container Registry oder das Image von LinuxServer.io mit einem beliebigen Tag
  • Der Bridge-Modus mit den Ports 8096 und 7359/udp, einem optionalen HTTPS-Port 8920 und einer Bind-Adresse oder der Host-Modus, den DLNA benötigt
  • Die veröffentlichte Server-URL für Clients, die den Server erkennen
  • Ein Benutzer im Format uid:gid für das offizielle Image oder PUID, PGID und die Zeitzone für LinuxServer.io
  • Konfiguration und cache auf dem Host oder in benannten Docker-Volumes, die für Sie deklariert werden
  • Mehrere Medienordner, jeweils mit einem Pfad im Container und der Option, sie schreibgeschützt einzubinden
  • Benutzerdefinierte Schriften und Ersatzschriften für Untertitel, die während der Transcodierung fest in das Bild eingebettet werden
  • Hardwarebeschleunigung mit VA-API oder QSV für Intel und AMD oder NVENC für NVIDIA
  • Beliebige weitere Umgebungsvariable, Kommentare zur Erläuterung der Datei und ein Download als compose.yaml

Beispiele

Die Standardeinstellungen entsprechen dem Beispiel aus der Jellyfin-Dokumentation, wobei sich die Ordner neben der Datei befinden:

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

Wenn Sie die NVIDIA-Hardwarebeschleunigung auswählen, werden die Runtime und die GPU-Reservierung hinzugefügt:

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

Tipps

  • Speichern Sie das Ergebnis als compose.yaml und starten Sie es mit docker compose up -d. Öffnen Sie anschließend http://localhost:8096 und fügen Sie Ihre Medienordner als Bibliotheken hinzu. Verwenden Sie dabei die Pfade im Container
  • Die Ausführung von Jellyfin in einem Container wird nur unter Linux unterstützt. Installieren Sie Jellyfin unter Windows und macOS nativ, da bekannt ist, dass Hardwarebeschleunigung und Bibliotheksscans dort in Containern nicht zuverlässig funktionieren
  • Ermitteln Sie die ID der Render-Gruppe auf dem Host mit getent group render | cut -d: -f3. Auf manchen Systemen heißt die Gruppe video oder input
  • Installieren Sie für NVIDIA zuerst den NVIDIA-Treiber und das NVIDIA Container Toolkit auf dem Host
  • Nachdem Sie die Hardwarebeschleunigung im Container aktiviert haben, schalten Sie sie im Jellyfin-Dashboard unter Wiedergabe, Transcodierung ein
  • DLNA ist ein Plugin und benötigt den Host-Modus, da die Erkennung Broadcasts auf Port 1900/udp verwendet, die den Bridge-Modus nicht passieren
  • Die Images des offiziellen Projekts und von LinuxServer.io speichern ihre Daten an unterschiedlichen Orten. Daher können Sie bei einem vorhandenen Ordner nicht einfach das eine durch das andere ersetzen
  • Binden Sie Medien schreibgeschützt ein, wenn Jellyfin sie nicht ändern muss