Установка Jellyfin на Ubuntu 22.04 с Apache и Let's Encrypt
Важное: все команды выполняйте под пользователем с правами sudo. Замените media.howtoforge.local и email на свои значения.
Основная цель и варианты запроса
- Основная цель: установить и защитить Jellyfin на Ubuntu 22.04 с помощью Apache и Certbot.
- Варианты: установка без обратного прокси, конфигурация с Nginx, локальная установка с самоподписанным сертификатом.
Краткое содержание
- Предварительные требования
- Добавление репозитория Jellyfin
- Установка сервера Jellyfin
- Получение сертификата Let’s Encrypt
- Настройка Apache как обратного прокси
- Открытие портов через UFW
- Начальная настройка в веб‑интерфейсе
- Отладка, безопасность и контроль качества
Предварительные требования
- Сервер с Ubuntu 22.04.
- Непользователь root с правами sudo.
- Доменное имя, указывающее на IP сервера (A/AAAA запись).
Короткое определение: Jellyfin — свободный медиасервер для хранения и стриминга личной медиатеки через локальную сеть и интернет.
Добавление репозитория Jellyfin
Сначала установите зависимости и утилиты для работы с репозиториями и HTTPS:
sudo apt install software-properties-common apt-transport-https ca-certificates gnupg curl -yВключите репозиторий universe:
sudo add-apt-repository universe
Создайте каталог для ключей и загрузите GPG‑ключ репозитория Jellyfin:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpgДобавьте источник пакетов Jellyfin в apt (точно выполните команду как в примере):
cat <
Обновите индекс пакетов:
sudo apt update
Установка Jellyfin
Установите пакет jellyfin:
sudo apt install jellyfin
Проверьте статус службы и включение автозапуска:
sudo systemctl is-enabled jellyfin
sudo systemctl status jellyfinОжидаемый результат: служба должна быть включена (enabled) и запущена (active).

Проверьте прослушиваемые порты:
ss -tulpn | grep jellyfinОбычно Jellyfin использует 8096/tcp (HTTP) и 8920/tcp (HTTPS), а также 1900/udp и 7359/udp для автодетектирования в локальной сети.

Генерация SSL/TLS сертификатов
Для публичного доступа используйте Let’s Encrypt через Certbot. Если окружение локальное — можно временно применить самоподписанный сертификат, но для внешнего доступа нужен валидный сертификат.
Установите certbot:
sudo apt install certbotСоздайте директорию для webroot, если её ещё нет:
mkdir -p /var/www/htmlЗапросите сертификат через webroot (замените email и имя домена):
sudo certbot certonly --agree-tos --email [email protected] --no-eff-email --webroot -w /var/www/html -d media.howtoforge.localПосле успешного выполнения сертификаты окажутся в /etc/letsencrypt/live/<ваш_домен>/.
Примечание: Certbot в режиме webroot положит временный файл в /.well-known/ для проверки владения доменом. Убедитесь, что Apache отдаёт этот каталог без проксирования.
Настройка Apache как обратного прокси
Установите Apache и необходимые модули:
sudo apt install apache2 -y
Включите модули:
sudo a2enmod proxy proxy_http ssl proxy_wstunnel remoteip http2 headersСоздайте файл виртуального хоста:
sudo nano /etc/apache2/sites-available/jellyfin.confВставьте конфигурацию (не меняйте пути к сертификатам без проверки):
ServerName media.howtoforge.local
# Comment to prevent HTTP to HTTPS redirect
Redirect permanent / https://media.howtoforge.local/
ErrorLog /var/log/apache2/media.howtoforge.local-error.log
CustomLog /var/log/apache2/media.howtoforge.local-access.log combined
# If you are not using an SSL certificate, replace the 'redirect'
# line above with all lines below starting with 'Proxy'
ServerName media.howtoforge.local
# This folder exists just for certbot(You may have to create it, chown and chmod it to give apache permission to read it)
DocumentRoot /var/www/html/jellyfin/public_html
ProxyPreserveHost On
# Letsencrypt's certbot will place a file in this folder when updating/verifying certs
# This line will tell Apache to not to use the proxy for this folder.
ProxyPass "/.well-known/" "!"
# Tell Jellyfin to forward that requests came from TLS connections
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
ProxyPass "/socket" "ws://192.168.5.30:8096/socket"
ProxyPassReverse "/socket" "ws://192.168.5.30:8096/socket"
ProxyPass "/" "http://192.168.5.30:8096/"
ProxyPassReverse "/" "http://192.168.5.30:8096/"
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/media.howtoforge.local/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/media.howtoforge.local/privkey.pem
Protocols h2 http/1.1
# Enable only strong encryption ciphers and prefer versions with Forward Secrecy
SSLCipherSuite HIGH:RC4-SHA:AES128-SHA:!aNULL:!MD5
SSLHonorCipherOrder on
# Disable insecure SSL and TLS versions
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
ErrorLog /var/log/apache2/media.howtoforge.local-error.log
CustomLog /var/log/apache2/media.howtoforge.local-access.log combined
Важно: в примере прокси направлен на IP 192.168.5.30:8096. Замените его на адрес вашего сервера (localhost:8096, если Jellyfin на той же машине).
Включите сайт и проверьте конфигурацию:
sudo a2ensite jellyfin.conf
sudo apachectl configtestОжидаемый вывод: Syntax OK

Перезапустите Apache:
sudo systemctl restart apache2Проверьте сервис:
sudo systemctl is-enabled apache2
sudo systemctl status apache2
Настройка UFW (брандмауэр)
Откройте SSH, HTTP и HTTPS:
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'Откройте порты автодетектирования в локальной сети, если используете DLNA/UPnP:
sudo ufw allow 1900/udp
sudo ufw allow 7359/udpВключите UFW:
sudo ufw enableПроверьте статус:
sudo ufw statusДоступ к веб‑интерфейсу и начальная настройка
Откройте в браузере HTTPS://media.howtoforge.local/ (замените домен). Вы увидите мастер первичной настройки Jellyfin.

Пошагово:
- Создайте первого пользователя.

- Можно пропустить настройку медиатеки и добавить её позже в администраторской панели.

- Выберите язык метаданных и разрешите удалённый доступ при необходимости.


- Завершите мастер и войдите в систему.


Панель управления после входа:

В разделе администратора вы увидите информацию о версии и состоянии сервера.

Отладка и часто встречаемые проблемы
Проблема: браузер показывает ошибку соединения по HTTPS.
- Проверьте, что сертификат выдан и пути к сертификатам в конфигурации Apache корректны.
- Убедитесь, что порт 443 открыт для входящих соединений.
Проблема: веб‑интерфейс доступен, но поток не воспроизводится.
- Проверьте записи в /var/log/apache2/ и /var/log/jellyfin/.
- Убедитесь, что прокси передает заголовки X‑Forwarded‑Proto и X‑Forwarded‑For.
Проблема: WebSocket (socket) не работает.
- Проверьте блоки ProxyPass для /socket и соответствие ws:// или wss:// схемы.
- Проверьте конфигурацию брандмауэра и промежуточных балансировщиков.
Проблема: Certbot не может верифицировать домен.
- Убедитесь, что A/AAAA запись указывает на IP сервера и что Apache не блокирует доступ к /.well-known/.
Безопасность и эксплуатация
Рекомендации по безопасности:
- Держите систему и пакеты обновлёнными: sudo apt update && sudo apt upgrade.
- Используйте ограничение доступа к /var/lib/jellyfin и настройте резервное копирование конфигураций и метаданных.
- Отключите менее безопасные протоколы TLS в Apache (как в примере конфигурации).
- Настройте автоматическое обновление сертификатов с помощью cron или systemd timer для certbot (обычно certbot устанавливает таймер автоматически).
Пример проверки автоматического продления:
sudo certbot renew --dry-runАльтернативные подходы
- Nginx как обратный прокси: чаще используется в больших инсталляциях и имеет встроенную поддержку WebSocket и HTTP/2.
- Прямой доступ без прокси: допустим в локальной сети, но требует проброса портов и отдельной настройки TLS на самом Jellyfin.
- Docker/Kubernetes: удобны для изоляции и обновлений, но требуют навыков контейнеризации.
Checklist для разных ролей
Администратор:
- Проверить доступность домена и DNS.
- Добавить репозиторий и установить jellyfin.
- Настроить Apache и сертификат.
- Настроить бэкапы и мониторинг.
DevOps:
- Автоматизировать развёртывание (Ansible, Terraform).
- Настроить мониторинг сервиса (systemd, Prometheus/Alertmanager).
- Настроить CI для образов Docker, если используется контейнеризация.
Пользователь:
- Создать учётную запись.
- Добавить медиатеки и проверить воспроизведение.
Критерии приёмки
- Сервис jellyfin запущен и включён: systemctl status показывает active и enabled.
- Домен по HTTPS возвращает корректный сертификат Let’s Encrypt.
- Веб‑интерфейс доступен и можно войти под созданной учётной записью.
- Воспроизведение локальных файлов работает через веб‑интерфейс и мобильные клиенты.
Мини‑методология развёртывания
- Подготовка ОС и DNS.
- Добавление репозитория и установка пакета.
- Настройка TLS (Certbot).
- Конфигурирование обратного прокси (Apache) и проверка WebSocket.
- Настройка брандмауэра и тестирование клиента.
Тесты и критерии приёмки
- Тест 1: Доступность / — браузер получает 200 и сертификат валиден.
- Тест 2: Вход в веб‑интерфейс под созданной учётной записью.
- Тест 3: Воспроизведение видеофайла 720p без ошибок.
- Тест 4: Обновление сертификата через certbot renew –dry-run проходит успешно.
Риски и способы смягчения
Риск: утечка данных при неправильных правах на каталоги.
- Смягчение: минимизировать привилегии, резервное копирование и регулярный аудит прав.
Риск: устаревшие версии с уязвимостями.
- Смягчение: автоматические обновления и мониторинг CVE для используемых пакетов.
Миграция с Plex/Emby
- Экспорт метаданных и библиотек может потребовать сторонних инструментов или ручной настройки.
- Проверьте кодеки и права на файлы, чтобы избежать проблем с воспроизведением.
Заключение
Вы успешно установили Jellyfin на Ubuntu 22.04, настроили Apache как обратный прокси и защитили доступ сертификатами Let’s Encrypt. Дальше рекомендуется настроить регулярное резервирование метаданных, мониторинг сервиса и план обновлений.
Короткое напоминание: замените примеры доменов и IP в конфигурациях на свои реальные значения перед запуском в продакшн.
Сводка ключевых действий:
- Добавить репозиторий и установить jellyfin.
- Получить сертификат через certbot с webroot.
- Настроить Apache как обратный прокси и проброс WebSocket.
- Открыть необходимые порты в UFW и пройти начальную настройку в веб‑интерфейсе.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента