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

О чём эта инструкция
Эта статья поможет системному администратору или технично подкованному пользователю развернуть Jellyfin на сервере с Debian 11, сделать доступным по доменному имени и включить HTTPS через Let’s Encrypt. Кратко: установка пакета, конфигурация обратного прокси, получение и автоматическое обновление сертификата.
Важно: предполагается, что у вас есть сервер с Debian 11, домен, указывающий на IP сервера, и доступ root.
Основные преимущества Jellyfin
- Бесплатный, открытый и кросс‑платформенный медиа‑сервер.
- Поддержка аппаратного ускорения кодирования/декодирования через FFmpeg.
- Получение метаданных из TheTVDB и TheMovieDB.
- Отсутствие ограничений на воспроизведение в мобильных приложениях.
Предварительные условия
- Сервер с Debian 11.
- Доменное имя, указывающее на IP сервера.
- Доступ root на сервере или эквивалент sudo.
Шаг 1 — Установка Jellyfin
- Установите зависимости:
apt-get install apt-transport-https ca-certificates gnupg2 curl git -y- Добавьте GPG‑ключ и репозиторий Jellyfin:
wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add -
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/debian bullseye main" | tee /etc/apt/sources.list.d/jellyfin.list- Обновите APT и установите Jellyfin:
apt-get update -y
apt-get install jellyfin -y- Проверьте статус сервиса:
systemctl status jellyfinВы увидите вывод с пометкой Active: active (running) при успешном запуске.
По умолчанию Jellyfin слушает порт 8096. Проверить можно командой:
ss -antpl | grep 8096Шаг 2 — Настройка Nginx как обратного прокси для Jellyfin
Установка Nginx:
apt-get install nginx -yСоздайте виртуальный хост:
nano /etc/nginx/conf.d/jellyfin.confВставьте конфигурацию (приведённый ниже блок — рабочий минимум; Certbot может внести изменения автоматически при получении сертификата):
server {
listen 80;
server_name jellyfin.example.com;
access_log /var/log/nginx/jellyfin.access;
error_log /var/log/nginx/jellyfin.error;
resolver 127.0.0.1 valid=30;
# 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";
location / {
# Proxy main Jellyfin traffic
proxy_pass http://localhost: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 - aesthetics so /web/#!/ works instead of /web/index.html/#!/
location = /web/ {
# Proxy main Jellyfin traffic
proxy_pass http://localhost: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://localhost:8096/socket;
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;
}
}Проверьте синтаксис Nginx и перезагрузите службу:
nginx -t
systemctl reload nginx
systemctl status nginxЕсли в ходе перезагрузки вы видите предупреждение про PID-файл — проверьте права и наличие /run/nginx.pid, но часто это не критично, если сервис запущен.
Шаг 3 — Доступ к веб‑интерфейсу Jellyfin
Откройте браузер и перейдите по адресу http://jellyfin.example.com. Мастер установки проведёт вас через выбор языка, создание администратора и базовые настройки библиотеки.








Шаг 4 — Защита через Let’s Encrypt (Certbot)
Установите Certbot с поддержкой nginx:
apt-get install certbot python3-certbot-nginx -yЗапустите Certbot для получения сертификата и автоматической настройки Nginx:
certbot --nginx -d jellyfin.example.comВо время процесса вас попросят ввести e‑mail и согласиться с условиями. Certbot предложит опцию «Redirect», чтобы перенаправлять весь HTTP на HTTPS; для публичного сервера обычно выбирают перенаправление.
После успешного получения вы увидите путь к сертификатам в /etc/letsencrypt/live/jellyfin.example.com/ и рекомендации по автоматическому продлению через команду certbot renew.
Рекомендации по безопасности и эксплуатации
- Включите автоматическое обновление системы и периодически проверяйте обновления Jellyfin.
- Ограничьте доступ к административному аккаунту сильным паролем и, при возможности, двухфакторной аутентификацией на уровне клиента.
- Настройте брандмауэр: откройте порты 80 и 443, заблокируйте прямой доступ к порту 8096 из внешней сети.
- Для защиты от брутфорса используйте fail2ban с правилами для Nginx.
- Храните резервные копии каталога конфигурации Jellyfin (обычно /var/lib/jellyfin и /etc/jellyfin) и сертификатов Let’s Encrypt.
- Рекомендуемые порты: 8096 для HTTP, 8920 часто используется для HTTPS при прямом включении TLS в Jellyfin (если не используете обратный прокси). Если вы используете Nginx, внешний HTTPS — 443.
Чеклист для администратора
- Сервер обновлён и установлен Debian 11.
- Домен указывает на IP сервера.
- Установлен jellyfin и сервис активен.
- Nginx настроен как обратный прокси и прошёл тест конфигурации.
- Certbot получил и установил сертификат, HTTPS работает.
- Брандмауэр настроен, прямой доступ к 8096 закрыт.
- Создан административный пользователь и настроены медиатеки.
- Настроено резервное копирование конфигураций и данных.
Типичные проблемы и способы их решения
Проблема: Certbot не может выполнить проверку HTTP‑01 (не проходит проверка домена).
- Проверьте DNS‑запись и то, что nginx слушает и отвечает на порт 80.
- Убедитесь, что нет сторонних редиректов или WAF, блокирующих проверки.
Проблема: WebSocket не работает через обратный прокси.
- Убедитесь, что в блоке location /socket заданы proxy_http_version 1.1 и заголовки Upgrade/Connection.
Проблема: Видео буферизуется сильно при проксировании.
- Включите proxy_buffering off; проверьте сетевую пропускную способность сервера и дисковых подсистем.
Альтернативы и когда это не подходит
- Plex и Emby — похожие решения; выбирайте их, если нужны проприетарные функции или официальные мобильные лимиты.
- Если вам важна простая потоковая трансляция без персональных метаданных, рассматривайте простые HTTP‑шары или DLNA‑решения.
- Jellyfin подходит для владельцев, готовых управлять сервером и обеспечивать безопасность. Для полностью управляемого облачного сервиса лучше выбирать коммерческие платформы.
Советы по производительности
- Для аппаратного ускорения установите и настройте FFmpeg с поддержкой VAAPI, NVENC/VDPAU в зависимости от железа.
- Поместите медиатеку на быстрый диск (SSD) для ускорения сканирования и доступа к метаданным.
- Ограничьте одновременные транскодирования в настройках Jellyfin при слабом CPU.
Критерии приёмки
- Доступ к интерфейсу по HTTPS: https://jellyfin.example.com
- Страница входа открывается корректно и выполняет аутентификацию.
- Потоковое воспроизведение локальных файлов корректно внутри сети и через мобильные клиенты.
- Сертификаты Let’s Encrypt действительны и настроено автоматическое продление.
Резервное копирование и обновления
Резервируйте как минимум:
- /var/lib/jellyfin — данные и медиабаза.
- /etc/jellyfin — конфигурация.
- /etc/letsencrypt — сертификаты и учетные данные Certbot.
Проверяйте обновления пакетов и выполняйте тестовую перезагрузку службы после обновлений.
Краткая сводка и дальнейшие шаги
- Jellyfin успешно устанавливается из официального репозитория и работает на Debian 11.
- Nginx служит стабильным обратным прокси при правильной конфигурации заголовков и поддержки WebSocket.
- Certbot упрощает получение HTTPS и настройку редиректа с HTTP на HTTPS.
Затем: настройте медиатеки, подключите плагины и проверьте воспроизведение на целевых клиентах (мобильных устройствах, Smart TV, Roku).
Часто задаваемые вопросы
Q: Можно ли использовать другой веб‑сервер вместо Nginx?
A: Да. Apache, Caddy и другие поддерживают обратное проксирование и автоматическое получение сертификатов. Конфигурация будет отличаться.
Q: Нужно ли закрывать порт 8096?
A: Рекомендуется закрыть 8096 для внешнего доступа и проксировать весь внешний трафик через Nginx (порт 80/443).
Q: Как продлить сертификат Let’s Encrypt?
A: Certbot обычно добавляет cron/системный таймер для автоматического продления. Проверить работу можно командой certbot renew –dry-run.
Короткое объявление: Jellyfin теперь доступен на вашем Debian 11 сервере через Nginx и защищён SSL от Let’s Encrypt — подъём медиа‑сервера займёт меньше часа при наличии домена и доступа root.
Важно: замените все примеры доменных имён (jellyfin.example.com) на свой реальный домен перед выполнением команд.
Похожие материалы
Google Password Manager в Chrome — инструкция
Как изменить имя аккаунта Origin (EA ID)
Отключить Sticky Keys в Windows 11
Отключить Quick Access в Windows 10
Измерить расстояние по прямой в Google Maps