diff --git a/docs/docker/plex/index.md b/docs/docker/plex/index.md index f4e30c2..b5ed397 100755 --- a/docs/docker/plex/index.md +++ b/docs/docker/plex/index.md @@ -9,10 +9,10 @@ ## Требования для запуска -!!! summary "Уже развернуто" +!!! summary "Уже работает" - * [X] [Traefik](../traefik/index.md) настроен согласно инструкциям - * [X] Запись DNS для имени хоста, которое вы собираетесь использовать (или подстановочный знак ), указывающая на ваш поддерживаемый IP-адрес . + * [Traefik](../traefik/index.md) настроен согласно инструкциям + * Запись DNS для имени хоста, которое вы собираетесь использовать (или подстановочный знак ), указывающая на ваш поддерживаемый IP-адрес . ## Подготовка @@ -24,6 +24,30 @@ ``` mkdir /opt/appdata/plex ``` +### Использование Docker macvlan (опционально) + +Если нужно сделать так, чтобы у докера был свой отдельный IP адрес в домашней локальной сети, то нужно будет использовать macvlan Docker. Контейнеры в macvlan будут думать, что они находятся на отдельном ПК в локальной сети. + +Для настройки, нужно добавить блок кода + +```yaml + +dockervlan: + name: dockervlan + driver: macvlan + driver_opts: + parent: eth1 # using ifconfig + ipam: + config: + - subnet: "192.168.1.0/24" + ip_range: "192.168.1.250/32" + gateway: "192.168.1.1" +``` + +Моя домашняя сеть находится в подсети **192.168.1.X**. Я захотел сделать так, чтобы у Plex, был свой IP-адрес, а не IP-адрес сервера с кучей контейнеров. Разберем, что значат строчки, из кода выше. + +- **eth1** - это имя используемого сетевого интерфейса. Вы можете найти это с помощью команды `ifconfig` или `ip a`. +- Далее назначаем конфиг. **192.168.1.250/32** - таким образом будет только 1 IP в подсети. Если нужно больше, то сменить маску подсети (записывается после `/`) ### Файл .env @@ -46,11 +70,18 @@ PLEX_CLAIM= ```yaml title="docker-compose.yml" version: "3.7" + +networks: + default: + driver: bridge + services: plex: container_name: plex image: plexinc/pms-docker:latest restart: unless-stopped + networks: + - default #devices: # - /dev/dri:/dev/dri # for harware transcoding ports: @@ -75,27 +106,52 @@ services: - Мы используем образ докера **plexinc/pms-docker:public** Plex. Вы также можете использовать изображение **plexpass** , которое предлагает некоторые преимущества вместо **public** . Благодаря поддержке Plex на серверах Raspberry Pi Docker (ARM), [образ Plex Linuxserver.io](https://github.com/linuxserver/docker-plex) также является хорошим. - Plex будет принадлежать к сети типа мост "default". Это нормально для большинства пользователей. -- Мы также сопоставляем несколько портов контейнера Plex (правая часть двоеточия) с хостом Docker (слева от двоеточия). Plex будет доступен на IP-адресе хоста Docker через порт Plex Docker 32400. Например, мой хост Docker имеет IP-адрес 192.168.1.111 . Итак, Plex будет доступен по адресу http://192.168.1.111:32400 . -/dev/dri обычно представляет собой видеокарту. Вы можете передать видеокарту вашего хоста докера в контейнер докера Plex для аппаратного перекодирования. Раскомментируйте эти строки (удалите # впереди), чтобы включить видеокарты. Вам придется включить аппаратное перекодирование в настройках Plex. Это особенно полезно для NAS, поддерживающих Plex (например, Synology). -В разделе «тома» мы сопоставляем постоянный том для конфигурации Plex, еще один том, на котором находится наш носитель. Вы можете сделать его доступным только для чтения, добавив :ro в конце. Наконец, мы передаем ОЗУ для более быстрого перекодирования (убедитесь, что /transcode установлен в качестве папки перекодирования в настройках медиасервера Plex). -С помощью $PUID и $PGID мы указываем, что Plex запускается с идентификатором пользователя и группой пользователей, которые мы определили ранее в файле .env . -PLEX_CLAIM — это ваш токен заявки Plex . -ADVERTISE_IP настраивает URL-адреса доступа к пользовательскому серверу в настройках сети сервера Plex. Он указывает другие IP-адреса, по которым можно получить доступ к тому же серверу Plex. -ALLOWED_NETWORKS: предназначено исключительно для регулирования пропускной способности. Указанные здесь IP-адреса считаются локальными (LAN) сетями. +- Мы также сопоставляем несколько портов контейнера Plex (правая часть двоеточия) с хостом Docker (слева от двоеточия). Plex будет доступен на IP-адресе хоста Docker через порт Plex Docker 32400. Например, мой хост Docker имеет IP-адрес **192.168.1.100** . Итак, Plex будет доступен по адресу `http://192.168.1.100:32400`. +- `/dev/dri` обычно представляет собой видеокарту. Вы можете передать видеокарту вашего хоста докера в контейнер докера Plex для аппаратного перекодирования. Раскомментируйте эти строки (удалите # впереди), чтобы включить видеокарты. Вам придется включить аппаратное перекодирование в настройках Plex. Это особенно полезно для NAS, поддерживающих Plex (например, Synology). +- В разделе `volumes` мы сопоставляем постоянный том для конфигурации Plex, еще один том, на котором находится наша медиабиблиотека. Вы можете сделать его доступным только для чтения, добавив `:ro` в конце. +- С помощью `$PUID` и `$PGID` мы указываем, что Plex запускается с идентификатором пользователя и группой пользователей, которые мы определили ранее в файле `.env`. +- `ADVERTISE_IP` настраивает URL-адреса доступа к пользовательскому серверу в настройках сети сервера Plex. Он указывает другие IP-адреса, по которым можно получить доступ к тому же серверу Plex. +- `ALLOWED_NETWORKS`: предназначено исключительно для регулирования пропускной способности. Указанные здесь IP-адреса считаются локальными (LAN) сетями. +### Настройка сети +В приведенном выше файле Docker Compose используется сеть **default**. Если нужно использовать сеть macvlan, то нужно заменить блок `networks`: + +```yaml + networks: + dockervlan: + ipv4_address: 192.168.1.250 +``` +!!! warning -Удаление мусора из PhotoTranscoder + Обратите внимание, что указанный IP-адрес такой же, как тот, который мы настроили ранее в этом руководстве. Plex должен быть доступен по адресу **http://192.168.1.250:32400**. + +### Запуск Plex + +После настройки файле Docker Compose пришло время запустить Plex с помощью команды: ```bash -find "/home/plex/plexconfig/Library/Application Support/Plex Media Server/Cache/PhotoTranscoder" -name "*.jpg" -type f -mtime +5 -delete +sudo docker compose -f ~/docker/docker-compose.yml up -d ``` +Если все будет хорошо, то через пару минут станет доступна страница в браузере, по URL адресу, перечсиленному ранее. + +## Доступ к Plex через интернет + +Доступ из домашней сети это хорошо, но что делать, когда хочется пользоваться не только дома. Самое простое - перенаправить порт 32400 на роутере, чтобы он указывал на IP-адрес сервера Plex (тот же что и `ADVERTISE_IP`, определенный ранее) +### Использование обратного прокси +Другой безопасный способ доступа к Plex - использовать обратный прокси. Но для этого нужно доменное имя или DDNS. +Можно использовать NGINX или Traefik. NGINX прост в настройке, но не гибок. Я рекомендую [Traefik](../traefik/index.md). -https://www.smarthomebeginner.com/plex-docker-compose/ -https://www.smarthomebeginner.com/adguard-home-raspberry-pi-2023/ -https://www.smarthomebeginner.com/wireguard-adblocker-on-the-go/ -https://geek-cookbook.funkypenguin.co.nz/recipes/plex/ \ No newline at end of file +## Полезные команды + +### Удаление мусора из PhotoTranscoder + +Часто бывает так, что папка `../Library/Application Support/Plex Media Server/Cache/PhotoTranscoder` начинает занимать очень много места. в ней хранится весь кеш из изображений. Разные версии превью - все тут. Надо как-то почистить старое, чтобы освободить место: + +```bash +find "/home/plex/plexconfig/Library/Application Support/Plex Media Server/Cache/PhotoTranscoder" -name "*.jpg" -type f -mtime +5 -delete +``` \ No newline at end of file diff --git a/docs/images/docker/plex_1.png b/docs/images/docker/plex_1.png old mode 100644 new mode 100755