Установка и настройка Jellyfin на VPS: создание личного медиасервера с поддержкой аппаратного транскодирования
TL;DR
В данном руководстве мы разберем процесс развертывания Jellyfin — полностью открытого и бесплатного медиасервера — на виртуальном (VPS) или выделенном сервере. Мы сфокусируемся на обеспечении максимальной производительности через аппаратное ускорение (Intel QuickSync, NVENC), настройке безопасного доступа через HTTPS и автоматизации обслуживания системы в реалиях 2026 года.
- Результат: Личный аналог Netflix/Кинопоиска без подписок и ограничений.
- Технологический стек: Docker, Ubuntu 24.04/26.04 LTS, Caddy (Reverse Proxy), Intel/Nvidia Drivers.
- Ключевая особенность: Настройка Hardware Transcoding для плавного воспроизведения 4K на любых устройствах.
- Безопасность: Автоматические SSL-сертификаты и изоляция в контейнерах.
- Время настройки: 40–60 минут при наличии базовых навыков работы с терминалом.
1. Что мы настраиваем и зачем
Медиапотребление в 2026 году стало сложным: фрагментация стриминговых сервисов, региональные ограничения и постоянный рост стоимости подписок заставляют пользователей возвращаться к концепции self-hosting. Jellyfin — это форк Emby, который остался полностью верным принципам Open Source. В отличие от Plex, здесь нет платных функций вроде "Plex Pass" для доступа к аппаратному декодированию или мобильным приложениям.
Зачем это нужно на VPS?
- Доступность 24/7: Ваша библиотека доступна из любой точки мира без необходимости держать домашний ПК включенным.
- Скорость отдачи: Дата-центры обладают гигабитными каналами, что критично для стриминга тяжелого контента (Remux, 4K HDR).
- Приватность: Только вы владеете данными о том, что и когда вы смотрите. Никакой телеметрии корпорациям.
- Транскодирование: Мощные серверные процессоры и GPU позволяют "на лету" изменять формат видео под пропускную способность вашего интернета или возможности клиентского устройства (например, старого планшета или смартфона).
В этом гайде мы создадим отказоустойчивую систему, которая будет автоматически обновляться, защищать себя от атак и обеспечивать кинематографический опыт на любом экране.
2. Какой VPS-конфиг нужен под эту задачу
Выбор железа — критический этап. Jellyfin может работать и на слабом сервере, но комфорт использования напрямую зависит от типа контента и количества одновременных пользователей.
| Характеристика | Минимум (1080p, без транскодинга) | Рекомендуемо (4K, 2-3 потока транскодинга) | Экспертный уровень (10+ пользователей) |
|---|---|---|---|
| CPU | 2 vCPU (Intel/AMD) | 4 vCPU (с поддержкой AV1/HEVC) | 8+ vCPU или Dedicated Ryzen/Xeon |
| RAM | 2 GB | 4-8 GB | 16 GB+ |
| Disk | 20 GB SSD (только под ОС) | 100 GB+ NVMe (для метаданных и кэша) | 2 TB+ (Block Storage или HDD) |
| GPU | Нет | Intel QuickSync (iGPU) | Nvidia Tesla/Quadro/RTX |
Для большинства задач идеально подойдет подходящий VPS с современным процессором Intel, так как технология QuickSync (QSV) встроена во многие виртуализированные среды и позволяет транскодировать видео практически без нагрузки на основные ядра CPU.
Важное примечание по дискам: Видеофайлы занимают много места. Если ваш проект предполагает хранение терабайтов фильмов, рассмотрите возможность подключения внешнего объектного хранилища (S3) через rclone или аренду dedicated сервера с большими HDD-накопителями.
3. Подготовка сервера: безопасность и база
Мы будем использовать Ubuntu 24.04 LTS как наиболее стабильную и современную базу. Первым делом необходимо обезопасить сервер, так как медиасерверы часто становятся целью ботнетов.
# Обновляем список пакетов и систему до актуального состояния
sudo apt update && sudo apt upgrade -y
# Устанавливаем необходимые базовые утилиты
sudo apt install -y curl wget git vim software-properties-common apt-transport-https ca-certificates lsb-release
# Создаем пользователя с ограниченными правами (не работайте под root!)
sudo adduser jellyadmin
sudo usermod -aG sudo jellyadmin
# Настраиваем базовый фаервол (UFW)
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8096/tcp
sudo ufw enable
Рекомендуется также изменить стандартный порт SSH и настроить аутентификацию по ключам, чтобы минимизировать риск брутфорс-атак. После этого установим Fail2Ban для автоматической блокировки подозрительных IP.
sudo apt install -y fail2ban
# Базовая конфигурация защитит SSH "из коробки"
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
4. Установка драйверов для аппаратного транскодирования
Аппаратное транскодирование (HWA) — это то, что отличает профессиональную настройку от любительской. Без него процессор будет загружен на 100% при попытке посмотреть 4K фильм на смартфоне в дороге.
Для процессоров Intel (QuickSync)
QuickSync — фаворит для VPS. Установим необходимые драйверы и библиотеки OpenCL:
# Устанавливаем драйверы Intel для декодирования видео
sudo apt install -y intel-media-va-driver-non-free libva-drm2 libva-x11-2 vainfo intel-opencl-icd
# Проверяем доступность драйвера
vainfo
Вы должны увидеть список поддерживаемых профилей (Entrypoint: VAEntrypointVLD). Если команда выдает ошибку, убедитесь, что в настройках вашей виртуализации проброшено графическое ядро.
Для видеокарт Nvidia (NVENC)
Если у вас мощный Dedicated сервер с GPU Nvidia, используйте проприетарные драйверы:
# Добавляем репозиторий драйверов
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update
# Устанавливаем актуальный драйвер (версия может быть выше в 2026 году)
sudo apt install -y nvidia-driver-550 nvidia-utils-550 nvidia-container-toolkit
# Проверяем работу GPU
nvidia-smi
5. Установка Docker и Docker Compose
Использование Docker позволяет изолировать Jellyfin от основной системы, упрощает обновления и перенос сервера на другое железо.
# Добавляем официальный GPG ключ Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Настраиваем репозиторий
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Добавляем текущего пользователя в группу docker
sudo usermod -aG docker $USER
После выполнения команд перезайдите в терминал, чтобы права применились.
6. Развертывание Jellyfin через Docker
Мы создадим структуру каталогов для хранения конфигурации и медиафайлов, а затем опишем сервис в файле docker-compose.yml.
# Создаем рабочие директории
mkdir -p ~/jellyfin/{config,cache,media}
cd ~/jellyfin
# Создаем файл конфигурации
nano docker-compose.yml
Вставьте следующее содержимое в файл (пример для Intel QuickSync):
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
user: 1000:1000 # ID вашего пользователя (узнать через id -u)
network_mode: bridge
ports:
- 8096:8096
volumes:
- ./config:/config
- ./cache:/cache
- ./media:/media
devices:
# Проброс GPU для Intel QuickSync
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/card0
restart: unless-stopped
environment:
- JELLYFIN_PublishedServerUrl=https://media.yourdomain.com
Совет: Если вы используете Nvidia, замените секциюdevicesна поддержку GPU черезdeploy.resources.reservationsи укажитеNVIDIA_VISIBLE_DEVICES=all.
Запускаем контейнер:
docker compose up -d
7. Настройка сети и HTTPS через Caddy
Открывать порт 8096 напрямую в интернет небезопасно. Мы настроим Caddy — современный веб-сервер, который автоматически получит и будет продлевать SSL-сертификаты от Let's Encrypt.
# Установка Caddy для Ubuntu
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1G 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1G 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
# Настройка Caddyfile
sudo nano /etc/caddy/Caddyfile
В файле конфигурации укажите ваш домен:
media.yourdomain.com {
reverse_proxy localhost:8096
header {
# Настройки безопасности
Strict-Transport-Security "max-age=31536000;"
X-XSS-Protection "1; mode=block"
X-Frame-Options "DENY"
}
}
Перезапустите Caddy:
sudo systemctl restart caddy
8. Оптимизация и настройка библиотеки
Теперь, когда сервер доступен по HTTPS, перейдите в веб-интерфейс. После первичной настройки (выбор языка и создание пользователя) необходимо активировать аппаратное ускорение.
- Зайдите в Панель управления (Dashboard).
- Перейдите в раздел Воспроизведение (Playback).
- В выпадающем списке Аппаратное ускорение выберите Intel QuickSync (или Video Acceleration API / NVENC).
- Отметьте галочками форматы, которые поддерживает ваш CPU (обычно это H264, HEVC, MPEG2, VC1, VP9, AV1).
- Включите "Разрешить кодирование в формате HEVC" для экономии трафика.
- Сохраните изменения.
Оптимизация метаданных: Для быстрой работы интерфейса рекомендуется включить опцию "Сохранять метаданные в папку с медиафайлами". Это позволит быстрее восстановить библиотеку при переустановке системы.
9. Бэкапы и обслуживание системы
Медиасервер — это не только файлы фильмов, но и огромная база данных (прогресс просмотра, кастомные постеры, коллекции). Потеря этих данных болезненна.
Автоматизация бэкапов с помощью Restic
Restic — это быстрый и безопасный инструмент для инкрементальных бэкапов. Мы будем сохранять папку config во внешнее S3-хранилище.
sudo apt install restic
# Инициализация репозитория (пример для S3)
export AWS_ACCESS_KEY_ID=your_key
export AWS_SECRET_ACCESS_KEY=your_secret
restic -r s3:s3.amazonaws.com/your-bucket init
# Скрипт бэкапа
nano ~/backup_jellyfin.sh
#!/bin/bash
# Останавливаем контейнер для целостности БД
docker stop jellyfin
restic -r s3:s3.amazonaws.com/your-bucket backup ~/jellyfin/config
docker start jellyfin
# Удаляем старые бэкапы (храним последние 7 дней)
restic -r s3:s3.amazonaws.com/your-bucket forget --keep-daily 7 --prune
Добавьте скрипт в crontab, чтобы он запускался каждую ночь в 03:00.
10. Troubleshooting + FAQ
Почему видео тормозит при воспроизведении 4K?
Проверьте вкладку "Dashboard" во время воспроизведения. Если там написано "(Transcoding)", значит клиентское устройство не поддерживает формат файла и сервер его перекодирует. Убедитесь, что Hardware Acceleration включено. Если процессор не справляется, ограничьте максимальный битрейт в настройках пользователя.
Какой VPS-конфиг минимально подойдёт?
Для комфортной работы без транскодирования (Direct Play) достаточно 2 vCPU и 2 ГБ ОЗУ. Однако для 4K-библиотеки с транскодированием мы рекомендуем минимум 4 vCPU и наличие аппаратного ускорения Intel QuickSync.
Что выбрать — VPS или dedicated для этой задачи?
Если ваша библиотека до 500 ГБ — VPS выгоднее. Если вы планируете хранить 10–20 ТБ контента, аренда выделенного сервера (Dedicated) с несколькими HDD выйдет значительно дешевле в пересчете на стоимость гигабайта.
Ошибка "Playback Error" в браузере Firefox?
Firefox имеет ограниченную поддержку кодеков HEVC/H.265. Используйте браузеры на базе Chromium или нативное приложение Jellyfin Media Player для ПК — оно поддерживает все форматы без транскодирования.
Как добавить внешние субтитры?
Просто положите файл .srt в ту же папку, где лежит видео, с точно таким же названием. Jellyfin подхватит его автоматически. Также можно использовать плагин OpenSubtitles.
Не скачиваются обложки к фильмам?
Проверьте права доступа к папке config. Пользователь внутри контейнера должен иметь права на запись. Также убедитесь, что сервер имеет доступ к api.themoviedb.org.
11. Выводы и следующие шаги
Мы успешно развернули профессиональный медиасервер Jellyfin на VPS, обеспечили его безопасность с помощью HTTPS и настроили аппаратное ускорение для плавного стриминга. Теперь ваша медиатека полностью под вашим контролем.
Что делать дальше?
- Автоматизация контента: Изучите связку "Arr-стека" (Sonarr, Radarr, Prowlarr) для автоматического поиска и скачивания новых серий ваших любимых сериалов.
- Мониторинг: Установите Grafana и Prometheus для отслеживания нагрузки на сервер и сетевого трафика.
- Расширение хранилища: Если место на диске закончится, подключите облачное хранилище через
rclone mountс использованием кэширования на SSD.
Self-hosting — это путь к цифровой независимости. Jellyfin является фундаментом этого процесса, предоставляя удобство уровня коммерческих сервисов при полной прозрачности кода.