O que é o Jellyfin?

O Jellyfin é um servidor de mídia gratuito e de código aberto. Ele transmite seus filmes, séries, músicas e fotos para navegadores, celulares, TVs e outros dispositivos, e pode transcodificar vídeos em tempo real. O projeto fornece uma imagem oficial, jellyfin/jellyfin, que também é publicada como ghcr.io/jellyfin/jellyfin. O projeto LinuxServer.io oferece outra imagem, lscr.io/linuxserver/jellyfin, com suas próprias pastas e variáveis.

Descrição da ferramenta

Esta ferramenta cria um compose.yaml para o Jellyfin com base no guia de instalação do projeto. Você escolhe a imagem e a tag, as portas e a rede, o usuário, as pastas de configuração e cache e qualquer quantidade de pastas de mídia, que podem ser montadas como somente leitura. Com a imagem oficial, você também pode montar pastas com fontes personalizadas e fontes alternativas. Para a placa gráfica, a ferramenta adiciona o que a documentação do Jellyfin descreve: /dev/dri e o grupo render para Intel e AMD, ou o runtime da NVIDIA e uma reserva de GPU para NVIDIA. Ela altera o arquivo quando você escolhe a imagem do LinuxServer.io, que usa PUID, PGID e TZ em vez de user. Tudo é criado no seu navegador.

Recursos

  • A imagem oficial do Docker Hub ou do GitHub Container Registry, ou a imagem do LinuxServer.io, com qualquer tag
  • Modo bridge com as portas 8096 e 7359/udp, uma porta HTTPS opcional 8920 e um endereço de bind, ou modo host, necessário para DLNA
  • A URL publicada do servidor para clientes que descobrem o servidor
  • Um usuário no formato uid:gid para a imagem oficial, ou PUID, PGID e o fuso horário para o LinuxServer.io
  • Configuração e cache no host ou em volumes Docker nomeados, declarados automaticamente para você
  • Várias pastas de mídia, cada uma com um caminho no container e uma opção para montá-la como somente leitura
  • Fontes personalizadas e fontes alternativas para legendas incorporadas durante a transcodificação
  • Aceleração de hardware com VA-API ou QSV para Intel e AMD, ou NVENC para NVIDIA
  • Qualquer outra variável de ambiente, comentários que explicam o arquivo e um download como compose.yaml

Exemplos

As configurações padrão fornecem o exemplo da documentação do Jellyfin, com as pastas ao lado do arquivo:

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

Escolher a aceleração de hardware NVIDIA adiciona o runtime e a reserva de GPU:

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

Dicas

  • Salve o resultado como compose.yaml e inicie-o com docker compose up -d. Em seguida, abra http://localhost:8096 e adicione suas pastas de mídia como bibliotecas, usando os caminhos no container
  • A execução do Jellyfin em um container só é compatível com Linux. No Windows e no macOS, instale o Jellyfin nativamente, pois a aceleração de hardware e as verificações de bibliotecas apresentam problemas conhecidos em containers nesses sistemas
  • Encontre o ID do grupo render no host com getent group render | cut -d: -f3. Em alguns sistemas, o grupo é video ou input
  • Para NVIDIA, instale primeiro o driver da NVIDIA e o NVIDIA Container Toolkit no host
  • Depois de ativar a aceleração de hardware no container, habilite-a no painel do Jellyfin, em Reprodução, Transcodificação
  • DLNA é um plugin e precisa do modo host, pois sua descoberta usa broadcasts na porta 1900/udp, que não atravessam o bridge
  • As imagens do projeto oficial e do LinuxServer.io armazenam seus dados em locais diferentes, portanto não é possível trocar uma pela outra em uma pasta existente
  • Monte as mídias como somente leitura quando o Jellyfin não precisar modificá-las