MAATRIX / Блог / Emby в Docker Compose: готовый файл

Emby в Docker Compose: готовый файл

MAATRIX

Домашняя коллекция фильмов и сериалов рано или поздно упирается в вопрос — где это всё крутить. Plex просит подписку за аппаратное транскодирование, Jellyfin временами капризничает с клиентами на смарт-ТВ, а разворачивать медиасервер руками с нуля неохота. Ниже — рабочий docker-compose.yml для Emby, который поднимается за пять минут на арендованном сервере или домашнем железе, плюс всё, что нужно знать про тома, аппаратное ускорение и бэкапы, прежде чем заливать туда терабайты медиатеки.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Чем Emby отличается от Plex и Jellyfin

Emby — золотая середина между полностью открытым Jellyfin и коммерческим Plex. Ядро бесплатное и достаточно стабильное, клиенты есть почти на всех платформах, а часть продвинутых функций (аппаратное транскодирование, синхронизация для офлайн-просмотра, часть плагинов) закрыта подпиской Emby Premiere — разовой или помесячной.

ПараметрEmbyPlexJellyfin
Исходный кодчастично открытзакрытполностью открыт
HW-транскодированиеплатно (Premiere)платно (Plex Pass)бесплатно
Клиенты на ТВ/приставкахмного, стабильныебольше всегоменьше, встречаются баги
DLNA из коробкидаограниченнода
Разовая лицензия навсегдаестьнет (только подписка)не нужна

Если принципиально важен полностью бесплатный стек — присмотритесь к Jellyfin или сравнению вариантов в статье Jellyfin или Plex — что выбрать. Emby стоит выбирать, если хочется совместимости клиентов Plex-уровня, но без ежемесячной подписки за базовый функционал.

Что подготовить на сервере перед запуском

Понадобится Linux-сервер с установленным Docker и Docker Compose — если их ещё нет, разверните по инструкции для Ubuntu 24.04 или Debian 12. Дальше — структура каталогов, чтобы медиатека не путалась с конфигом:

mkdir -p /opt/emby/config
mkdir -p /mnt/media/movies
mkdir -p /mnt/media/tvshows
mkdir -p /mnt/media/music

Разделение принципиально: /opt/emby/config — это метаданные, база пользователей, история просмотров, плагины (маленький объём, но критичный для бэкапа). /mnt/media/* — сами файлы фильмов и сериалов, тут может быть несколько терабайт, и это то, что вы монтируете отдельным диском или сетевым хранилищем.

Узнайте UID и GID пользователя, от имени которого будет работать контейнер — это избавит от проблем с правами на файлы:

id -u
id -g

Если сервер арендован специально под медиасервер, оцените заранее объём диска — раздел про ресурсы ниже поможет прикинуть цифры.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Готовый docker-compose.yml для Emby

Базовый вариант с проброшенными портами — подходит для большинства случаев, включая доступ через обратный прокси:

version: "3.8"

services:
  emby:
    image: emby/embyserver:latest
    container_name: emby
    restart: unless-stopped
    environment:
      - UID=1000
      - GID=1000
      - GIDLIST=1000
      - TZ=Europe/Moscow
    volumes:
      - /opt/emby/config:/config
      - /mnt/media/movies:/media/movies
      - /mnt/media/tvshows:/media/tvshows
      - /mnt/media/music:/media/music
    ports:
      - "8096:8096"       # HTTP-интерфейс
      - "8920:8920"       # HTTPS (опционально)
      - "1900:1900/udp"   # DLNA discovery
      - "7359:7359/udp"   # автообнаружение клиентов в сети

Если серверу нужен доступ по DLNA внутри локальной сети (например, для Smart TV без отдельного клиента), удобнее сетевой режим host — тогда автообнаружение работает без проброса каждого порта отдельно:

services:
  emby:
    image: emby/embyserver:latest
    container_name: emby
    restart: unless-stopped
    network_mode: host
    environment:
      - UID=1000
      - GID=1000
      - TZ=Europe/Moscow
    volumes:
      - /opt/emby/config:/config
      - /mnt/media/movies:/media/movies
      - /mnt/media/tvshows:/media/tvshows

Режим host не годится, если сервер публично смотрит в интернет без файрвола — в этом случае лучше первый вариант с явным списком портов и отдельным контролем через ufw.

Запуск:

cd /opt/emby
docker compose up -d
docker compose logs -f

Аппаратное ускорение транскодирования: iGPU и NVIDIA

Без аппаратного ускорения транскодирование 4K-потока на CPU легко упирается в 100% загрузки одного-двух ядер — для одного зрителя терпимо, для нескольких одновременных стримов уже проблема. Если на сервере есть встроенная графика Intel с поддержкой QuickSync, прокиньте /dev/dri в контейнер:

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

На хосте пользователь, от которого работает Docker, должен входить в группу render или video — иначе устройство будет видно, но недоступно на запись:

sudo usermod -aG render,video $USER

Для видеокарт NVIDIA нужен nvidia-container-toolkit на хосте и указание рантайма в compose-файле:

    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
      - NVIDIA_DRIVER_CAPABILITIES=all

Важный нюанс, который не все упоминают: сама возможность включить аппаратное транскодирование в настройках Emby (Playback → Transcoding) доступна только при активной подписке Emby Premiere. Без неё сервер тоже транскодирует, но программно на CPU — это работает, просто медленнее и требовательнее к процессору. Планируя железо, закладывайте это заранее, а не после того, как упрётесь в лимит одновременных потоков.

Первый запуск и настройка библиотек

Откройте http://IP-сервера:8096/web — запустится мастер первоначальной настройки: создание администратора, добавление библиотек. Пути внутри мастера должны совпадать с точками монтирования из compose-файла — например, для библиотеки фильмов указывайте /media/movies, а не путь с хоста.

Для доступа снаружи локальной сети есть два пути:

  • Проброс порта на роутере или в файрволе облачного сервера на 8096/8920 — самый простой вариант для личного использования.
  • Обратный прокси с доменом и SSL — через Caddy с авто-SSL или Nginx как reverse proxy, если хочется красивый адрес вида emby.example.com вместо IP с портом.

Второй вариант выглядит аккуратнее и не палит IP сервера напрямую, но требует отдельного домена — если такого ещё нет, это отдельная разовая настройка минут на 15.

Бэкап конфигурации и восстановление

Файлы фильмов бэкапить обычно не нужно — это исходники, которые и так где-то хранятся. А вот каталог /opt/emby/config стоит беречь: там метаданные, обложки, история просмотров, настройки пользователей и установленные плагины. Потерять его — не катастрофа, но пересобирать библиотеку заново с нуля неприятно.

Простой вариант — архив по расписанию:

tar -czf /backup/emby-config-$(date +%F).tar.gz -C /opt/emby config

Добавьте это в cron с ротацией старых архивов. Для более серьёзного подхода с версионированием и дедупликацией удобнее готовый контейнер — например, restic в Docker Compose, направленный на тот же каталог /opt/emby/config.

Перед серьёзным обновлением образа (docker compose pull && docker compose up -d) лишним не будет ручной снапшот конфига — откат в случае неудачной миграции базы данных займёт секунды.

Ресурсы сервера: сколько CPU/RAM/диска нужно

Точные цифры зависят от количества одновременных зрителей и от того, идёт ли прямой проброс потока (direct play) или транскодирование, поэтому ниже — ориентир, а не гарантированные значения:

  • RAM: 2 ГБ хватает на сам сервис и один-два потока в режиме direct play; для нескольких одновременных транскодирований комфортнее 4 ГБ и больше.
  • CPU: программное транскодирование одного 1080p-потока обычно требует пары современных ядер; для 4K программным способом нужен запас в 3-4 раза больше — здесь и выручает аппаратное ускорение из раздела выше.
  • Диск: под саму медиатеку закладывайте с запасом — библиотека имеет свойство расти быстрее, чем кажется на старте. Отдельно держите системный диск под /opt/emby/config и Docker, чтобы разрастание медиатеки не упиралось в место для логов и метаданных.

Если сервис перерастает возможности домашнего NAS или обычного VPS — например, коллекция за терабайты и несколько зрителей одновременно с транскодированием в 4K — разумнее сразу смотреть в сторону выделенного сервера с нормальным диском и, при необходимости, видеокартой. Подробнее про конфигурации под такие задачи — в статье про выделенный сервер для медиахостинга.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли запустить Emby без подписки Premiere вообще?

Да, ядро сервера бесплатно и полнофункционально для организации библиотеки и стриминга. Премиум даёт аппаратное транскодирование, синхронизацию для офлайн-просмотра и часть косметических функций мобильных клиентов.

Что делать, если контейнер видит /dev/dri, но транскодирование всё равно падает на CPU?

Проверьте, что пользователь Docker входит в группу render/video на хосте, и что в настройках Emby включено именно аппаратное ускорение (Premiere-функция) — без активной лицензии переключатель просто недоступен.

Нужно ли открывать порт 8920 (HTTPS), если уже настроен обратный прокси?

Нет, если весь внешний трафик идёт через Caddy или Nginx с собственным SSL-сертификатом, порт 8920 можно не пробрасывать наружу — оставьте его закрытым файрволом.

Как перенести Emby на другой сервер?

Остановите контейнер, скопируйте каталог /opt/emby/config на новый сервер, разверните тот же compose-файл с обновлёнными путями до медиатеки и запустите — идентификаторы пользователей и история просмотров сохранятся.

Почему клиент на Smart TV не находит сервер в локальной сети?

Скорее всего, используется сетевой режим bridge с непроброшенными UDP-портами автообнаружения (1900, 7359). Либо переключитесь на network_mode: host, либо добавьте сервер в клиенте вручную по IP.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →