update and fixes
continuous-integration/drone/push Build is passing Details

pull/14/head
TheSt1tch 11 months ago
parent e81e358ffb
commit f9d2c49899

@ -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).

@ -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
```

@ -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

Loading…
Cancel
Save