Skip to main content

Instalace Jellyfin multimédia server

1) Připrav adresáře a práva

/usr/bin/sudo /usr/bin/mkdir -p /opt/jellyfin/{config,cache,media,transcode}
/usr/bin/sudo /usr/bin/chown -R $USER:$USER /opt/jellyfin
/usr/bin/sudo /usr/bin/chmod -R 775 /opt/jellyfin

Tip: do /opt/jellyfin/media si nakopíruj knihovny (Filmy, Seriály, Hudba…).

Volitelné (lepší výkon při transkódování – tmpfs v RAM, zhruba 2–4 GB):

# pokud chceš mít transcode v RAM, přidej tmpfs mount do systému:
# (volitelné – pokud to nechceš, přeskoč)
/usr/bin/echo "tmpfs /opt/jellyfin/transcode tmpfs defaults,size=4g 0 0" | /usr/bin/sudo /usr/bin/tee -a /etc/fstab
/usr/bin/sudo /usr/bin/mount -a

2) YAML pro Portainer (Stack)

V Portaineru půjdeš na Stacks → Add stack a vložíš tento kód. Je kompatibilní se “standalone” Dockerem v Portaineru i se Swarmem (části pro GPU jsou okomentované).

Používám image lscr.io/linuxserver/jellyfin (má PUID/PGID a jednoduchá práva).

version: "3.8"

services:
  jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped

    environment:
      - PUID=1000                    # UID uživatele, který vlastní /opt/jellyfin
      - PGID=1000                    # GID uživatele, který vlastní /opt/jellyfin
      - TZ=Europe/Prague
      - UMASK=002

    ports:
      - "8096:8096"                  # HTTP
      # - "8920:8920"                # HTTPS (pokud budeš řešit certy přímo v Jellyfin)
      # DLNA/Discovery – povol jen pokud je potřebuješ:
      - "7359:7359/udp"              # Jellyfin discovery
      - "1900:1900/udp"              # DLNA

    volumes:
      - /opt/jellyfin/config:/config
      - /opt/jellyfin/cache:/cache
      - /opt/jellyfin/media:/media:ro
      - /opt/jellyfin/transcode:/transcode

    # HARDWARE AKCELERACE (vyber si variantu a odkomentuj):
    # ----- INTEL/AMD VAAPI (nejběžnější) -----
    # devices:
    #   - /dev/dri:/dev/dri
    # Pozn.: na některých Ubuntu je vhodné přidat skupiny video/render podle GID na hostu:
    # group_add:
    #   - "44"   # video (ověř: /usr/bin/getent group video)
    #   - "109"  # render (ověř: /usr/bin/getent group render)

    # ----- NVIDIA (pomocí nvidia-container-toolkit) -----
    # environment:
    #   - NVIDIA_VISIBLE_DEVICES=all
    #   - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - capabilities: ["gpu"]

    # Síť – vystačí defaultní bridge; pokud chceš samostatnou síť, vytvoř a přiřaď:
    # networks:
    #   - jellyfin_net

# networks:
#   jellyfin_net:
#     driver: bridge

Pokud nasazuješ v Docker Swarmu, můžeš tento YAML rovnou použít jako stack i ve Swarm režimu. Pro NVIDIA v Swarmu ponech deploy.resources.reservations.devices (jak je výše okomentováno).

3) Nasazení v Portaineru

  1. Otevři Portainer → Stacks → Add stack.

  2. Name: jellyfin

  3. Do editoru vlož výše uvedený YAML.

  4. Klikni Deploy the stack.

Po doběhnutí startu otevři web:

  • http://<IP_tvého_PC>:8096

První průvodce nastaví knihovny (/media), jazyk, uživatele a volitelně DLNA.


4) Volitelně: Intel/AMD/NVIDIA HW akcelerace

Základ (Intel/AMD – VAAPI)

  1. Ověř, že host vidí GPU:


    /usr/bin/ls -l /dev/dri

    V YAML odkomentuj:


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

    (Volitelně) přidej group_add s GID skupin video a render:

    /usr/bin/getent group video
    /usr/bin/getent group render

    a čísla dosaď do YAML.

    NVIDIA

    1. Nainstaluj nvidia-container-toolkit:

      /usr/bin/sudo /usr/bin/apt-get update
      /usr/bin/sudo /usr/bin/apt-get install -y nvidia-container-toolkit
      /usr/bin/sudo /usr/bin/nvidia-ctk runtime configure --runtime=docker
      /usr/bin/sudo /usr/bin/systemctl restart docker
    1. V YAML odkomentuj NVIDIA sekci (env + deploy.devices).

    Po nasazení povol HW akceleraci v Jellyfin: Dashboard → Playback → Transcoding → Hardware acceleration (VAAPI/NVENC).


    5) Kontrola a logy
     
    /usr/bin/docker ps --filter "name=jellyfin"
    /usr/bin/docker logs -f jellyfin


    6) Aktualizace Jellyfinu (bez ztráty dat)

    V Portaineru otevři stack jellyfinUpdate the stack (ponech :latest), Portainer provede re-deploy.
    Nebo přes CLI:

     

    /usr/bin/docker pull lscr.io/linuxserver/jellyfin:latest
    /usr/bin/docker stop jellyfin
    /usr/bin/docker rm jellyfin
    # pokud je to stack (swarm), použij spíš Portainer Update nebo:
    # /usr/bin/docker stack deploy -c /cesta/k/jellyfin.yml jellyfin

     Data zůstávají v /opt/jellyfin/config a knihovny v /opt/jellyfin/media.