From f9d2c498996b536406c70b937815931debf1b8e9 Mon Sep 17 00:00:00 2001 From: TheSt1tch Date: Fri, 16 Feb 2024 16:25:29 +0500 Subject: [PATCH] update and fixes --- docs/docker/autoscan.md | 0 docs/docker/plex/autoscan.md | 222 +++++++++++++++++++ docs/docker/{plex.md => plex/index.md} | 3 + docs/docker/{ => plex}/plex-mm.md | 0 docs/docker/{ => plex}/plextraktsync.md | 0 docs/docker/syncthing.md | 0 docs/docker/{traefik.md => traefik/index.md} | 0 mkdocs.yml | 16 +- 8 files changed, 235 insertions(+), 6 deletions(-) delete mode 100644 docs/docker/autoscan.md create mode 100755 docs/docker/plex/autoscan.md rename docs/docker/{plex.md => plex/index.md} (99%) rename docs/docker/{ => plex}/plex-mm.md (100%) rename docs/docker/{ => plex}/plextraktsync.md (100%) mode change 100644 => 100755 docs/docker/syncthing.md rename docs/docker/{traefik.md => traefik/index.md} (100%) diff --git a/docs/docker/autoscan.md b/docs/docker/autoscan.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/docker/plex/autoscan.md b/docs/docker/plex/autoscan.md new file mode 100755 index 0000000..da1069d --- /dev/null +++ b/docs/docker/plex/autoscan.md @@ -0,0 +1,222 @@ +# Autoscan - автоскан для Plex на Go + +[![](https://img.shields.io/github/stars/Cloudbox/autoscan?label=%E2%AD%90%20Stars)](https://github.com/Cloudbox/autoscan) +[![](https://img.shields.io/github/v/release/Cloudbox/autoscan?label=%F0%9F%9A%80%20Release)](https://github.com/Cloudbox/autoscan/releases/latest) + +Autoscan - заменяет поведение **Plex** и **Emby** по умолчанию для обнаружения изменений в файловой системе. Autoscan интегрируется с **Sonarr**, **Radarr**, **Readarr**, **Lidarr** и **Google Drive** для получения изменений практически в реальном времени, не полагаясь на файловую систему. + +!!! note "От автора" + + Наткнулся случайно, ища как можно поправить большую нагрузку при сканировании библиотеки в **Plex**. У меня достаточно большая медиа библиотека (1500 фильмов и 30000 серий в сериалах) и во время сканирования изменений, система могла некоторое ремя чуть тормозить. Решение нашлось - **Autoscan**. Он позволяет сделать интеграцию с Sonarr и Radarr, чтобы отслеживать моменты изменения файловой системы. Таким образом, сканирование в основом производится, когда что-то добавилось. Так же скан идет тольтко по той папке, что менялась. + +Запускать будем через **Docker Compose**. Предпологается, что [Docker](install.md) уже установлен. Так же установлен [Plex](plex.md). Наличии Radarr и Sonarr опционально. + +## Образ Docker + +Создаем файл `docker-compose.yml`: + +```bash +nano docker-compose.yml +``` + +Заполняем его: + +```yaml title="docker-compose.yml" +version: "3.7" + +services: + autoscan: + image: cloudb0x/autoscan + container_name: autoscan + restart: unless-stopped + environment: + - PUID=1001 + - PGID=1001 + ports: + - 3030:3030 + volumes: + - ./autoscan:/config + - /mnt:/mnt:ro #Media Library +``` + +Запустить можно через: + +```bash +docker compose up -d +``` + +## Конфиг файл + +По умолчанию конифг не создается, его нужно создать руками и заполнить параметрами. Ниже представлен пример. А еще ниже описание параметров. Конфиг файл находится по пути: `./autoscan/config.yml` + +Создадим его: + +```bash +touch ./autoscan/config.yml +``` + +??? example "Полный файл конфигурации" + + ```yaml title="config.yml" + # <- processor -> + + # override the minimum age to 30 minutes: + minimum-age: 30m + + # set multiple anchor files + #anchors: + # - /mnt/unionfs/drive1.anchor + + + # <- triggers -> + + # Protect your webhooks with authentication + authentication: + username: username + password: password + + # port for Autoscan webhooks to listen on + port: 3030 + + triggers: + radarr: + - name: radarr # /triggers/radarr + priority: 2 + + sonarr: + - name: sonarr # /triggers/sonarr + priority: 2 + # Rewrite the path from within the container + # to your local filesystem. + #rewrite: + # - from: /mnt/TV/ + # to: /mnt/Media/TV/ + + targets: + plex: + - url: https://plex.domain.tld # URL of your Plex server + token: XXX # Plex API Token + #rewrite: + # - from: /mnt/ # local file system + # to: / # path accessible by the Plex docker container (if applicable) + ``` + +Типичный конфиг файл состоит из 3 частей: + +1. `triggers` +2. `processor` +3. `targets` + +### triggers + +`triggers` - входные данные для запуска автосканирования. Они переводят входящие данные в общий формат данных, называемый сканированием. + +Поддерживается несколько триггеров: + +- [A-Train](https://github.com/m-rots/a-train/pkgs/container/a-train) : официальный триггер Google Drive для Autoscan. +- **Inotify**: прослушивает изменения в файловой системе. Его не следует использовать поверх креплений RClone. +- **Вручную**: если вы хотите просканировать путь вручную. +- **-arrs**: Lidarr, Sonarr, Radarr, Readarr - через webhook + +#### Настройка triggers +Рассмотрим более подробно настройку триггера через webhook для Sonarr и Radarr. + +Чтобы добавить вебхук в **Sonarr**, **Radarr**, **Readarr** или **Lidarr**, выполните следующие действия: + +1. Откройте `settings` страницу в Sonarr/Radarr/Readarr/Lidarr. +2. Выберите вкладку `connect` +3. Нажмите на большой плюсик +4. Выбирать `webhook` +5. Используйте `Autoscan` в качестве имени +6. Выберите `On Import` и `On Upgrade` +7. Задайте URL-адрес URL-адреса автосканирования и добавьте, `/triggers/:name` где имя — это имя, заданное в конфигурации триггера. +8. Установите имя пользователя и пароль. +9. Установите события: `Rename`, `On Movie Delete` или `On Series Delete`, `On Movie File Delete` или `On Episode File Delete` + +??? example "Пример куска конфига" + + ```yaml + triggers: + radarr: + - name: radarr # /triggers/radarr + priority: 2 + + sonarr: + - name: sonarr # /triggers/sonarr + priority: 2 + # Rewrite the path from within the container + # to your local filesystem. + #rewrite: + # - from: /mnt/TV/ + # to: /mnt/Media/TV/ + ``` + +### processor + +Триггеры передают полученные сканы процессору. Затем процессор сохраняет сканы в свое хранилище данных. В качестве хранилища данных процессор использует **SQLite**. + +Все отправляемые сканы в процессор группируются по одинаковой папке. Далее процессор ждет, пока все файлы в этот папке не станут старше `minimum-age`, по дефолту это 10 минут. + +Когда все файлы старше минимального возраста, процессор параллельно вызовет все настроенные цели, чтобы запросить сканирование папки. + +#### Настройка processor + +Настройка процессора сводится к установке минимального времени сканирования. Есть 3 параметра: + +- `minimum-age` - сколько времени пройдет после триггера +- `scan-delay` - задержка между процессами сканирования +- `scan-stats` - вывод статистики + +```yaml title="Фрагмент файла config.yml" +... +# override the minimum age to 30 minutes: +minimum-age: 30m + +# override the delay between processed scans: +# defaults to 5 seconds +scan-delay: 15s + +# override the interval scan stats are displayed: +# defaults to 1 hour / 0s to disable +scan-stats: 1m +... +``` +В `minimum-age` полях `scan-delay` и `scan-stats` должна быть указана строка в следующем формате: + +- `1s` если минимальный возраст должен быть установлен на 1 секунду. +- `5m` если минимальный возраст должен быть установлен на 5 минут. +- `1m30s` если минимальный возраст должен быть установлен на 1 минуту и ​​30 секунд. +- `1h` если минимальный возраст должен быть установлен на 1 час. + +### targets + +targets - это конечный путь, куда будет сгружаться вся информация по изменениям. Сгружать можно в: + +- Plex +- Emby +- Jellyfin +- Autoscan + +### Настройка targets + +Рассмотрим выгрузку в **Plex**. **Autoscan** заменяет стандартную джобу **Plex** по автоматическому обновлению библиотеки **Plex**. Поэтому лучше отключить параметр `Update my library automatically` + +Можно настроить одну или несколько целей **Plex** в конфигурации: + +```yaml +... +targets: + plex: + - url: https://plex.domain.tld # URL of your Plex server + token: XXXX # Plex API Token + rewrite: + - from: /mnt/Media/ # local file system + to: /data/ # path accessible by the Plex docker container (if applicable) +... +``` + +В конфигурации следует обратить внимание на пару вещей: + +- `url`. URL-адрес может напрямую ссылаться на контейнер докеров, локальный хост или обратный прокси-сервер, расположенный перед Plex. +- `token`. Нам нужен токен Plex API, чтобы делать запросы от вашего имени. Эта статья должна вам помочь. +- `rewrite`. Если Plex работает не в хостовой ОС, а в Docker-контейнере (или в Docker-контейнере работает Autoscan), то необходимо соответствующим образом [переписать пути](https://github.com/Cloudbox/autoscan#rewriting-paths). \ No newline at end of file diff --git a/docs/docker/plex.md b/docs/docker/plex/index.md similarity index 99% rename from docs/docker/plex.md rename to docs/docker/plex/index.md index d17ba2e..63c5a2f 100755 --- a/docs/docker/plex.md +++ b/docs/docker/plex/index.md @@ -1,3 +1,5 @@ +# Plex + Plex можно устанавливать разными способами, через **пакет**, через **docker-cli** и **docker compose**. Я предпочитаю **Docker Compose**. Ниже будет приведен файл Docker Compose.  @@ -33,6 +35,7 @@ services: ``` Удаление мусора из 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/docker/plex-mm.md b/docs/docker/plex/plex-mm.md similarity index 100% rename from docs/docker/plex-mm.md rename to docs/docker/plex/plex-mm.md diff --git a/docs/docker/plextraktsync.md b/docs/docker/plex/plextraktsync.md similarity index 100% rename from docs/docker/plextraktsync.md rename to docs/docker/plex/plextraktsync.md diff --git a/docs/docker/syncthing.md b/docs/docker/syncthing.md old mode 100644 new mode 100755 diff --git a/docs/docker/traefik.md b/docs/docker/traefik/index.md similarity index 100% rename from docs/docker/traefik.md rename to docs/docker/traefik/index.md diff --git a/mkdocs.yml b/mkdocs.yml index e38513f..6eec256 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,17 +11,15 @@ nav: - Установка: docker/install.md - Безопасность: docker/security.md - Ошибки: docker/error.md - - В начале: - Docker Compose: - - Profiles: docker/compose/profiles.md - Healthcheck: docker/compose/healthcheck.md + - Profiles: docker/compose/profiles.md - Traefik: - - docker/traefik.md - - TCP Route: docker/traefik/tcp-routes.md + - docker/traefik/index.md - Error Pages: docker/traefik/errorpages.md - Forward Auth: docker/traefik/forward-auth.md + - TCP Route: docker/traefik/tcp-routes.md - Сервисы: - - Autoscan: docker/autoscan.md - Drone CI: docker/drone.md - Gitea: docker/gitea.md - Grafana+Prometheus: docker/grafana-prometheus.md @@ -38,9 +36,15 @@ nav: - OCC: docker/nextcloud/occ-files-scan.md - Pictshare: docker/pictshare.md - Plex: - - docker/plex.md + - docker/plex/index.md + - Autoscan: docker/autoscan.md + #- Jacket: - Plex Meta Manager: docker/plex-mm.md - Plex Trakt Sync: docker/plextraktsync.md + #- Prowlarr + #- Overseerr: + #- Radarr: + #- Sonarr: - Redis: docker/redis.md - Samba: docker/samba.md - Syncthing: docker/syncthing.md