Czym jest Jellyfin?

Jellyfin to bezpłatny serwer multimediów o otwartym kodzie źródłowym. Przesyła strumieniowo filmy, programy, muzykę i zdjęcia do przeglądarek, telefonów, telewizorów oraz innych urządzeń, a także może transkodować wideo w locie. Projekt udostępnia oficjalny obraz jellyfin/jellyfin, który jest również publikowany jako ghcr.io/jellyfin/jellyfin. Projekt LinuxServer.io oferuje inny obraz, lscr.io/linuxserver/jellyfin, z własnymi folderami i zmiennymi.

Opis narzędzia

To narzędzie tworzy plik compose.yaml dla Jellyfin na podstawie instrukcji instalacji projektu. Możesz wybrać obraz i tag, porty oraz sieć, użytkownika, foldery konfiguracji i cache, a także dowolną liczbę folderów multimediów, które mogą być montowane tylko do odczytu. W przypadku oficjalnego obrazu możesz również zamontować foldery z niestandardowymi fontami i fontami zastępczymi. Dla karty graficznej narzędzie dodaje elementy opisane w dokumentacji Jellyfin: /dev/dri oraz grupę renderowania dla Intel i AMD albo runtime NVIDIA i rezerwację GPU dla NVIDIA. Narzędzie zmienia plik po wybraniu obrazu LinuxServer.io, który zamiast user korzysta ze zmiennych PUID, PGID i TZ. Wszystko jest tworzone w przeglądarce.

Funkcje

  • Oficjalny obraz z Docker Hub lub GitHub Container Registry albo obraz z LinuxServer.io, z dowolnym tagiem
  • Tryb bridge z portami 8096 i 7359/udp, opcjonalnym portem HTTPS 8920 oraz adresem nasłuchiwania albo tryb hosta, którego wymaga DLNA
  • Opublikowany URL serwera dla klientów, które wykrywają serwer
  • Użytkownik w formacie uid:gid dla oficjalnego obrazu albo PUID, PGID i strefa czasowa dla LinuxServer.io
  • Konfiguracja i cache na hoście lub w nazwanych woluminach Docker, które są deklarowane automatycznie
  • Kilka folderów multimediów, każdy ze ścieżką w kontenerze i opcją zamontowania go tylko do odczytu
  • Niestandardowe fonty i fonty zastępcze dla napisów osadzanych w obrazie podczas transkodowania
  • Akceleracja sprzętowa z VA-API lub QSV dla Intel i AMD albo NVENC dla NVIDIA
  • Dowolna inna zmienna środowiskowa, komentarze objaśniające plik oraz możliwość pobrania pliku jako compose.yaml

Przykłady

Ustawienia domyślne tworzą przykład z dokumentacji Jellyfin, z folderami znajdującymi się obok pliku:

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

Wybranie akceleracji sprzętowej NVIDIA dodaje runtime i rezerwację GPU:

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

Wskazówki

  • Zapisz wynik jako compose.yaml i uruchom go poleceniem docker compose up -d. Następnie otwórz http://localhost:8096 i dodaj foldery multimediów jako biblioteki, używając ścieżek w kontenerze
  • Uruchamianie Jellyfin w kontenerze jest obsługiwane tylko w systemie Linux. W systemach Windows i macOS zainstaluj Jellyfin natywnie, ponieważ wiadomo, że akceleracja sprzętowa i skanowanie bibliotek nie działają poprawnie w kontenerach na tych systemach
  • Sprawdź identyfikator grupy renderowania na hoście za pomocą polecenia getent group render | cut -d: -f3. W niektórych systemach grupa nosi nazwę video lub input
  • W przypadku NVIDIA najpierw zainstaluj na hoście sterownik NVIDIA oraz NVIDIA Container Toolkit
  • Po włączeniu akceleracji sprzętowej w kontenerze włącz ją również w panelu Jellyfin, w sekcji Odtwarzanie, Transkodowanie
  • DLNA jest wtyczką i wymaga trybu hosta, ponieważ wykrywanie korzysta z rozgłoszeń na porcie 1900/udp, które nie przechodzą przez bridge
  • Obrazy oficjalnego projektu i LinuxServer.io przechowują dane w różnych miejscach, dlatego nie możesz zamienić jednego obrazu na drugi w istniejącym folderze
  • Zamontuj multimedia tylko do odczytu, jeśli Jellyfin nie musi ich modyfikować