Установка Jellyfin на Debian 10 с Nginx и Let's Encrypt

Кому эта инструкция подходит
- Системным администраторам и домашним медиасерверам.
- Вы уже имеете Debian 10 и домен, направленный на сервер.
Основные шаги
- Обновить пакеты и установить утилиты.
- Добавить репозиторий Jellyfin и установить сервис.
- Настроить Nginx как обратный прокси (HTTP/HTTPS).
- Получить SSL через Certbot и включить редирект на HTTPS.
- Проверить и отладить доступ.
Требования
- Сервер с Debian 10 (buster).
- Домен типа jellyfin.example.com, указывающий на IP сервера.
- Доступ root или sudo.
Обновление системы и подготовка
Обновите индекс пакетов:
apt-get update -yУстановите дополнительные утилиты:
apt-get install apt-transport-https ca-certificates gnupg2 curl git -yВажно: команды выполняйте от пользователя с правами root или через sudo.
Установка Jellyfin
Добавьте репозиторий Jellyfin в APT:
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/debian buster main" | tee /etc/apt/sources.list.d/jellyfin.listДобавьте ключ GPG:
wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add -Обновите индексы и установите пакет:
apt-get update -y
apt-get install jellyfin -yПроверьте статус сервиса:
systemctl status jellyfinОжидаемый вывод подтверждает, что сервис активен и слушает порт 8096. Для проверки прослушивания используйте:
ss -antpl | grep 8096Факты: по умолчанию Jellyfin слушает 0.0.0.0:8096 (HTTP). Путь веб-файлов обычно /usr/share/jellyfin/web.
Конфигурация Nginx как обратного прокси
Установите Nginx:
apt-get install nginx -yСоздайте конфигурацию:
nano /etc/nginx/conf.d/jellyfin.confВставьте следующий блок конфигурации (замените jellyfin.example.com на ваш домен):
server {
listen 80;
server_name jellyfin.example.com;
access_log /var/log/nginx/jellyfin.access;
error_log /var/log/nginx/jellyfin.error;
set $jellyfin 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
# Disable buffering when the nginx proxy gets very resource heavy upon streaming
proxy_buffering off;
}
# location block for /web - This is purely for aesthetics so /web/#!/ works instead of having to go to /web/index.html/#!/
location ~ ^/web/$ {
# Proxy main Jellyfin traffic
proxy_pass http://$jellyfin:8096/web/index.html/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
location /socket {
# Proxy Jellyfin Websockets traffic
proxy_pass http://$127.0.0.1:8096;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
# Security / XSS Mitigation Headers
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
}Проверьте синтаксис Nginx и перезагрузите конфигурацию:
nginx -t
systemctl reload nginxВажно: сохраняйте резервную копию конфигурации перед изменениями.
Доступ к веб-интерфейсу Jellyfin
Откройте в браузере http://jellyfin.example.com. При первом запуске пройдите начальную настройку: язык, учётная запись, библиотеки и метаданные.








Каждое изображение показывает шаги интерфейса: выбор языка, учётной записи, библиотек, метаданных и финал установки.
Защита с помощью Let’s Encrypt (Certbot)
Установите клиент Certbot с поддержкой плагина nginx:
apt-get install python3-certbot-nginx -yЗапустите Certbot для вашего домена:
certbot --nginx -d jellyfin.example.comСледуйте подсказкам: укажите e-mail, примите условия и выберите, нужно ли делать редирект с HTTP на HTTPS (рекомендуется выбрать редирект).
После успешной установки сертификаты сохраняются в /etc/letsencrypt/live/jellyfin.example.com/. Certbot добавит SSL-конфигурацию в ваш конфиг Nginx и перезапустит сервис.
Важно: Certbot автоматически настраивает cron/systemd для обновления сертификатов. Для ручной проверки запустите:
certbot renew --dry-runПроверка и отладка
Проверки:
- Доступ по HTTPS: https://jellyfin.example.com
- Статус сервисов: systemctl status jellyfin nginx
- Логи Nginx: /var/log/nginx/jellyfin.error
- Логи Jellyfin: /var/lib/jellyfin/logs/
Распространённые проблемы и решения:
- 502 Bad Gateway: проверьте, что jellyfin запущен и слушает 127.0.0.1:8096.
- Проблемы с вебсокетами: убедитесь, что блок /socket корректно проксирует Upgrade и Connection.
- Метаданные не подтягиваются: проверьте настройки прокси и доступ к внешним API.
Альтернативные подходы и варианты
- Docker: используйте официальные образы jellyfin в контейнере и nginx-proxy / Traefik для HTTPS.
- Reverse proxy на Caddy: Caddy автоматически получает и обновляет SSL.
- Без обратного прокси: можно разрешить прямой доступ к 8096, но это менее удобно для HTTPS и поддоменов.
Против примера: если у вас NAT или ISP блокирует порты, внешний доступ может не работать — в этом случае настройте порт-форвардинг или используйте VPN.
Мини-методология развертывания
- Подготовка: резервная копия, обновление пакетов.
- Установка сервиса Jellyfin.
- Быстрый запуск и проверка локально на 8096.
- Настройка обратного прокси и тест HTTP.
- Установка Certbot и перевод на HTTPS.
- Тестирование клиентских устройств и производительности.
Факты и ключевые значения
- Порт по умолчанию: 8096 (HTTP), 8920 (HTTPS при встроенном использовании; при прокси используйте 443).
- Директории: /etc/jellyfin/, /var/lib/jellyfin/, /usr/share/jellyfin/web
- Конфигурация Nginx: /etc/nginx/conf.d/jellyfin.conf
Контроль качества и критерии приёмки
- Сайт доступен по HTTPS и перенаправляет HTTP на HTTPS.
- Вход в интерфейс работает, создана учётная запись.
- Воспроизведение видео и аудио в браузере/клиентах работает без ошибок.
- Сертификат валиден и auto-renew настроен.
Ролевые чек-листы
Администратор:
- Обновил систему и установил пакеты.
- Настроил репозитории и ключи GPG.
- Настроил Nginx и Certbot.
- Проверил логи и автоматическое обновление сертификатов.
Пользователь (домашний):
- Создал профиль и добавил директории с медиа.
- Настроил метаданные и языковые предпочтения.
- Проверил доступ с телефонов и смарт-ТВ.
Безопасность и конфиденциальность
- Ограничьте доступ к Shell и используйте сильные пароли.
- Резервное копирование /etc/letsencrypt/ и /var/lib/jellyfin/.
- Отключайте публичный доступ, если вы не готовы к регулярному обновлению и мониторингу.
Короткая шпаргалка команд
- apt-get update -y
- apt-get install jellyfin -y
- systemctl status jellyfin
- nginx -t && systemctl reload nginx
- certbot –nginx -d your.domain
Глоссарий (в 1 строке)
- Jellyfin: открытый медиасервер для стриминга и управления коллекцией мультимедиа.
Заключение
Вы успешно установили и защитили Jellyfin на Debian 10. Теперь можно добавлять библиотеки, приглашать пользователей и смотреть медиа с устройств в сети и по HTTPS. Для продакшен-сред рассмотрите мониторинг, бэкапы и использование контейнеризации для упрощения обновлений.
Ключевые действия: обновление, установка, проксирование, SSL, тестирование и мониторинг.
Похожие материалы
Почему телефон не воспроизводит звук и как исправить
Добавление заметок в Google Password Manager
Потеря пакетов в Chivalry: как найти и исправить
Мышь не работает после обновления Windows 10 — решение
Авто-включение геолокации Google Maps на Samsung