Поиск по сайту:

Как установить Jellyfin Media Server на Debian 10


На этой странице

  1. Предпосылки
  2. Начало работы
  3. Установить Jellyfin
  4. Настройка Nginx в качестве обратного прокси-сервера
  5. Доступ к Джеллифину
  6. Защитите Jellyfin с помощью Lets Encrypt SSL
  7. Заключение

Jellyfin — это система потоковой передачи мультимедиа с открытым исходным кодом, которая позволяет вам управлять вашими мультимедиа и передавать их в потоковом режиме. Это кроссплатформенная альтернатива другим приложениям, таким как Emby и Plex. С Jellyfin вы можете организовывать и делиться своими медиафайлами, телешоу, музыкой и фотографиями через веб-интерфейс. Вы можете получить доступ к этим потоковым мультимедиа на своем ПК, планшете, телефоне, Roku и телевизоре через Интернет. Jellyfin автоматически извлекает метаданные из баз данных TheMovieDB, OpenMovie, Rotten Tomatoes и TheTVDB.

В этом посте мы покажем вам, как установить сервер потоковой передачи мультимедиа Jellyfin с Nginx в качестве обратного прокси-сервера на Debian 10.

Предпосылки

  • Сервер под управлением Debian 10.
  • Действительное доменное имя, указанное с IP-адресом вашего сервера.
  • Пароль root настраивается на сервере.

Начиная

Во-первых, вам нужно будет обновить системные пакеты до последней версии. Вы можете обновить их с помощью следующей команды:

apt-get update -y

После обновления всех пакетов установите другие необходимые пакеты с помощью следующей команды:

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

После установки всех пакетов можно переходить к следующему шагу.

Установить Желефин

По умолчанию пакет Jellyfin не включен в репозиторий Debian 10. Поэтому вам нужно будет добавить репозиторий 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 -

Затем обновите репозиторий и установите Jellyfin с помощью следующей команды:

apt-get update -y
apt-get install jellyfin -y

После установки Jellyfin вы можете проверить статус Jellyfin с помощью следующей команды:

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 Mon 2021-03-22 08:27:42 UTC; 5min ago
 Main PID: 10192 (jellyfin)
    Tasks: 17 (limit: 4701)
   Memory: 113.9M
   CGroup: /system.slice/jellyfin.service
           ??10192 /usr/bin/jellyfin --webdir=/usr/share/jellyfin/web --restartpath=/usr/lib/jellyfin/restart.sh --ffmpeg=/usr/lib/jellyfin-ffm

Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [WRN] 127.0.0.1/32: GetBindInterface: Loopback 127.0.0.1 returned.
Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [INF] Executed all pre-startup entry points in 0:00:00.1545678
Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [INF] Core startup complete
Mar 22 08:27:46 debian10 jellyfin[10192]: [08:27:46] [INF] Executed all post-startup entry points in 0:00:00.1976994
Mar 22 08:27:46 debian10 jellyfin[10192]: [08:27:46] [INF] Startup complete 0:00:03.6985068
Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] StartupTrigger fired for task: Update Plugins
Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] Queuing task PluginUpdateTask
Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] Executing Update Plugins
Mar 22 08:27:49 debian10 jellyfin[10192]: [08:27:49] [INF] Update Plugins Completed after 0 minute(s) and 0 seconds
Mar 22 08:27:49 debian10 jellyfin[10192]: [08:27:49] [INF] ExecuteQueuedTasks

На данный момент Jellyfin запущен и прослушивает порт 8096. Вы можете проверить это с помощью следующей команды:

ss -antpl | grep 8096

Вывод:

LISTEN    0         128                0.0.0.0:8096             0.0.0.0:*        users:(("jellyfin",pid=10192,fd=289))                                          

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

Далее вам нужно будет настроить Nginx в качестве обратного прокси-сервера для доступа к Jellyfin через порт 80.

Сначала установите пакет Nginx с помощью следующей команды:

apt-get install nginx -y

После установки создайте новый файл конфигурации Nginx с помощью следующей команды:

nano /etc/nginx/conf.d/jellyfin.conf

Добавьте следующие строки:

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

Вывод:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Затем перезапустите службу Nginx, чтобы применить изменения:

systemctl reload nginx

Доступ к Джеллифину

Теперь откройте веб-браузер и войдите в веб-интерфейс Jellyfin, используя URL-адрес http://jellyfin.example.com. Вы будете перенаправлены на следующую страницу:

Выберите свой язык и нажмите кнопку «Далее». Вы должны увидеть следующую страницу:

Введите имя пользователя, пароль и нажмите кнопку «Далее». Вы должны увидеть следующую страницу:

Нажмите кнопку «Далее». Вы должны увидеть следующую страницу:

Выберите язык метаданных и нажмите кнопку «Далее». Вы должны увидеть следующую страницу:

Разрешите удаленный доступ и нажмите кнопку «Далее». После завершения установки вы должны увидеть следующую страницу:

Нажмите кнопку Готово, чтобы завершить установку. Вы должны увидеть страницу входа в Jellyfin:

Укажите свое имя пользователя, пароль и нажмите кнопку «Войти». Вы должны увидеть панель инструментов Jellyfin на следующей странице:

Безопасный Jellyfin с Lets Encrypt SSL

Затем вам нужно будет установить клиентский пакет Certbot, чтобы установить управление Lets Encrypt SSL. Сначала установите Certbot с помощью следующей команды:

apt-get install python3-certbot-nginx -y

После завершения установки выполните следующую команду, чтобы установить Lets Encrypt SSL на свой веб-сайт:

certbot --nginx -d jellyfin.example.com

Вам будет предложено указать действующий адрес электронной почты и принять условия обслуживания, как показано ниже:

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): 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/jellyfin.conf

Затем выберите, следует ли перенаправлять HTTP-трафик на HTTPS, как показано ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Введите 2 и нажмите Enter, чтобы завершить установку. Вы должны увидеть следующий вывод:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/jellyfin.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://jellyfin.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=jellyfin.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/jellyfin.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/jellyfin.example.com/privkey.pem
   Your cert will expire on 2020-10-30. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Теперь ваш сайт защищен с помощью Lets Encrypt SSL. Вы можете безопасно получить к нему доступ, используя URL-адрес https://jellyfin.example.com.

Заключение

Поздравляем! вы успешно установили Jellyfin на сервер Debian 10. Теперь вы можете легко делиться своими медиафайлами с друзьями, семьей и другими пользователями.