Как установить Jellyfin Media Server на Debian 10
На этой странице
- Предпосылки
- Начало работы
- Установить Jellyfin
- Настройка Nginx в качестве обратного прокси-сервера
- Доступ к Джеллифину
- Защитите Jellyfin с помощью Lets Encrypt SSL
- Заключение
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. Теперь вы можете легко делиться своими медиафайлами с друзьями, семьей и другими пользователями.