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

Как установить и настроить 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
Автор
Редакция

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

Лучшее ПО для удаления объектов из видео
Видеоредактирование

Лучшее ПО для удаления объектов из видео

Переключение на выделенную видеокарту
Аппаратное обеспечение

Переключение на выделенную видеокарту

Как выйти в прямой эфир на Facebook — пошагово
Социальные сети

Как выйти в прямой эфир на Facebook — пошагово

Удаление шагов и отключение трекинга на iPhone
Конфиденциальность

Удаление шагов и отключение трекинга на iPhone

dplay.dll: как исправить ошибку отсутствия
Windows

dplay.dll: как исправить ошибку отсутствия

Удалить метку External в Outlook
Почта

Удалить метку External в Outlook