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

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

4 min read Сервер Обновлено 20 Nov 2025
Jellyfin на Debian 10 с Nginx и Let's Encrypt
Jellyfin на Debian 10 с Nginx и Let's Encrypt

Логотип или иллюстрация Jellyfin

Кому эта инструкция подходит

  • Системным администраторам и домашним медиасерверам.
  • Вы уже имеете Debian 10 и домен, направленный на сервер.

Основные шаги

  1. Обновить пакеты и установить утилиты.
  2. Добавить репозиторий Jellyfin и установить сервис.
  3. Настроить Nginx как обратный прокси (HTTP/HTTPS).
  4. Получить SSL через Certbot и включить редирект на HTTPS.
  5. Проверить и отладить доступ.

Требования

  • Сервер с 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. При первом запуске пройдите начальную настройку: язык, учётная запись, библиотеки и метаданные.

Интерфейс установки Jellyfin

Заполните имя пользователя и пароль

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

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

Настройка удалённого доступа

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

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

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

Каждое изображение показывает шаги интерфейса: выбор языка, учётной записи, библиотек, метаданных и финал установки.

Защита с помощью 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.

Мини-методология развертывания

  1. Подготовка: резервная копия, обновление пакетов.
  2. Установка сервиса Jellyfin.
  3. Быстрый запуск и проверка локально на 8096.
  4. Настройка обратного прокси и тест HTTP.
  5. Установка Certbot и перевод на HTTPS.
  6. Тестирование клиентских устройств и производительности.

Факты и ключевые значения

  • Порт по умолчанию: 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, тестирование и мониторинг.

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

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

Почему телефон не воспроизводит звук и как исправить
Техническая помощь

Почему телефон не воспроизводит звук и как исправить

Добавление заметок в Google Password Manager
Безопасность

Добавление заметок в Google Password Manager

Потеря пакетов в Chivalry: как найти и исправить
Игры

Потеря пакетов в Chivalry: как найти и исправить

Мышь не работает после обновления Windows 10 — решение
Windows

Мышь не работает после обновления Windows 10 — решение

Авто-включение геолокации Google Maps на Samsung
Руководство

Авто-включение геолокации Google Maps на Samsung

Проверить скорость ОЗУ в Windows
Железо

Проверить скорость ОЗУ в Windows