Домашний Сервер: Часть 5 – Установка и настройка Plex Media Server в контейнере LXC Proxmox-VE

gost-main-plexserver Роутеры
  1. Домашний Сервер: Часть 1 – Предисловие, аппаратная и софтовая начинка
  2. Домашний Сервер: Часть 2 – Установка системы виртуализации Proxmox
  3. Домашний Сервер: Часть 3 – Внутренний DNS сервис на BIND9 или свои доменные имена в локальной сети
  4. Домашний Сервер: Часть 4 – Настройка Transmission daemon в контейнере LXC Proxmox-VE
  5. Домашний Сервер: Часть 5 – Настройка Plex Media Server в контейнере LXC Proxmox-VE (вы тут)

Предисловие

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

Кратко, что такое Plex? — По сути это медиа «комбайн» или центр управления, с помощью которого вы можете удобно хранить, искать и воспроизводить свой медиа контент и это не только фильмы или сериалы, это могут быть изображения и музыка. Командой Plex выпущены приложения для различного типа устройств, чтобы можно было начать смотреть фильм дома на большом экране и досмотреть например его в дороге.
Источник: www.plex.tv

Кстати недавно Plex запустил собственный бесплатный потоковый сервис с поддержкой рекламы.
Источник 5 dec 2019 (ENG): www.flatpanelshd.com

И еще, вы знали, что Plex поддерживает VR?
Т.е. если у вас нет большого экрана, но есть VR, вы можете создать себе свой собственный виртуальный кинотеатр. Правда есть пара нюансов =)
www.plex.tv/virtual-reality

Можно принять участие в переводе Plex
https://www.transifex.com/plex-1/plex-web/

P.S.
Скажу сразу — это не реклама. От слова «совсем». Просто на текущий момент это единственная грамотная система для просмотра локальной медиатеки на различных устройствах, причем абсолютно бесплатно!

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

В первую очередь необходимо развернуть отдельный LXC контейнер для медиасервера.
Подробно мы это разобрали в статье: Домашний Сервер: Часть 3 – Внутренний DNS сервис на BIND9 или свои доменные имена в локальной сети
Также для Plex Media Server понадобится доступ к месту хранения скачанных медиа файлов фильмов и сериалов, делаем по аналогии с Torrent качалкой
Мы разобрали это в статье: Домашний Сервер: Часть 4 – Настройка Transmission daemon в контейнере LXC Proxmox-VE

По итогу получаем финальный конфиг LXC контейнера для Plex в Proxmox-VE

cat /etc/pve/lxc/102.conf
#*) plexmediaserver
#*) snmpd
#*) nginx
arch: amd64
cores: 4
hostname: PLEX
memory: 2048
mp0: /rpoolz/data,mp=/mnt/data
nameserver: 192.168.88.7 192.168.88.1
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=52:60:C0:78:C1:71,ip=dhcp,type=veth
onboot: 1
ostype: debian
rootfs: local-zfs:subvol-102-disk-0,size=8G
searchdomain: gregory-gost.ru
swap: 2048
unprivileged: 1

Запустим контейнер и перейдем к установке и настройке Plex Media Server

Проверяем смонтированную папку

ls -l /mnt/
total 1
drwxrwxrwx 4 nobody nogroup 4 Sep 25 23:14 data

Видим нужную нам папку, все хорошо, продолжаем.

Обновляем контейнер и устанавливаем дополнительные утилиты

apt update && apt full-upgrade -y
apt install net-tools curl apt-transport-https

Разработчики Plex любезно предоставляют полноценный репозиторий для обновлений через APT.
Т.е. нам не нужно качать исходники, собирать пакет и т.д., что безусловно намного удобнее!
Источник (ENG): Enable repository updating for supported Linux server distributions

В этой статье рассматривается процесс установки в контейнере Debian: DEB-based distros (Debian, Ubuntu, etc.)
По ссылке разработчиков Plex, также присутствует инструкция добавления репозитория для RPM-based distros (Fedora, CentOS, etc.)

Скачиваем и устанавливаем ключ от репозитория

curl https://downloads.plex.tv/plex-keys/PlexSign.key | apt-key add -

Создадим файл источника для установки и обновлений.

nano /etc/apt/sources.list.d/plexmediaserver.list
# Plexmediaserver
deb https://downloads.plex.tv/repo/deb public main

Обновляем репозитории

apt update

Подготовка завершена, устанавливаем Plex Media Server

apt install plexmediaserver

При окончании установки появится запрос замены файла репозитория.
Я рекомендую оставить вариант по умолчанию. Т.е. не заменять файл репозитория созданный нами, на файл предлагаемый пакетом Plex

Файл настройки "/etc/apt/sources.list.d/plexmediaserver.list"
==> Файл, созданный вами или сценарием.
==> Также, файл в пакете, предоставленный сопровождающим пакета.
Что нужно сделать? Есть следующие варианты:
Y или I : установить версию, предлагаемую сопровождающим пакета
N или O : оставить установленную на данный момент вермию
   D    : показать различия между версиями
   Z    : запустить оболочку командной строки для проверки ситуации
По умолчанию сохраняется текущая версия файла настройки.
*** plexmediaserver.list (Y/I/N/O/D/Z) [по умолчанию N] ?

Дожидаемся окончания процесса установки и запуска.
Проверяем запущен ли Plex

service plexmediaserver status

Если видим то, что ниже, значит все хорошо.

Active: active (running)

Сервер Plex будет работать по IP адресу контейнера.
WEB интерфейс запущен на TCP порту 32400 и еще необходимо указать дополнительный путь /web/

netstat -nltp4
tcp        0      0 0.0.0.0:32400           0.0.0.0:*               LISTEN      27590/Plex Media

Откроем в браузере свой сервер набрав IP адрес и порт. У меня IP контейнера 192.168.88.8
192.168.88.8:32400/web/

gost-plex-1
 
После входа, Plex запросит вашу Учетную запись. Если у вас её нет, то будет необходимо пройти простую процедуру регистрации. Благо есть возможность заходить через учетные записи Google или Facebook.
После входа вас вернет на локальный сервер.
gost-plex-2
Вводное информационное окно
Далее необходимо выполнить первичную настройку Локального Сервера

После данного этапа сервером уже можно начинать пользоваться. Но есть еще некоторые вещи, которые упростят пользование данным сервисом и сделают его более понятным для пользователя владеющим Русским языком.

Установка и настройка nginx

Т.к. у нас есть DNS, реализуем вход по доменному имени, например у меня plex.gregory-gost.ru
Как видите никаких портов и дополнительных путей вводить при этом не требуется.
Сравните, что удобнее, понятнее и привычнее?
192.168.88.8:32400/web/
или
plex.gregory-gost.ru

Для этого используем реверс прокси.
Ставим nginx, останавливаем, удаляем базовый сайт «hello world» и добавляем свои настройки.

apt install nginx
service nginx stop
rm /etc/nginx/sites-enabled/default
nano /etc/nginx/nginx.conf
error_log               /var/log/nginx/error.log crit;
pid                     /var/run/nginx.pid;
worker_rlimit_nofile    8192;
timer_resolution        100ms;
include                 /etc/nginx/modules-enabled/*.conf;

events {
        multi_accept    on;
        accept_mutex    off;
        use             epoll;
}

http {
        include         /etc/nginx/mime.types;
        include         /etc/nginx/fastcgi.conf;
        default_type    application/octet-stream;

        sendfile        on;
        tcp_nopush      on;
        tcp_nodelay     on;

        #ssl_session_cache      shared:SSL:10m;
        #ssl_session_timeout    10m;

        include         /etc/nginx/conf.d/*.conf;

}
nano /etc/nginx/conf.d/plex.conf
upstream plex_backend {
        server          127.0.0.1:32400;
        keepalive       32;
}

server {
        listen          80;
        server_name     plex.gregory-gost.ru;

        send_timeout    100m;

        gzip            on;
        gzip_vary       on;
        gzip_min_length 1000;
        gzip_proxied    any;
        gzip_types      text/plain text/css text/xml application/xml text/javascript application/x-javascript image/svg+xml;
        gzip_disable "MSIE [1-6]\.";

        client_max_body_size 100M;

        proxy_http_version 1.1;
        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 Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";

        proxy_redirect off;
        proxy_buffering off;

        location / {
                if ($http_x_plex_device_name = '') {
                        rewrite ^/$ http://$http_host/web/index.html;
                }
                proxy_pass http://plex_backend;
        }

}

Запускаем nginx и проверяем вход по доменному имени

service nginx start

Установка плагина Kinopoisk

Plex поддерживает различные плагины, которые немного упрощают жизнь. Для того, чтобы фильмы в библиотеке обрабатывались корректно и метаданные по ним скачивались на Русском языке можно и не ставить данный плагин. Plex умеет по умолчанию работать с The Movie Database (TMDb) и подгружает русские названия с описанием и постеры от туда. Правда рейтинг также берется с TMDb.
Благо есть «в нашем селении» способные умельцы. Уважаемый amirotin разработал плагин, который парсит метаданные с Кинопоиска.

С декабря 2019 года, amirotin перестал заниматься плагином и его поддержку на себя взял ziemenz.

Возможности плагина:

  1. Загрузка рейтингов для фильмов
    • Kinopoisk
    • Rotten Tomatoes
    • IMDb
    • The Movies Database
  2. Источники рецензий на фильмы
    • Kinopoisk
    • Rotten Tomatoes
  3. Загрузка трейлеров фильмов
  4. Загрузка дополнительных материалов (сцены, интервью)
  5. Загрузка английских имен актеров
  6. Приоритет локализованных обложек фильмов
  7. Поддержка прокси-серверов (http, sock5)
Я надеюсь, что данный плагин не является нарушением авторских или каких-либо других прав компании ООО «Яндекс» (владеет Кинопоиском с 15 октября 2013 г.) т.к. это не коммерческий софт
У себя, я использую Релизную версию плагина 2.0.1 от 29 февраля 2020 г.: Стабильный релиз v2.0.1
Инструкция для других OS(Windows, MacOS, FreeBSD, FreeNAS, QNAP, ): https://github.com/amirotin/Kinopoisk.bundle
Новая страница с исходниками плагина: https://github.com/ziemenz/Kinopoisk.bundle
Переходим в папку с плагином, скачиваем и распаковываем
cd /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/
wget https://github.com/ziemenz/Kinopoisk.bundle/archive/v2.0.1.tar.gz
tar xvzf v2.0.1.tar.gz

Переименовываем папку т.к. она содержит лишнее «2.0.1»

mv Kinopoisk.bundle-2.0.1 Kinopoisk.bundle

Даем права для Plex Media Server на папку

chown -R plex:plex Kinopoisk.bundle/

Финальный вариант работающего Plex Media Server

gost-plex-6
Скриншот Web интерфейса Plex Media Server

Некоторые настройки Plex Media Server

Покажу некоторые настройки, которые у меня установлены для Plex Media Server.
В основном это настройки библиотек и плагинов обработки для них, остальные вы можете изучить самостоятельно, благо все на Русском языке.
Для фильмов Кинопоиск 2.0
Для сериалов The Movie Database т.к. плаин Кинопоиска пока не умеет работать с сериалами.
Изображения кликабельны:

TV Приставки и приложения для просмотра

И еще, немного затронем то, на чем все это великолепие можно смотреть!
Я использую на текущий момент:

  1. Xiaomi Mi Box S (MDZ-22-AB) Global Version — Использую на текущий момент. Все устраивает полностью, Android TV с приложением Plex, удобный Bluetooth пульт. (5 990 руб. на дату написания статьи в магазине Xiaomi. На Ali дешевле.)
  2. Raspberry Pi 3B+ с LibreELEC 9.2.0 — Установлен скрипт Plex с автозапуском. Пока единственный нормальный Custom по опыту. В целом задачи решает, но не так удобен, как Mi Box S на Android TV. Я писал статью по использованию: Домашний Медиа-плеер: LibreELEC(Kodi) на Raspberry Pi 3B+. Но планирую заменить на какой-нибудь Smart Box

Что еще можно использовать?

  1. Google Chromecast Ultra — Собственно плеер на Android TV от самого Google, функции аналогичные Mi Box S, но нет в комплекте Bluetooth пульта.
  2. Nvidia Shield TV 2019 — Обновленная «приставка» от Nvidia. С пультом, аналог Mi Box S и Google Chromecast Ultra, но дороже (13 990 руб. на дату написания статьи в магазине Nvidia)
  3. Nvidia Shield TV Pro 2019 — Более прокачанная версия «шилда» причем Plex Media Server уже встроен в этот медиаплеер, что конечно сомнительно всего 16Гб места, часть из которого занимает система. Даже с учетом возможности подключения HDD/SSD. (17 590 руб. на дату написания статьи в магазине Nvidia)
  4. Другие китайские или Российские(российско-китайские?) приставки на базе простого Android, CoreELEC, Android TV, др. — Ценники начиная от 1 500 руб. (Ugoos, H96, X96, X88, Movix Pro и т.д. и т.п.)
  5. Приложение PlexApp (офф версия требует PlexPass) — Есть, как для iOS так и для Android. Ставится на любой планшет, смартфон и т.д.
    Присутствует на некоторых Smart TV, тут вам нужно изучить набор приложений для вашего телевизора.
  6. Raspberry Pi и его аналоги на базе Kodi. Домашний Медиа-плеер: Raspbian + Kodi + плагин Plex на Raspberry Pi 3 B+

На февраль 2020:
Если хотите нормальные UHD(«4K» Ultra HD 2160p) с HDR и Автофреймрейтом, то смотрите в сторону Ugoos AM6+ или Pro, Nvidia Shield TV 2019 Pro
Для FHD(Full HD 1080p) Xiaomi Mi Box S побюджетней.

Если что-то забыл, пишите в комментариях, добавлю 🙂

Заключение

На этой радостной ноте предлагаю, закончить свое повествование по реализации Домашнего медиа сервера. Мы своего добились, фильмы и сериалы качаются на раз-два, просмотр доставляет одно удовольствие, ПК не захламлен кучей фильмов.
Возможно существуют и альтернативы Plex-у, в виде каких-то DLNA клиентов или даже тот-же Kodi, но все они не так удобны и проработаны, что дает очевидный выбор в пользу Plex. Даже при наличии различного рода сервисов, которые избыточны для домашнего локального просмотра, Plex их не навязывает и они не заметны. Это позволяет использовать его с комфортом.
Мне остается только понадеятся на грамотное развитие данной системы в будущем и пожелать его авторам успехов.
А вам дорогие читатели находить новые решения, использовать все самое лучшее и делиться впечатлениями!

В рамках цикла «Домашний сервер» планирую еще две статьи

  1. The Dude — мониторинг девайсов в домашней сети.
  2. FreePBX (Asterisk) — IP телефония.

А вот реализация Домашнего IoT пойдет в отдельный цикл, чтобы было проще ориентироваться в дальнейшем. Посмотрим будет ли интерсено читателям )

  1. openHAB 2 — домашний IoT.

Благодарю за ваше время!
Всего хорошего на просторах Интернета 😉

UPD: 29.02.2020
Изменен источник и инструкция для плагина Kinopoisk.

Выразить благодарность автору
Если Вам не безразлична судьба блога или Вы просто хотите отблагодарить Автора за его труд, смело переходите на страницу Поддержки, там описана вся информация, по тому, как это сделать. Заранее благодарен вам за данную инициативу!
Хочешь получать уведомления о выходе новых статей?
Loading
GregoryGost

Мир интересен, если вы достаточно любопытны!!!

Оцените автора
GREGORY GOST
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

  1. Алексей

    Отлично работает 4К смарт тв LG. Родное приложение Plex прямо в магазине телевизора. Подключен кабелем на 1Гбит. Отлично тянет с сервера фильмы в 4К. Кроме того, для него не нужна перекодировка файлов, те он читает всё из стандартных форматов.

    Ответить
    1. GregoryGost автор

      Подтверждаю ) Родителям купили 4К LG, полет отличный по Wi-Fi 5GHz 🙂

  2. Victor

    Также в качестве клиента Plex можно использовать медиа-приставку Apple TV 4-го поколения. Необходимо только установить приложений Plex из AppStore. Мне кажется, что это самый лучший вариант Plex-клиента.

    Ответить
  3. Артём

    Коллеги. При конвертировании видео proxmox становится недоступным. Может кто проверить?

    Ответить
  4. Артём

    Добрый день. Подскажите не загружает с кинопоиска постеры и другую информацию.

    Ответить
    1. GregoryGost автор

      Все верно, поэтому я использую для сериалов The Movie Database.
      А на счет плагина, то достаточно заглянуть в «ишусы» в репозитории и все станет понятно:
      https://github.com/amirotin/Kinopoisk.bundle/issues

  5. Ди

    Спасибо

    Ответить
    1. GregoryGost автор

      Спасибо вам, что читаете!

  6. Валерий

    А Вы не знаете как туда установить IPTV? Ставлю плагин для iptv, но такого пункта меню как «Каналы» не появляется.

    Ответить
    1. GregoryGost автор

      К сожалению не знаю. В Plex не использую IPTV. Мне хватает на Mi Box S приложений с телевидением

    2. Aleksandr

      Попробуй вместо Plex — Jellyfin. Есть поддержка IPTV

    3. GregoryGost автор

      Выглядит интересно. Посмотрим сможет ли он конкурировать с Plex в плане удобства и набора функций (типа Коллекций).

  7. Artyom

    Как у регистрироваться на сайте?) (Может, стоит переехать на хабр?) статьи-то — мясо!).
    Хотел еще спросить — а прописыванием в файле hosts я не могу получить доступ к компьтерам по имени? или энджинх позволяет сразу пройти на xxx.yyy.zz/app:5000, в этом весь смысл?

    Ответить
    1. GregoryGost автор

      Регистрации нет т.к. это по сути личный блог. Правда я не против тех, кто способен не хуже меня делиться знаниями: Как стать автором?
      Хабр очень классный ресурс, сам там постоянно зависаю, но блог я завел потому, что мне нужен контроль и возможность развивать свои задумки.

      hosts сможете, но только для одного устройства. DNS сервер же позволяет это делать централизовано.
      Nginx это не DNS сервер, это WEB сервер, а это разные вещи. За DNS у меня отвечает BIND9
      Важно понять цепочку:
      1. Вы запросили имя xxx.yyy.zz
      2. Ваш запрос обрабатывает BIND9 и направляет на указанный IP, где расположен Nginx
      3. Nginx видит xxx.yyy.zz и уже отдает сервис app:5000 по одному только имени.

  8. Artyom

    Спасибо, интересно!
    1. Как голосовать в конце статьи?) Я говорю «да»)
    2. Какой стандартный «кейс» использования плекса? Подойти к компьютеру, запустить тор, залогиниться в торренте, найти нужное, скачать, дождаться синхронизаци, конвертации… Подойти к телевизору, запустить плекс, открыть файл?.. Хоть жена и умеет пользоваться торрентами и т.д. не уверен, что wife acceptance factor будет выполнен… Скрепя сердце купили подписку на Иви и скоро уже 3-х летний ребенок сможет открыть медиа с фиксиками и выбрать… Что насчёт плекса?(

    Стот также добавить, наверно, что связь плекс-ТВ должна быть скорее всего проводная…
    Как думаешь, 10Гб дома с заделом на 10 лет вперед — это норма или избыток? Скажем, через 5-6 лет уже наверное, будет 8К — пролезет ли оно в гигабит?))))
    Можно ли смотреть с торрентов «онлайн», по мере скачки?

    Вообще тема очень интересна, как медиа так и iot\smarthome в целом.

    Ответить
    1. GregoryGost автор

      Пожалуйста!
      1. Голосование закончилось 31 января. Сейчас отображаются только результаты
      2. В большей степени я делал это для себя и для разбирающихся домашних. Брат и отец всем этим пользоваться умеют и являются основными пользователями.
      Соответственно у меня поднят VPN($6 VAT include) и есть через него выход на ряд ресурсов, которые недоступны (openhab например)

      Т.к. у меня стоит торрент Transmission, я могу просто придти домой, скачать на мобильном торрент файл и запустить его на скачивание.
      Даллее сервер сам(по скриптам) определит куда и что положить. Plex уже по своей библиотеке проводит сканирование и добавляет фильм.
      Конвертирование он проводит в реалтайм при просмотре, если в плеере это указано.
      А далее смотреть фильмы в плексе не сложнее чем в других приложениях.
      Также не стоит путать Plex с приложениями, которые предоставляют потоковые фильмы.

      Не обязательно проводная. Достаточно иметь хороший TV или TV Box с 5ГГц Wi-Fi выдающим фактические 300+ Mbps на прием совместно с роутером.
      Для самого простого 4K необходимы скорости от 25 Mbps, а дальше уже зависит от того, какой битрейт у видео и аудио.
      Максимальное для 4K я пока видел 150 Mbps (у меня кстати нет 4K). 8K, пока еще, очень далекий сегмент. А на счет 5-6 лет… не привык так далеко заглядывать в IT.
      И о каких 10Гб идет речь? В гигабит пролезет очень много и еще останется, в том числе и 8K и ютуб посмотреть и все это одновременно 🙂
      С торрентов уже давно многие смотрят на прямую, правда это возможно на TV Box-ах на Andorid или Android TV. Есть несколько приложений позволяющих это делать.
      Единственное, почему мне это не совсем нравится, если нет сидов и пиров, то смотреть будет тяжко.

  9. Руслан

    Григорий как всегда отличная статья. Написано очень грамотно и доходчиво, за что большое спасибо. Вопрос следующий, как организовать доступ к локальному серверу через интернет? Например подключить к своей медиатеке друга или в командировке? На микротике как и куда пробросить порты?
    Это правило будет работать на смарт тв?
    add action=dst-nat chain=dstnat dst-port=32400 in-interface-list=WAN protocol=tcp to-addresses=192.168.88.8 to-ports=32400

    Ответить
    1. GregoryGost автор

      Руслан, благодарю! Рад, что статья пришлась по душе.

      Правило работать будет, правда смотря для чего, если для приложения то ничего дополнительно делать не нужно. Plex может запросить вход под учетной записью.
      Если заходить на web, то понадобиться прописывать после IP адреса дополнительно путь /web/

      Друга нужно добавлять отдельно через Настройки «Пользователи и общий доступ», там можно явно указывать аккаунты друзей.

      Ну и дополнительно можно почитать про ssl over https, nginx, домены и поддомены: SSL сертификат Let’s Encrypt wildcard для https на базе Nginx
      Не стоит забывать про безопасность!

  10. Павел

    Уважаемый автор, статья отличная, но как новичку мне не совсем понятен вопрос с веб-сервером nginx: его назначение, необходимость установки в каждый контейнер — неужели нельзя его сделать единым на все контейнеры с Transmission и Plex’ом? Напишите об этом поподробнее здесь как дополнение или же вообще отдельной статьёй с упором на практическое применение в домашней сети!

    Ответить
    1. GregoryGost автор

      Nginx дает удобство при обращении через доменное имя и очень легко настраивается. Именно поэтому я написал, что удобнее использовать IP:port или просто поддомен.

      Я думал о nginx с единым расположением правил например в DNS контейнере или вообще в отдельном контейнере.
      Мне показалось, что расположение сервиса обработки запросов в том же контейнере, на котором и целевой сервис, будет лучше в рамках экономии ресурса сервера «согласен, это такой себе аргумент, но я выбрал именно этот путь».
      Считаю, что без проблем можно поднять еще один контейнер, поставить в нем только nginx и завести в него все сервисы из других контейнеров и виртуальных машин.
      И это почти единственный вариант при доступе к сервисам через 80 и 443 порт, например через поддомены с https сертификатами от Let’s Encrypt.

      И еще, если вам достаточно IP адресов и сервисов висящих на своих портах, можно не ставить DNS и nginx вовсе. Все это сделано просто для удобства эксплуатации финального результата.

      Надеюсь смог объяснить свой подход…