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

Как установить и настроить Jellyfin на Ubuntu 20.04

5 min read Сервер Обновлено 28 Nov 2025
Jellyfin на Ubuntu 20.04 — установка и настройка
Jellyfin на Ubuntu 20.04 — установка и настройка

  • Коротко: Jellyfin — бесплатный медиасервер с открытым исходным кодом. В этой инструкции показано, как установить Jellyfin на Ubuntu 20.04, настроить Nginx в качестве обратного прокси и защитить доступ с помощью Let’s Encrypt.
  • Что вы получите: рабочий сервер Jellyfin, доступный по домену, с HTTPS и базовыми заголовками безопасности.

Логотип и интерфейс установки Jellyfin

Введение

Jellyfin — свободный медиасервер с открытым исходным кодом, который позволяет развернуть собственный сервер мультимедиа на Linux, Windows или macOS. Он управляет фильмами, сериалами, музыкой и фотографиями и предоставляет приложения для Android, Android TV и Amazon Fire TV. Среди возможностей: поддержка DLNA, автоматическая загрузка метаданных (TheTVDB, TheMovieDB, Rotten Tomatoes), аппаратное ускорение, запись и отсутствие ограничений на воспроизведение.

В этой инструкции пошагово показано развертывание Jellyfin на Ubuntu 20.04, конфигурация Nginx как обратного прокси и получение SSL через Let’s Encrypt.

Важное

  • Установка предполагает, что у вас есть домен, указывающий на IP сервера, и настроен root или sudo-пользователь.
  • По умолчанию Jellyfin слушает на порту 8096 (HTTP) и на 8920 (HTTPS при прямой конфигурации без прокси).

Требования

  • Сервер под управлением Ubuntu 20.04.
  • Действующий домен, направленный на IP сервера.
  • Доступ с привилегиями root или sudo.

Подготовка системы

Обновите пакеты и установите зависимости:

apt-get update -y

Затем установите необходимое для работы репозиториев ПО:

apt-get install apt-transport-https ca-certificates gnupg2 -y

Установка Jellyfin

Пакет Jellyfin не входит в стандартный репозиторий Ubuntu 20.04, поэтому добавим официальный репозиторий.

  1. Добавьте GPG-ключ:
wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add -
  1. Добавьте репозиторий в APT:
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/ubuntu focal main" | tee /etc/apt/sources.list.d/jellyfin.list
  1. Обновите кеш и установите Jellyfin:
apt-get update -y
apt-get install jellyfin -y
  1. Проверьте статус сервиса:
systemctl status jellyfin

Ожидаемый вывод (пример):

? jellyfin.service - Jellyfin Media Server
     Loaded: loaded (/lib/systemd/system/jellyfin.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/jellyfin.service.d
             ??jellyfin.service.conf
     Active: active (running) since Sun 2020-12-27 06:15:40 UTC; 58s ago
   Main PID: 8454 (jellyfin)
      Tasks: 16 (limit: 4691)
     Memory: 92.3M
     CGroup: /system.slice/jellyfin.service
             ??8454 /usr/bin/jellyfin --webdir=/usr/share/jellyfin/web --restartpath=/usr/lib/jellyfin/restart.sh --ffmpeg=/usr/lib/jellyfin-f>

Dec 27 06:15:48 ubuntu2004 jellyfin[8454]: [06:15:48] [INF] Registering publisher for urn:schemas-upnp-org:device:MediaServer:1 on 104.245.33.>
Dec 27 06:15:48 ubuntu2004 jellyfin[8454]: [06:15:48] [INF] Executed all pre-startup entry points in 0:00:00.6715621
Dec 27 06:15:48 ubuntu2004 jellyfin[8454]: [06:15:48] [INF] Core startup complete
Dec 27 06:15:48 ubuntu2004 jellyfin[8454]: [06:15:48] [INF] Executed all post-startup entry points in 0:00:00.3885698
Dec 27 06:15:48 ubuntu2004 jellyfin[8454]: [06:15:48] [INF] Startup complete 0:00:08.0109863
Dec 27 06:15:50 ubuntu2004 jellyfin[8454]: [06:15:50] [INF] StartupTrigger fired for task: Update Plugins
Dec 27 06:15:50 ubuntu2004 jellyfin[8454]: [06:15:50] [INF] Queueing task PluginUpdateTask
Dec 27 06:15:50 ubuntu2004 jellyfin[8454]: [06:15:50] [INF] Executing Update Plugins
Dec 27 06:15:50 ubuntu2004 jellyfin[8454]: [06:15:50] [INF] Update Plugins Completed after 0 minute(s) and 0 seconds
Dec 27 06:15:51 ubuntu2004 jellyfin[8454]: [06:15:51] [INF] ExecuteQueuedTasks

Проверьте, что порт 8096 прослушивается:

ss -antpl | grep 8096

Ожидаемый вывод:

LISTEN    0         512                      *:8096                   *:*        users:(("jellyfin",pid=8454,fd=285))                                           

После этого Jellyfin установлен и запущен.

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

Рекомендуется использовать Nginx как обратный прокси: он добавляет гибкость в маршрутизации, упрощает получение SSL и даёт дополнительные возможности кеширования и безопасности.

  1. Установите Nginx:
apt-get install nginx -y
  1. Создайте конфигурацию виртуального хоста:
nano /etc/nginx/conf.d/jellyfin.conf

Вставьте следующую конфигурацию (проверьте server_name):

server {
      listen 80;
      server_name jellyfin.yourdomain.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 -t

Если ошибок нет, перезапустите Nginx:

systemctl restart nginx

Проверьте статус сервиса:

systemctl status nginx

Доступ к веб-интерфейсу Jellyfin

Откройте браузер и перейдите по адресу http://jellyfin.yourdomain.com. Вы увидите мастер первоначальной настройки.

Экран выбора языка в установщике Jellyfin

Выберите язык и нажмите Next. Далее задайте имя администратора и пароль, укажите метаданные, настройки библиотеки и завершите мастер.

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

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

Пример настройки метаданных

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

Выбор настроек сканирования

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

После входа вы попадёте в панель управления и сможете добавить библиотеки медиа и назначить пользователей.

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

Защита Jellyfin с помощью Let’s Encrypt

Чтобы включить HTTPS, используйте Certbot и плагин для Nginx.

  1. Установите Certbot:
apt-get install python3-certbot-nginx -y
  1. Запустите автоматическую установку сертификата:
certbot --nginx -d jellyfin.yourdomain.com

Следуйте подсказкам: укажите email, согласитесь с условиями и выберите, нужно ли перенаправлять весь трафик на HTTPS (рекомендуется выбрать редирект).

Пример вывода Certbot и важные заметки:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for jellyfin.yourdomain.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/jellyfin.conf

После успешной установки Certbot предложит перелить весь HTTP-трафик на HTTPS — рекомендуется выполнить редирект.

Важно: сертификаты Let’s Encrypt действительны 90 дней, Certbot может автоматически продлевать их (через cron или systemd timer).

Проверка и отладка

  • Убедитесь, что DNS реально указывает на сервер и домен доступен извне.
  • Проверьте доступность порта 80 и 443 (если HTTPS включён): например, с вашей рабочей станции и с online-инструментов.
  • Просмотрите логи:
    • Jellyfin: /var/log/jellyfin (или systemd journal через journalctl -u jellyfin)
    • Nginx: /var/log/nginx/jellyfin.error и jellyfin.access

Резервное копирование и обновление

  • Конфигурация и данные Jellyfin находятся в /var/lib/jellyfin и /etc/jellyfin. Регулярно резервируйте эти каталоги.
  • Для обновления используйте apt-get update && apt-get upgrade; перед обновлением выполните бэкап конфигурации и базы метаданных.

Безопасность и рекомендации по жёсткой настройке

  • Запретите прямой доступ к административному интерфейсу извне, если не требуется, и используйте правила брандмауэра (ufw или iptables) для ограничения доступа.
  • Включите двухфакторную аутентификацию для аккаунтов, если используете плагины или внешние решения, поддерживающие 2FA.
  • Ограничьте права файловой системы: сервис должен запускаться от специально созданного пользователя “jellyfin” (это настроит пакет).

Факты

  • Порт по умолчанию: 8096 (HTTP).
  • Сертификаты Let’s Encrypt действуют 90 дней.

Рольовые чек-листы

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

  • Настроить DNS и проверить домен.
  • Установить пакеты и репозиторий Jellyfin.
  • Настроить Nginx и получить сертификат.
  • Настроить резервное копирование каталогов /var/lib/jellyfin и /etc/jellyfin.

Пользователь медиа-сервера

  • Создать учётную запись и настроить библиотеки.
  • Проверить доступ с клиентских приложений (Android, TV).

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

  • Jellyfin отвечает на http(s) запросы по адресу https://jellyfin.yourdomain.com.
  • При попытке доступа открывается страница входа Jellyfin и можно залогиниться с учётными данными администратора.
  • Сертификат валиден и соединение установлено по HTTPS.
  • Потоковое воспроизведение работает из локальной сети и (при необходимости) извне через прокси.

Тесты приёмки

  • Открыть страницу логина по HTTPS в браузере с другого устройства.
  • Добавить фильм в библиотеку и запустить воспроизведение в веб-интерфейсе.
  • Проверить, что WebSocket соединение устанавливается (инструменты разработчика в браузере показывают успех для /socket).

Частые вопросы

Можно ли использовать другой порт

Да, вы можете настроить Nginx на прослушивание другого порта, но для публичного доступа обычно используют 80/443.

Как включить аппаратное ускорение

Аппаратное ускорение зависит от наличия соответствующих библиотек и прав доступа к устройству (например, VA-API для Intel/AMD). Конфигурация в Jellyfin требует установки соответствующих пакетов и предоставления прав пользователю jellyfin.

Как продлить сертификат автоматически

Certbot по умолчанию устанавливает cron/systemd-таймер для автоматического обновления. Вы можете запускать “certbot renew” вручную для проверки.

Вопросы и ответы

  1. Вопрос: Что делать, если после установки страница не открывается? Ответ: Проверьте статус сервиса jellyfin, логи jellyfin и Nginx, убедитесь в корректности DNS и в отсутствии блокировки портов на уровне провайдера.

  2. Вопрос: Можно ли мигрировать библиотеку с другого сервера? Ответ: Да. Перенесите каталоги данных (обычно /var/lib/jellyfin) и конфигурации, затем скорректируйте права владельца и перезапустите сервис.

Заключение

Вы установили Jellyfin на Ubuntu 20.04, настроили Nginx как обратный прокси и защитили доступ с помощью Let’s Encrypt. После завершения вы сможете добавлять медиа и получать доступ к ним с любых совместимых устройств. Если нужна помощь с аппаратным ускорением, бэкапами или расширенной безопасностью — спросите, опишу шаги.

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

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство