Гид по технологиям

Установка Jellyfin на Debian 12 с Apache2, UFW и сертификатами Let's Encrypt

7 min read Медиа сервер Обновлено 25 Nov 2025
Jellyfin на Debian 12: Apache2, UFW и Let's Encrypt
Jellyfin на Debian 12: Apache2, UFW и Let's Encrypt

Что вы получите

  • Самостоятельный медиасервер Jellyfin, доступный по домену через HTTPS.
  • Защищенное соединение с помощью сертификатов Let’s Encrypt и работающий Apache2 как обратный прокси.
  • Базовые правила брандмауэра UFW для безопасного доступа.

Основные варианты использования

primary intent: Установка Jellyfin на Debian 12 related intents: Jellyfin Apache2, Jellyfin UFW, Let’s Encrypt для Jellyfin, обратный прокси Jellyfin, установка медиасервера, безопасность Jellyfin

Требования

  • Сервер с Debian 12 с 2–4 ГБ памяти (рекомендуется 4 ГБ для транскодирования).
  • Непривилегированный пользователь с правами sudo.
  • Домен, указывающий на IP сервера (A-запись).

Быстрый план действий

  1. Установить зависимости и добавить репозиторий Jellyfin.
  2. Установить jellyfin и убедиться, что служба запущена.
  3. Настроить UFW: разрешить OpenSSH и WWW Full.
  4. Установить Apache2 и Certbot, настроить модули для проксирования.
  5. Получить сертификат через webroot и подготовить виртуальный хост Apache.
  6. Активировать сайт и перезапустить Apache.
  7. Завершить настройку Jellyfin через веб-мастер.

Добавление репозитория Jellyfin

Jellyfin доступен в виде предварительно собранного пакета для Debian. Первым шагом установите зависимости, которые нужны apt для работы с HTTPS-репозиториями и GPG-ключами:

sudo apt install apt-transport-https ca-certificates gnupg curl -y

Установка зависимостей

Далее добавьте GPG-ключ репозитория Jellyfin и сохраните его в /etc/apt/keyrings/jellyfin.gpg:

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

Создайте файл источника пакетов, который автоматически подставит вашу версию Debian и архитектуру:

cat <

Обновите индекс пакетов:

sudo apt update

Вы увидите новый репозиторий в выводе apt.

Обновление индекса репозиториев


Установка и управление сервисом Jellyfin

Установите пакет jellyfin:

sudo apt install jellyfin

Установка Jellyfin

Проверьте, что служба включена и запущена:

sudo systemctl is-enabled jellyfin  
sudo systemctl status jellyfin

Ожидаемый вывод: статус active (running) и enabled (чтобы включён автозапуск при старте системы).

Проверка состояния Jellyfin

Jellyfin слушает порт 8096 по умолчанию. Проверьте список сокетов:

ss -tulpn

В выводе должен присутствовать порт 8096, связанный с процессом jellyfin.

Проверка порта Jellyfin

Основные команды управления службой:

sudo systemctl start jellyfin  
sudo systemctl stop jellyfin  
sudo systemctl restart jellyfin

Настройка безопасности с UFW

Откройте порт SSH и порты для веб-доступа (HTTP/HTTPS). UFW удобен для простых конфигураций брандмауэра.

Установите UFW:

sudo apt install ufw -y

Установка UFW

Разрешите OpenSSH и включите UFW:

sudo ufw allow OpenSSH  
sudo ufw enable

Разрешите профиль WWW Full (HTTP + HTTPS) и проверьте статус:

sudo ufw allow "WWW Full"  
sudo ufw status

Вывод должен показывать активный UFW с правилами для OpenSSH и WWW Full.

Настройка UFW

Важно: пока не перекрывайте SSH или другие административные службы доступом только по localhost.


Установка Apache2 и Certbot

Apache2 будет использоваться как обратный прокси (reverse proxy) для подачи трафика HTTPS к локальному сервису Jellyfin на порту 8096.

Установите Apache2 и Certbot:

sudo apt install apache2 certbot

Установка Apache2 и Certbot

Проверьте запуск Apache2:

sudo systemctl is-enabled apache2  
sudo systemctl status apache2

Вы увидите enabled и active (running) при корректной установке.

Проверка Apache2


Генерация SSL/TLS сертификатов с помощью Certbot

Включите модули Apache, необходимые для проксирования и websocket:

sudo a2enmod proxy proxy_http ssl proxy_wstunnel remoteip http2 headers  
sudo systemctl restart apache2

Создайте временную папку webroot, которой Certbot будет пользоваться для проверки владения доменом:

sudo mkdir -p /var/www/html/jellyfin/public_html  
sudo chown -R www-data:www-data /var/www/html/jellyfin/public_html

Запустите Certbot в режиме webroot. Замените email и домен на ваши значения:

sudo certbot certonly --agree-tos --email [email protected] --no-eff-email --webroot -w /var/www/html/jellyfin/public_html -d media.howtoforge.local

После успешного выполнения сертификаты будут храниться в /etc/letsencrypt/live/<ваш_домен>/. Файлы ключей: fullchain.pem (сертификат с цепочкой), privkey.pem (приватный ключ).


Настройка Apache2 как обратного прокси

Создайте файл виртуального хоста /etc/apache2/sites-available/jellyfin.conf и вставьте конфигурацию. Обязательно замените media.howtoforge.local и IP 192.168.10.15 на ваши значения и пути к сертификатам на свои.

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.10.15:8096/socket"  
    ProxyPassReverse "/socket" "ws://192.168.10.15:8096/socket"  
    
    ProxyPass "/" "http://192.168.10.15:8096/"  
    ProxyPassReverse "/" "http://192.168.10.15: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  
  

Сохраните файл и активируйте сайт:

sudo a2ensite jellyfin.conf  
sudo apachectl configtest

Если синтаксис правильный, вы получите Syntax OK.

Активация виртуального хоста

Перезапустите Apache:

sudo systemctl restart apache2

Откройте браузер и перейдите по адресу https://media.howtoforge.local/ (замените на ваш домен). При успешной настройке откроется мастер установки Jellyfin.

Страница приветствия Jellyfin


Завершение установки Jellyfin через веб-мастер

  1. Выберите язык и нажмите Next.

Выбор языка

  1. Создайте администратора (имя и пароль).

Создание пользователя

  1. Библиотеки можно добавить позже — нажмите Next.

Добавление библиотек

  1. Выберите язык метаданных.

Язык метаданных

  1. Разрешите удалённые подключения, если планируете доступ из интернета.

Разрешить удалённые подключения

  1. По завершении вы увидите сообщение “You’re Done!” и будете перенаправлены на страницу логина.

Завершение установки

  1. Войдите в систему и откройте панель администратора для проверки статуса сервера.

Вход в Jellyfin

Панель управления

Информация о системе


Проверка и базовая отладка

Типичные проверки после развертывания:

  • Страница доступна по HTTPS без ошибок сертификата.
  • WebSocket соединения работают (просмотрите консоль браузера при воспроизведении).
  • Прокси не затирает заголовки X-Forwarded-Proto и X-Forwarded-Port.

Если веб-интерфейс недоступен:

  • Проверьте логи Apache в /var/log/apache2/*.
  • Проверьте статус jellyfin: sudo journalctl -u jellyfin -e.
  • Убедитесь, что прокси-правила в виртуальном хосте корректно указывают на локальный IP/порт Jellyfin.

Критерии приёмки

  • HTTP(S) доступ к домену: страница загрузки Jellyfin открывается по HTTPS.
  • Служба jellyfin активна и отвечает на локальном порту 8096.
  • Certbot успешно получил сертификат и файлы находятся в /etc/letsencrypt/live/<домен>/.
  • Apache проксирует запросы на Jellyfin и WebSocket соединения работают.
  • UFW разрешает OpenSSH и WWW Full, остальные порты закрыты.

Рекомендации по безопасности и жёсткая конфигурация

  1. Обновления: настройте автоматические обновления безопасности или регулярно выполняйте sudo apt update && sudo apt upgrade.
  2. Доступ по SSH: используйте ключи, отключите вход по паролю и ограничьте доступ по IP, когда это возможно.
  3. SSL/TLS: используйте современные шифры и протоколы; при необходимости обновите SSLCipherSuite и исключите слабые алгоритмы.
  4. Аутентификация: создайте отдельную учётную запись администратора и включите двухфакторную аутентификацию для панелей управления (если доступно во внешних плагинах).
  5. Разделение прав: храните медиаконтент на отдельном разделе с правами доступа для пользователя jellyfin (обычно jellyfin или media).
  6. Логи и мониторинг: включите ротацию логов и настройте систему оповещений при падении службы.

Частые ошибки и способы их устранения

Ошибка: Certbot не смог подтвердить владение доменом.

  • Проверьте, что DNS-запись A указывает на IP сервера.
  • Убедитесь, что путь /var/www/html/jellyfin/public_html доступен для Apache и что правило ProxyPass не перехватывает /.well-known/.

Ошибка: WebSocket не работает (отключается при воспроизведении).

  • Убедитесь, что в конфигурации ProxyPass для /socket используется ws:// и правильный порт.
  • Проверьте, что в заголовках передаётся X-Forwarded-Proto: https.

Ошибка: Неверный сертификат в браузере.

  • Убедитесь, что Certbot сохранил сертификаты в /etc/letsencrypt/live/<домен> и что вы указали именно эти файлы в директивах SSLCertificateFile и SSLCertificateKeyFile.

Альтернативные способы установки (когда это уместно)

  1. Docker / Docker Compose
  • Удобно изолировать окружение и проще обновлять версии. Подходит для серверов, где Docker уже используется.
  • Потребует монтирования томов для конфигурации и медиа.
  1. Snap/Flatpak (если доступны)
  • Простейшая установка пакетов, но может конфликтовать с системными путями и службами.
  1. Сборка из исходников
  • Используется редко; даёт максимальную гибкость, но сложнее в поддержке.

Преимущества Docker: быстрый деплой, лёгкое тестирование разных версий, изоляция зависимостей. Недостатки: требуется знание Docker и управление томами/сетями.


Решение для разных ролей (короткие чек-листы)

Администратор сервера:

  • Проверить системные требования и наличие свободного места.
  • Настроить DNS и UFW.
  • Установить Apache и Certbot.
  • Настроить ротацию логов.

Инженер DevOps:

  • Подготовить конфигурацию в виде шаблонов (Ansible/Terraform).
  • Автоматизировать выпуск сертификатов и продление.
  • Настроить мониторинг (systemd, Prometheus, Grafana).

Пользователь/медиа-менеджер:

  • Создать библиотеки в разделе “Libraries”.
  • Настроить источники метаданных.
  • Настроить профили транскодирования.

Мини-методология тестирования (smoke tests)

  1. Доступность: GET https://<домен>/ возвращает 200 и HTML-страницу мастера.
  2. Аутентификация: можно создать и войти под учетной записью администратора.
  3. Стриминг: загрузить небольшое медиа и воспроизвести локально.
  4. Веб-сокеты: начать воспроизведение и проверить наличие websocket-сессии в инструментах разработчика браузера.

Миграция и совместимость

  • Обновления: перед обновлением пакетов делайте резервную копию конфигурации /var/lib/jellyfin и /etc/jellyfin.
  • Версии: сверяйтесь с официальной документацией Jellyfin при переходе между крупными версиями на предмет изменений формата базы данных.

Короткий глоссарий

  • reverse proxy — обратный прокси, сервер, который перенаправляет запросы от клиентов к внутренним сервисам.
  • webroot — папка веб-сервера, используемая для подтверждения владения доменом Certbot.
  • X-Forwarded-Proto — заголовок, указывающий исходный протокол (http/https) от клиента.

Заключение

Вы успешно установили Jellyfin на Debian 12, настроили UFW, получили сертификаты Let’s Encrypt и настроили Apache2 как обратный прокси. После завершения мастер-настроек можно добавлять библиотеки, настраивать метаданные и делиться медиа с доверенными клиентами. Рекомендуется реализовать регулярные бэкапы конфигурации и медиатеки, а также настроить мониторинг и обновления.

Важно: при публикации сервера в интернет внимательно настройте доступы, используйте надёжные пароли и, при возможности, ограничения по IP или VPN для администрирования.


Быстрые ссылки и ресурсы

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

S&Q режим: таймлапс и замедление на камере
Видео

S&Q режим: таймлапс и замедление на камере

Как отложить SMS в Google Messages
Android.

Как отложить SMS в Google Messages

Как сжать видео на Windows, Mac, iPhone и Android
Технологии

Как сжать видео на Windows, Mac, iPhone и Android

Duet AI в Google Docs — писать быстрее и лучше
Инструменты

Duet AI в Google Docs — писать быстрее и лучше

Сброс Chromebook: Powerwash и полное восстановление
Руководство

Сброс Chromebook: Powerwash и полное восстановление

MOV в MP4 на Mac — быстрый способ
Видео

MOV в MP4 на Mac — быстрый способ