Найти тему
Руки не для скуки

Домашний сервер - это просто. Часть 8: Медиа-сервер. MiniDLNA/PLEX

Оглавление

Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID. Создание файловой структуры.
Часть 4: Установка компонентов WEB-сервера. Let’s Encrypt.
Часть 5: Samba и Webdav
Часть 6: Home Assistant Supervised
Часть 7: NEXTCLOUD - персональное облако.
Часть 8: Медиа-сервер. MiniDLNA/PLEX
Часть 9: Torrent-клиент. Transmission/Deluge
Часть 10: Яндекс-Диск
Часть 11: Переезд на новое железо.

Ниже описан порядок установки двух медиа-серверов MiniDLNA и Plex Media Server.

MiniDLNA дает весьма минималистичный функционал, а именно только возможность подключиться к серверу по протоколу DLNA с другого устройства, например с телевизора. Графический и webинтерфейсы отсутствуют. Настройки производятся путем редактирования config-файла. Служба MiniDLNA не требовательна к ресурсам, что важно для совсем слабых конфигураций. Кроме того в MiniDLNA бывали проблемы с обновлением базы данных при добавлении нового фильма.

Plex Media Server – это практически полноценный онлайн-кинотеатр, с функцией поиска метаданных фильмов в сети. Т.е. подключившись к нему вы увидите не список файлов, а обложки фильмов с правильными названиями, а для большинства фильмов и актерский состав и пр. информацию. Plex Media Server позволяет подключаться к себе из вне, т.е. вы можете предоставить доступ к контенту своим друзьям. Он имеет массу настроек, возможность подключения с телевизора как по протоколу DLNA, так и полноценного подключения через установленное на телевизоре приложение. Существует также мобильное приложение для просмотра на телефоне или планшете. Plexболее требователен к ресурсам, хотя моя весьма скромная конфигурация его вполне тянет.

Выбор за вами. Лично у меня установлены оба медиасервера. Они друг другу совершенно не мешают, а в ряде случаев, когда плеер Plex вдруг отказывается воспроизводить какой-то формат, собственный плеер, телевизора справляется с задачей через MiniDLNA. Редко, но бывает.

8.1. Установка и настройка MiniDLNA

8.1.1. Установка MiniDLNA:

Добавляем в исключения UFW порт 8200/tcp необходимый для работы MiniDLNA:

sudo ufw allow 8200/tcp

Устанавливаем

sudo apt install minidlna -y

Включаем автозапуск службы:sudo service minidlna enable

sudo service minidlna enable

8.1.2. Настройка конфигурации

Правим файл /etc/minidlna.conf

nano /etc/minidlna.conf

Здесь нужно прописать пуки к нашим коллекциям и снять комментарии с ряда строк.

# Путь к папке с медиа-файлами
media_dir=A,/mnt/
raid_md0/Yandex/Music
media_dir=P,/mnt/
raid_md0/Yandex/Foto_and_Video
media_dir=V,/mnt/
raid_md0/Kino
# Путь к папке для хранения базы данных и кэша обложек альбомов
db_dir=/var/cache/minidlna
# Путь к папке с лог-файлами
log_dir=/var/log/minidlna
# Имя DLNA-сервера, отображаемое клиентом
friendly_name=My_MiniDLNA
# Автообнаружение новых файлов
inotify=yes

И сохраняем (Ctrl +O).

Перезапускаем службу.

sudo service minidlna restart

Проверяем параметры init-скрипта /etc/default/minidlna:

nano /etc/default/minidlna

Обычно корректировка не требуется. Если файл отсутствует или пустой, вставляем в него текст:

# Запускать демон, если задано "yes"
START_DAEMON="yes"
# Путь к файлу конфигурации
#CONFIGFILE="/etc/minidlna.conf"
# Путь к лог-файлу
#LOGFILE="/var/log/minidlna.log"
# Запуск от имени заданного пользователя и группы
# По умолчанию: minidlna
#USER="minidlna"
#GROUP="minidlna"
# Дополнительные ключи запуска
DAEMON_OPTS="-r"

И сохраняем (Ctrl +O).

Обращаем внимание на опцию:

DAEMON_OPTS="-r"

Опция применяет параметр при запуске службы:

-r — добавляет новые объекты в базу, удаляет несуществующие.

-R — удаляет базу и формирует заново.

Если опция отключена база данных при добавлении новых файлов обновляться не будет.

Перезапускаем службу:

sudo service minidlna restart

Проверяем статус службы:

sudo systemctl status minidlna

Должно быть что-то вроде:

-2

Проверяем, порт:

sudo ss -4lnp | grep minidlna

Смотрим лог:

cat /var/log/minidlna/minidlna.log

В случае успешного старта, лог должен быть примерно следующим:

[2014/04/07 22:00:48] minidlna.c:1000: warn: Starting MiniDLNA version 1.1.2.
[2014/04/07 22:00:48] minidlna.c:354: warn: Creating new database at /var/lib/minidlna/files.db
[2014/04/07 22:00:48] minidlna.c:1039: warn: HTTP listening on port 8200
[2014/04/07 22:00:48] scanner.c:702: warn: Scanning /var/lib/minidlna
[2014/04/07 22:00:55] scanner.c:789: warn: Scanning /var/lib/minidlna finished (25 files)!
[2014/04/07 22:00:55] playlist.c:125: warn: Parsing playlists...
[2014/04/07 22:00:55] playlist.c:256: warn: Finished parsing playlists.
[2014/04/07 22:00:55] inotify.c:198: warn: WARNING: Inotify max_user_watches [8192] is low or close to the number of used watches [14] and I do not have permission to increase this limit. Please do so manually by writing a higher value into /proc/sys/fs/inotify/max_user_watches.

Если видим: "WARNING: Inotify max_user_watches [. . .] is low." то необходимо внести изменения в sysctl.conf

sudo nano /etc/sysctl.conf

добавим строки:

#MiniDLNA warning fix
fs.inotify.max_user_watches = 100000

Изменение параметра вступит в силу после перезагрузки системы.

reboot

После этого вы увидите в меню своего телевизора соответствующий пункт. В LG это выглядит так:

-3

8.1.3. Сканирование медиа-библиотеки MiniDLNA

При появлении ошибок в каталоге, необходимо выполнить повторное сканирование файлов.

Для этого удалим базу Minidlna

rm /var/cache/minidlna/files.db

и перезапустим службу:

sudo minidlnad -R && systemctl restart minidlna

8.2. Установка Plex Media Server

8.2.1. Добавление в исключения UFW порты необходимые для работы Plex:

sudo ufw allow 1900/udp
sudo ufw allow 3005/tcp
sudo ufw allow 5353/udp
sudo ufw allow 8324/tcp
sudo ufw allow 32400
sudo ufw allow 32410:32414/udp
sudo ufw allow 32469/tcp

Краткое объяснение портов и их назначения:

  • 1900/udp: Используется для обнаружения Plex Media Server клиентами по сети.
  • 3005/tcp: Необходим для Plex Companion, функции, позволяющей управлять воспроизведением Plex с мобильного устройства.
  • 5353/udp: Используется для mDNS (Multicast Domain Name System), чтобы помочь Plex обнаружить устройства в локальной сети.
  • 8324/tcp: Требуется для сервера Plex DLNA.
  • 32400: Порт Plex Media Server по умолчанию
  • 32410:32414/udp: Используется для потоковой передачи мультимедиа клиентам.
  • 32469/ tcp: Используется для потоковой передачи мультимедиа клиентам по протоколу DLNA.

8.2.2. Установка необходимых пакетов для Plex

Для установки Plex требуется установить дополнительные пакеты:

sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y

Эти пакеты предоставят инструменты для работы с репозиторием Plex, включая безопасные соединения и управление ключами GPG. Скорее всего мы их уже установили ранее, но для проверки запускаем еще раз.

Импортируем GPG-ключ Plex:

curl -fsSL https://downloads.plex.tv/plex-keys/PlexSign.key | gpg --dearmor | sudo tee /usr/share/keyrings/plex.gpg > /dev/null

Добавляем репозиторий Plex:

echo "deb [signed-by=/usr/share/keyrings/plex.gpg] https://downloads.plex.tv/repo/deb public main" | sudo tee /etc/apt/sources.list.d/plexmediaserver.list

8.2.3. Установка и запуск Plex Media Server

-4

Обновляем индекс пакетов, чтобы включить в него добавленный репозиторий Plex:

sudo apt update && apt upgrade -y

Устанавливаем Plex Media Server:

sudo apt install plexmediaserver

По умолчанию служба Plex Media должна запускаться автоматически. Чтобы убедиться в этом, выполним следующую команду:

systemctl status plexmediaserver

Должно появиться что-то вроде этого:

-5

Если служба не активна, запускаем Plex Media Server:

sudo systemctl start plexmediaserver

Включаем автозапуск:

sudo systemctl enable plexmediaserver

Для перезапуска службы можно использовать команду:

sudo systemctl restart plexmediaserver

8.2.4. Настройка SSH-туннеля и первый доступ к Plex Media Server

Следующую команду нужно выполнять из-под обычного пользователя, а не из-под root.

Если в данный момент находитесь под root:

su username

где username – имя пользователя которого вы создали при установке Debian. Под root не получится.

Создаем тунyель:

ssh 192.168.2.11 -L 8888:localhost:32400

На заданный вопрос отвечаем «yes» (не «y»)и вводим свой пароль.

Непосредственно в графической оболочке сервера открываем браузер и производим первоначальную настройку. (Это можно сделать через remote desktop который мы настроили в начале).

Открываем следующий адрес:

http://localhost:8888/web

Или используйте альтернативный адрес, если этот вдруг не работает:

https://localhost:8888/web/index.html#!/setup

В процессе настройки нужно будет пройти регистрацию. Попытку продать вам платные услуги просто игнорируйте, закрыв окно. Укажите имя вашего сервера, имя и путь к вашей библиотеке фильмов (в нашем случае это: /mnt/disk_d/Kino).

-6

После завершения начальной настройки можно получить доступ к Plex Media Server, используя IP-адрес удаленного сервера:

http://192.168.2.11:32400

Если вы попробуете открыть сайт по адресу:

plex.475cloud.ru:32400

То получите предупреждение о небезопасном соединении. Исправляем это.

8.2.5. Создание файла конфигурации виртуального хоста

Возвращаемся под root:

su -

и вводим пароль.

Напоминаю, что домен 475cloud.ru - это мой тестовый домен. Везде где в именах файлов вы его видите - меняйте на свое доменное имя.

Создаем файл конфигурации:

nano /etc/apache2/sites-available/plex.475cloud.conf

Добавляем в него:

<VirtualHost *:80>
ServerName plex.475cloud.ru
ServerAlias www.plex.475cloud.ru
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName plex.475cloud.ru
ServerAlias www.plex.475cloud.ru

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains>
</IfModule>

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:32400/
ProxyPassReverse / http://127.0.0.1:32400
#Websocket proxy
<Location /:/websockets/notifications>
ProxyPass wss://127.0.0.1:32400/:/websockets/notifications
ProxyPassReverse wss://127.0.0.1:32400/:/websockets/notifications
</Location>
</VirtualHost>

И сохраняем (Ctrl +O).

Включаем сайт (в /etc/apache2/sites-enabled создается ссылка на файл конфигурации виртуального хоста):

sudo a2ensite plex.475cloud.conf

Перезапускаем Apache:

sudo systemctl restart apache2

Если после перезапуска Apache выводится сообщение об ошибке 4.3 части 4 этой серии статей.

8.2.6. Установка сертификата Let’s Encrypt

Устанавливаем SSL-сертификат:

sudo certbot --apache -d plex.475cloud.ru -d www.plex.475cloud.ru

Перезапускаем Apache:

sudo systemctl restart apache2

После перезапуска Apache можно получить доступ к Plex Media Server, используя web-адрес:

https://plex.475cloud.ru

-7

Для включения DLNA зайдите в настройки (гаечный ключ в правом верхнем углу) и в пункте DLNAвключите:

-8

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

-9

Так же вы можете установить Plexнепосредственно на ваш телевизор и полностью наслаждаться прелестями собственного онлайн-кинотеатра подключившись к своему серверу. Он доступен на телевизорах большинства известных производителей.

Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID. Создание файловой структуры.
Часть 4: Установка компонентов WEB-сервера. Let’s Encrypt.
Часть 5: Samba и Webdav
Часть 6: Home Assistant Supervised
Часть 7: NEXTCLOUD - персональное облако.
Часть 8: Медиа-сервер. MiniDLNA/PLEX
Часть 9: Torrent-клиент. Transmission/Deluge
Часть 10: Яндекс-Диск
Часть 11: Переезд на новое железо.