В этом руководстве представлены методы настройки медиа-сервера Jellyfin на Ubuntu 20.04 LTS Server/Desktop.
Jellyfin — это форк медиа-сервера с открытым исходным кодом Emby. Они очень похожи по программному обеспечению, но многие считают Jellyfin лучше, поскольку разработчики Emby недавно перешли на закрытый код, Jellyfin позволяет вам хранить свои фильмы, телешоу, музыку и фотографии в едином потрясающем интерфейсе и передавать эту мультимедийную информацию на ваш компьютер, планшет, мобильный телефон, телевизор, Roku и т. д. в локальной сети или в Интернете. Его можно установить на Linux, MacOS и Windows.
Особенности Jellyfin
Jellyfin — это форк медиа-сервера Emby. Он обладает множеством тех же функций, что и Plex и Emby.
- В отличие от Plex или Emby, Jellyfin на 100% бесплатен и имеет открытый исходный код. Без рекламы. Нет ограничений на воспроизведение в мобильных приложениях. (Хотя приложение в iOS не может воспроизводить видео в фоновом режиме.)
- Смотрите Live TV и устанавливайте автоматические записи, чтобы расширить свою библиотеку.
- Поддерживает DLNA.
- Дополнительные плагины могут быть установлены для обеспечения дополнительных функций.
- Поддерживает аппаратное ускорение кодирования/декодирования видео с помощью FFMpeg.
- И много чего еще.
Установка Jellyfin Media Server на Ubuntu 20.04
Jellyfin не входит в стандартный репозиторий Ubuntu, однако у него есть свой личный репозиторий. Выполните следующую команду, чтобы добавить репозиторий Jellyfin в вашу систему Ubuntu.
echo «deb [arch=$( dpkg —print-architecture )] https://repo.jellyfin.org/ubuntu focal main» | sudo tee /etc/apt/sources.list.d/jellyfin.list
После этого выполните следующую команду, для импорта GPG-ключа Jeffyfin в систему Ubuntu, чтобы APT мог проверять целостность пакета во время установки.
wget -O — https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo apt-key add —
И поскольку этот репозиторий использует соединение HTTPS, мы дополнительно добавим пакет apt-transport-https и ca-Certificates.
sudo apt install apt-transport-https ca-certificates
И в заключение обновим списки пакетов Ubuntu и установим Jellyfin Media Server
sudo apt update
sudo apt install jellyfin
Эта команда также установит 3 дополнительных пакета в качестве зависимостей:
- jellyfin-ffmpeg: для перекодирования видео.
- jellyfin-server: сам медиа-сервер.
- jellyfin-web: веб-интерфейс сервера.
Теперь медиа-сервер Jellyfin установлен, и мы можем проверить его состояние с помощью команды:
systemctl status jellyfin
Как видите, он запущен и работает на моей системе Ubuntu 20.04. (Нажатием кнопки q, верните управление терминалом.)
Если медиа-сервер Jellyfin не запущен, вы можете запустить его с помощью команды:
sudo systemctl start jellyfin
Видеоинструкция по установке
Веб-интерфейс администрирования находится на порту 8096. Вы сможете войти в него набрав следующий URL-адрес в вашем браузере.
http://127.0.0.1:8096/
Теперь вы должны увидеть экран первоначальной настройки Jellyfin. Начните с выбора предпочитаемого языка в раскрывающемся меню. Затем нажмите кнопку « Далее» , чтобы продолжить.
Следующим шагом будет создание учетной записи пользователя
Теперь вы сможете добавлять библиотеки. Нажмите кнопку «Добавить медиатеку».
Но перед тем как создавать медиатеку, необходимо выполнить некоторые настройки.
Предварительная настройка каталогов для медиатеки Jellyfin Media Server
Теперь нам необходимо создать каталоги для хранения медиафайлов на нашем медиа-сервере. Например, если вы хотите иметь музыку и фильмы на своем сервере, вы должны создать каталоги для их хранения, введя в терминале следующую команду:
sudo mkdir -p media/files/music && sudo mkdir media/files/movies
Обратите внимание, что пользователю gen необходимо иметь разрешение на чтение и выполнение в ваших каталогах мультимедиа. Например, мой каталог /media/files/ имеет разрешения только для пользователя root. Пользователи, не входящие в группу, rootне могут получить к нему доступ, поэтому нам необходимо выполнить следующую команду, чтобы дать пользователю genправа на чтение и выполнение. (Я не советую менять владельца с помощью команды chown,chgrp. Достаточно использовать команду setfacl,которая входит в пакет ACL.) Выполним следующие команды:
sudo setfacl -m user:gen:rx /media/files/
Также нам необходимо дать права отдельным медиа-каталогам, как показано ниже.
sudo setfacl -m user:gen:rx /media/files/ имя вашего каталога
Также может появиться соблазн добавить рекурсивный флаг ( -R), который дает jellyfinразрешение на чтение и выполнение для каждого файла и подкаталогов на диске.
sudo setfacl -R -m user:gen:rx /media/files/
Делайте это с осторожностью если только ваш внешний жесткий диск используется для хранения мультимедийных файлов, вы можете добавить рекурсивный флаг, но если у вас есть конфиденциальные файлы на внешнем жестком диске, не совету этого делать.
После того, как вы закончите добавлять каталоги мультимедиа, нам необходимо настроить параметры медиатеки.
Выберите тип контента (фильмы, музыка, телешоу и т.д.) И отображаемое название.
Затем нажмите кнопку « Плюс» (+) , чтобы выбрать папку с медиа-содержимым.
После того, как вы добавите папку мультимедиа, вы можете настроить параметры библиотеки. Выбрав свой язык, страну и т.д.
Нажмите кнопку ОК. Вы всегда сможете добавить дополнительные библиотеки позже. Нажмите кнопку Следующий.На следующем шаге вы можете выбрать, включить ли дистанционный вход. Но я не рекомендую использовать собственную методологию удаленного входа, поскольку в ней отсутствует шифрование HTTPS, поэтому снимите все флажки с чекбоксов. Если вам нужен удаленный доступ, ознакомьтесь с методами организации обратного прокси-сервера в этой статье ниже.
Если вы установили Jellyfin на удаленный сервер Ubuntu, вам необходимо настроить обратный прокси-сервер с Nginx или Apache для доступа к веб-интерфейсу, это будет показано ниже в этой статье.
Нажмите кнопку «Следующее» и «Завершить». И сможете, войит в свою учетную запись Jellyfin.
Настройка обратного прокси
Поскольку Jellyfin располагается по адресу 127.0.0.1:8096, веб-интерфейс доступен только для подключений с локального компьютера. Чтобы получить доступ к веб-интерфейсу Jellyfin с удаленного компьютера, нам необходимо настроить обратный прокси для Jellyfin с Nginx или Apache.
Nginx
Nginx — чрезвычайно популярный интернет-сервер и обратный прокси. Если вы решите использовать Nginx, запустите следующую команду, чтобы установить его.
sudo apt install nginx
Затем создайте конфигурационный файл для сервера Jellyfin.
sudo nano /etc/nginx/conf.d/jellyfin.conf
Добавьте в этот файл следующее содержимое. Замените jellygen.hopto.org своим собственным доменным именем. Вы также должны создать DNS-запись для этого поддомена. Если у вас нет настоящего доменного имени, я рекомендую зайти в Begetи приобрести его.
server {
listen 80;
listen [::]:80;
server_name jellygen.hopto.org;
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 командой:
sudo nginx -t
Если проверка пройдена успешно, перезапустите Nginx, чтобы изменения вступили в силу, командой:
sudo systemctl reload nginx
Теперь вы можете получить доступ к вашему медиа-серверу Jellyfin набрав адрес в браузере jellygen.hopto.org
Apache
Если вы хотите использовать Apache, установите веб-сервер Apache с помощью следующей команды:
sudo apt install apache2
Чтобы использовать Apache в качестве обратного прокси, нам необходимо включить несколько модулей; прокси и модуль заголовков.
sudo a2enmod proxy proxy_http headers proxy_wstunnel
После чего создайте файл виртуального хоста для Jellyfin.
sudo nano /etc/apache2/sites-available/jellyfin.conf
Поместите в файл следующие строчки конфигурации. Замените jellygen.hopto.org фактическим доменным именем. Не забудьте создать A запись DNS для этого поддомена. Если у вас нет настоящего доменного имени, я рекомендую воспользоваться регистратором Beget и приобрести его.
<VirtualHost *:80>
ServerName jellygen.hopto.org
ErrorDocument 404 /404.html
#HTTP proxy
ProxyPass / http://localhost:8096/
ProxyPassReverse / http://localhost:8096/
#Websocket proxy
SSLProxyEngine on
<Location /:/websockets/notifications>
ProxyPass wss://localhost:8096/:/websockets/notifications
ProxyPassReverse wss://localhost:8096/:/websockets/notifications
</Location>
Header always unset X-Frame-Options
</VirtualHost>
Сохраните и закройте конфигурационный файл. После чего активируйте этот виртуальный хост.
sudo a2ensite jellyfin.conf
Перезагрузите сервер Apache
sudo systemctl restart apache2
Теперь вы можете получить доступ к вашему медиа-серверу Jellyfin набрав адрес в браузере jellygen.hopto.org
Включение HTTPS
Чтобы зашифровать весь HTTP-трафик, когда вы посещаете ваш сервер извне, нам нужно включить HTTPS, воспользовавшись бесплатным сертификатом TLS, выданным Let’s Encrypt. Используйте следующую команду, чтобы инсталлировать клиент Let’s Encrypt (certbot) в Ubuntu 20.04.
Для Apache
sudo apt install certbot
Для NGINX
sudo apt install python3-certbot-nginx
Для того чтобы получить и установить TLS сертификат выполним следующую команду:
sudo certbot —nginx —agree-tos —redirect —hsts —staple-ocsp —email ваш email -d ваше доменное имя
Если вы используете Apache, вам необходимо установить плагин Apache Certbot .
sudo apt install python3-certbot-apache
Для того чтобы получить и установить TLS сертификат выполним следующую команду:
sudo certbot —apache —agree-tos —redirect —hsts —staple-ocsp —email ваш@email -d ваше.доменное.имя
Ключи:
—nginx: использовать плагин nginx.
—apache: использовать плагин Apache.
—agree-tos: принятие условия использования (Пользовательское соглашение).
—redirect: принудительно использовать HTTPS с помощью 301 редиректа.
—hsts: добавлять заголовок Strict-Transport-Security к каждому ответу HTTP. Заставить браузер всегда использовать TLS для домена. Защищает от удаления SSL / TLS.
—staple-ocsp: включает сшивание OCSP. Допустимый ответ OCSP прикреплен к сертификату, которые сервер предоставляет через TLS.
Вы получите сертификат и он будет установлен автоматически
Теперь вы сможете подключиться к веб-интерфейсу сервера через безопасное соединение HTTPS : https://jellygen.hopto.org