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

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

5 min read Сервер Обновлено 20 Nov 2025
Jellyfin на Debian 11: Nginx + Let's Encrypt
Jellyfin на Debian 11: Nginx + Let's Encrypt

Jellyfin — интерфейс медиа‑сервера

О чём эта инструкция

Эта статья поможет системному администратору или технично подкованному пользователю развернуть Jellyfin на сервере с Debian 11, сделать доступным по доменному имени и включить HTTPS через Let’s Encrypt. Кратко: установка пакета, конфигурация обратного прокси, получение и автоматическое обновление сертификата.

Важно: предполагается, что у вас есть сервер с Debian 11, домен, указывающий на IP сервера, и доступ root.

Основные преимущества Jellyfin

  • Бесплатный, открытый и кросс‑платформенный медиа‑сервер.
  • Поддержка аппаратного ускорения кодирования/декодирования через FFmpeg.
  • Получение метаданных из TheTVDB и TheMovieDB.
  • Отсутствие ограничений на воспроизведение в мобильных приложениях.

Предварительные условия

  • Сервер с Debian 11.
  • Доменное имя, указывающее на IP сервера.
  • Доступ root на сервере или эквивалент sudo.

Шаг 1 — Установка Jellyfin

  1. Установите зависимости:
apt-get install apt-transport-https ca-certificates gnupg2 curl git -y
  1. Добавьте 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
  1. Обновите APT и установите Jellyfin:
apt-get update -y  
apt-get install jellyfin -y
  1. Проверьте статус сервиса:
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. Мастер установки проведёт вас через выбор языка, создание администратора и базовые настройки библиотеки.

Экран выбора языка в мастере Jellyfin

Создание администратора в Jellyfin

Добавление медиатеки в Jellyfin

Готово — завершение мастера установки

Выбор языка метаданных

Окно завершения установки Jellyfin

Страница входа Jellyfin

Дашборд Jellyfin после входа

Шаг 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) на свой реальный домен перед выполнением команд.

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

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

Google Password Manager в Chrome — инструкция
Безопасность

Google Password Manager в Chrome — инструкция

Как изменить имя аккаунта Origin (EA ID)
Игры

Как изменить имя аккаунта Origin (EA ID)

Отключить Sticky Keys в Windows 11
Windows

Отключить Sticky Keys в Windows 11

Отключить Quick Access в Windows 10
Windows 10

Отключить Quick Access в Windows 10

Измерить расстояние по прямой в Google Maps
Навигация

Измерить расстояние по прямой в Google Maps

Изменить устройство по умолчанию Amazon Kindle
Инструкции

Изменить устройство по умолчанию Amazon Kindle