Jellyfin на VPS: как создать собственный медиасервер
Папка с видео редко похожа на удобную медиатеку: названия файлов оформлены по-разному, субтитры лежат отдельно, а нужный эпизод приходится искать вручную. Jellyfin превращает такой архив в личный потоковый сервис с постерами, описаниями, профилями пользователей и сохранением прогресса просмотра.
При этом Jellyfin не продает подписку и не предоставляет готовый каталог контента. Он работает с вашими файлами и может запускаться на домашнем компьютере, NAS или VPS. Ниже рассмотрим его возможности, требования к серверу и установку на Ubuntu с доменным именем и HTTPS.
Что такое Jellyfin и зачем он нужен
Jellyfin — бесплатный медиасервер с открытым исходным кодом. Сервер индексирует фильмы, сериалы, музыку, фотографии и другой контент, а клиентские приложения воспроизводят его на телефоне, компьютере или телевизоре.
После сканирования папок Jellyfin загружает постеры и описания, распределяет сериалы по сезонам, запоминает прогресс просмотра и показывает раздел «Продолжить просмотр». Можно создать отдельные локальные профили для членов семьи, ограничить доступ к медиатекам и настроить родительский контроль. Quick Connect позволяет войти на телевизоре по короткому коду, не вводя длинный пароль.
Клиенты доступны для Android, iOS, Android TV, Roku, webOS, Tizen, Xbox и настольных компьютеров. Jellyfin также предоставляет веб-интерфейс и интеграцию с Kodi.
Кроме того, Jellyfin поддерживает музыку, IPTV, ТВ-тюнеры и запись прямого эфира. SyncPlay синхронизирует воспроизведение для нескольких пользователей, а плагины добавляют субтитры, новые источники метаданных и интеграции.
Jellyfin не ищет и не скачивает фильмы самостоятельно. Он только организует и передает контент, который уже есть у владельца сервера.
Jellyfin и Plex: основные различия
Оба решения превращают локальную коллекцию в медиасервис, но используют разные модели.
| Параметр | Jellyfin | Plex |
|---|---|---|
| Исходный код | Открытый исходный код | Проприетарный |
| Платные возможности | У сервера и официальных клиентов нет платного уровня | Некоторые возможности зависят от тарифного плана |
| Центральная учетная запись | Не требуется | Использует экосистему провайдера |
| Удаленный доступ | Владелец настраивает домен, обратный прокси или VPN | Предлагает больше готовых механизмов |
| Контроль над данными | Максимальный | Часть инфраструктуры контролирует провайдер |
Jellyfin выбирают за независимость, приватность и отсутствие подписки. Plex может быть удобнее, когда в приоритете максимально простая настройка и стабильно отполированные приложения на всех устройствах.
Direct Play или транскодирование: что нагружает сервер
Производительность Jellyfin зависит не столько от размера медиатеки, сколько от способа воспроизведения.
| Режим | Что происходит | Нагрузка |
|---|---|---|
| Direct Play | Сервер отправляет исходный файл | Низкая |
| Direct Stream | Изменяется контейнер или отдельная дорожка | Низкая или средняя |
| Transcoding | Кодек, разрешение или битрейт изменяются на лету | Высокая |
Если телевизор поддерживает кодек файла, аудио и субтитры, сервер почти не использует CPU. Проблемы начинаются, когда клиент не умеет работать с форматом, соединение требует меньшего битрейта или субтитры нужно встроить в изображение. Тогда Jellyfin запускает FFmpeg и транскодирует видео в реальном времени.
Особенно ресурсоемки 4K, HEVC, HDR и преобразование HDR в SDR. Обычный VPS без графического процессора может не справиться, даже если у него много виртуальных ядер CPU. Поэтому совместимые форматы и Direct Play иногда экономят больше средств, чем переход на следующий тариф сервера.
Какой сервер нужен Jellyfin
Официальная рекомендация для типичной установки — около 8 ГБ RAM. В Linux без графического интерфейса небольшой сервер может работать с 4 ГБ. Быстрый диск нужен для операционной системы, базы данных, изображений, кэша и временных файлов; медиатека хранится отдельно и обычно занимает большую часть пространства.
| Сценарий | Начальная конфигурация | Комментарий |
|---|---|---|
| Музыка и один поток 1080p в режиме Direct Play | 2 vCPU, 4 ГБ RAM | Важнее скорость сети и диска |
| Небольшая семейная медиатека | 4 vCPU, 8 ГБ RAM | Предпочтительны совместимые форматы |
| Периодическое транскодирование 1080p | 4–8 производительных vCPU или GPU | Нагрузка зависит от кодека |
| Несколько потоков 4K/HDR | Современная встроенная графика Intel или видеокарта | Обычный VPS только с CPU не подходит |
Не забудьте учесть трафик: поток со скоростью 20 Мбит/с передает около 9 ГБ данных в час. При ежедневном просмотре расход быстро достигает сотен гигабайт в месяц.
Домашний сервер или VPS
Домашний мини-ПК или NAS выгоднее для коллекции объемом в несколько терабайт и регулярного аппаратного транскодирования. Можно установить диски большой емкости и выбрать процессор с Intel Quick Sync, но удаленный доступ будет зависеть от электричества, домашнего интернет-соединения и наличия публичного IP-адреса.
У VPS есть публичный адрес и стабильное соединение, и он работает круглосуточно. Это удобно для музыки, небольшой видеотеки, Direct Play и пользователей в разных местах. Его ограничения — стоимость хранилища и отсутствие GPU на стандартных тарифах.
Есть и гибридный вариант: файлы остаются дома, а VPS выступает безопасной точкой входа. Такая схема помогает, когда нет публичного IPv4-адреса, но скорость воспроизведения все равно ограничена исходящей пропускной способностью домашнего соединения.
Установка Jellyfin на Ubuntu с Docker Compose
В конфигурации ниже Jellyfin и Caddy работают в одной сети Docker. Порт 8096 не открыт в интернете; Caddy принимает HTTPS-соединения и автоматически получает сертификат.
Сначала направьте A-запись домена, например media.example.com, на IP-адрес сервера.
1. Установить Docker и создать каталоги
sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker
sudo mkdir -p /opt/jellyfin/{config,cache,caddy-data,caddy-config}
sudo mkdir -p /srv/media/{movies,series,music}
cd /opt/jellyfin2. Создать /opt/jellyfin/compose.yaml
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
volumes:
- ./config:/config
- ./cache:/cache
- /srv/media:/media:ro
networks: [media]
caddy:
image: caddy:2
container_name: jellyfin-caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/config
networks: [media]
networks:
media:Параметр :ro подключает медиатеку только для чтения и защищает исходные файлы от случайного удаления через Jellyfin.
3. Создать /opt/jellyfin/Caddyfile
media.example.com {
reverse_proxy jellyfin:8096
}Замените домен на собственный, запустите контейнеры и откройте необходимые порты:
sudo docker compose up -d
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
sudo ufw enableЕсли SSH использует другой порт, добавьте отдельное правило для него до запуска ufw enable.
После выдачи сертификата откройте https://media.example.com. В сетевых настройках Jellyfin добавьте обратный прокси в список доверенных прокси, чтобы ограничения внешнего доступа работали корректно.
Первоначальная настройка медиатеки
В мастере настройки выберите язык, создайте администратора и добавьте медиатеки:
- фильмы —
/media/movies; - сериалы —
/media/series; - музыка —
/media/music.
Используйте понятные имена, чтобы система правильно распознавала файлы:
/media/movies/Movie Title (2024)/Movie Title (2024).mkv
/media/series/Series Title (2024)/Season 01/Series Title S01E01.mkvСоздайте отдельный обычный профиль для просмотра и скройте учетную запись администратора с экрана входа. Давайте пользователям доступ только к нужным медиатекам и не разрешайте удалять файлы без необходимости.
Обновления и резервные копии
В конфигурации Jellyfin хранятся пользователи, настройки, база данных и прогресс просмотра. Перед обновлением остановите контейнер и сохраните каталог config:
cd /opt/jellyfin
sudo docker compose stop jellyfin
sudo tar -czf /root/jellyfin-config-$(date +%F).tar.gz config
sudo docker compose start jellyfinПереместите архив за пределы VPS. Медиаданные резервируйте отдельно.
Для обновления выполните:
sudo docker compose pull
sudo docker compose up -dНе открывайте порт 8096 напрямую. Используйте HTTPS или VPN, регулярно устанавливайте обновления и отслеживайте свободное место на диске.
Jellyfin на VPS от tropic.host
Для небольшой медиатеки, которая в основном использует Direct Play, можно начать с Linux VPS с 4 ГБ RAM. Для нескольких пользователей, большой базы данных и дополнительных сервисов разумнее выбрать 8 ГБ.
При выборе VPS от tropic.host отдельно оцените объем хранилища, месячный трафик и необходимость транскодирования. Виртуальный сервер удобен как постоянно доступная точка с публичным IP-адресом и HTTPS, но он не заменяет сервер с GPU. Если нужны несколько потоков 4K/HDR с преобразованием формата, лучше выбрать домашний сервер со встроенной графикой Intel, выделенный сервер или специализированный тариф с видеокартой.
Можно начать с небольшой коллекции, проверить долю сеансов Direct Play в панели Jellyfin и только затем увеличивать CPU, RAM или хранилище в соответствии с фактической нагрузкой.
Итоги
Jellyfin превращает собственную коллекцию в личный потоковый сервис без обязательной подписки и центральной учетной записи. Для успешного развертывания важно заранее оценить объем хранилища, трафик и вероятность транскодирования.
Небольшой сервер с Direct Play часто может работать с 4–8 ГБ RAM. Для регулярного воспроизведения 4K/HDR нужна аппаратная обработка видео. Независимо от конфигурации защищайте внешний доступ с помощью HTTPS или VPN и отдельно создавайте резервные копии настроек и медиатеки.
FAQ
Jellyfin полностью бесплатен?
Да. Сервер и клиенты доступны без премиум-тарифа. Платить нужно только за оборудование, VPS, диски, доменное имя и трафик.
Входит ли в Jellyfin каталог готовых к просмотру фильмов и сериалов?
Нет. Пользователь добавляет собственные медиафайлы.
Может ли Jellyfin работать на VPS без видеокарты?
Да, если большинство файлов воспроизводится в режиме Direct Play. Для частого транскодирования 4K и HDR нужен сервер с подходящей встроенной или отдельной видеокартой.
Сколько RAM нужно Jellyfin?
Небольшой Linux-сервер может работать с 4 ГБ RAM. Для семейной медиатеки и нескольких пользователей лучше ориентироваться на 8 ГБ.
Как безопасно открыть Jellyfin в интернете?
Используйте домен и HTTPS через обратный прокси либо VPN. Не открывайте порт 8096 напрямую и создавайте отдельные учетные записи с минимальными разрешениями.
