Что такое Jellyfin?

Jellyfin — это бесплатный медиасервер с открытым исходным кодом. Он передаёт ваши фильмы, сериалы, музыку и фотографии в браузеры, на телефоны, телевизоры и другие устройства, а также может выполнять транскодирование видео на лету. Проект предоставляет официальный образ jellyfin/jellyfin, который также публикуется как ghcr.io/jellyfin/jellyfin. Проект LinuxServer.io предлагает другой образ — lscr.io/linuxserver/jellyfin — со своими папками и переменными.

Описание инструмента

Этот инструмент создаёт файл compose.yaml для Jellyfin на основе руководства по установке проекта. Вы выбираете образ и тег, порты и сетевой режим, пользователя, папки для конфигурации и cache, а также любое количество папок с медиаданными, которые можно подключить только для чтения. При использовании официального образа можно также подключить папки с пользовательскими и резервными шрифтами. Для видеокарты инструмент добавляет параметры, описанные в документации Jellyfin: /dev/dri и группу render для Intel и AMD либо runtime NVIDIA и резервирование GPU для NVIDIA. При выборе образа LinuxServer.io файл изменяется с учётом использования PUID, PGID и TZ вместо user. Всё создаётся в браузере.

Возможности

  • Официальный образ из Docker Hub или GitHub Container Registry либо образ LinuxServer.io с любым тегом
  • Режим bridge с портами 8096 и 7359/udp, необязательным HTTPS-портом 8920 и адресом привязки либо режим host, необходимый для DLNA
  • Опубликованный URL сервера для клиентов, которые обнаруживают сервер
  • Пользователь в формате uid:gid для официального образа либо PUID, PGID и часовой пояс для LinuxServer.io
  • Конфигурация и cache на хосте или в именованных томах Docker, которые объявляются автоматически
  • Несколько папок с медиаданными, для каждой из которых можно указать путь в контейнере и включить подключение только для чтения
  • Пользовательские и резервные шрифты для субтитров, которые встраиваются при транскодировании
  • Аппаратное ускорение с помощью VA-API или QSV для Intel и AMD либо NVENC для NVIDIA
  • Любая другая переменная окружения, комментарии с пояснениями к файлу и скачивание файла как compose.yaml

Примеры

Настройки по умолчанию создают пример из документации Jellyfin, где папки находятся рядом с файлом:

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

Выбор аппаратного ускорения NVIDIA добавляет runtime и резервирование GPU:

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

Советы

  • Сохраните результат как compose.yaml и запустите его с помощью docker compose up -d. Затем откройте http://localhost:8096 и добавьте папки с медиаданными в качестве библиотек, используя пути внутри контейнера
  • Запуск Jellyfin в контейнере поддерживается только в Linux. В Windows и macOS устанавливайте Jellyfin напрямую, поскольку известно, что аппаратное ускорение и сканирование библиотек работают в контейнерах нестабильно
  • Узнайте ID группы render на хосте с помощью команды getent group render | cut -d: -f3. В некоторых системах эта группа называется video или input
  • Для NVIDIA сначала установите на хосте драйвер NVIDIA и NVIDIA Container Toolkit
  • После включения аппаратного ускорения в контейнере активируйте его в панели управления Jellyfin в разделах «Воспроизведение» и «Транскодирование»
  • DLNA — это плагин, которому требуется режим host, поскольку обнаружение использует широковещательные сообщения через порт 1900/udp, не проходящие через bridge
  • Официальный проект и LinuxServer.io хранят данные своих образов в разных местах, поэтому нельзя заменить один образ другим в уже существующей папке
  • Подключайте медиаданные только для чтения, если Jellyfin не требуется изменять их