Files
obsidian-vault/family/how-to/arr-stack-kraken.md
T
2026-05-30 00:04:05 +00:00

5.7 KiB
Executable File
Raw Blame History

title, created, updated, type, namespace, tags, related
title created updated type namespace tags related
Arr Stack — Kraken 2026-05-23 2026-05-27 tech family
arr
radarr
sonarr
prowlarr
transmission
jellyfin
infra
kraken
tech/jellyfin-config
tech/arr-stack-taiga
concepts/kraken-media-stack

Arr Stack — Kraken

Pipeline

Prowlarr → Radarr + Sonarr → Transmission → Jellyfin
                                   ↓
                            router.py (cron 10min)
                                   ↓
                      symlinks → /media/{movies,cartoons,series,documentaries,...}/

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

  1. Radarr/Sonarr → качают в /media/movies-radarr/ и /media/series-sonarr/
  2. Transmission (ручные торренты)on-download-complete.shsync.py/media/{movies,cartoons,...}/

router.py — жанровая маршрутизация

router.py читает NFO-файлы (которые Radarr/Sonarr создают при загрузке), определяет жанр и возрастной рейтинг, и создаёт symlink в нужную Jellyfin-библиотеку:

Источник Условие Цель
movies-radarr/ Documentary /media/documentaries/
movies-radarr/ Animation + !R/18+ /media/cartoons/
movies-radarr/ всё остальное /media/movies/
series-sonarr/ Documentary /media/documentaries-series/
series-sonarr/ Animation + !TV-MA /media/cartoons-series/
series-sonarr/ всё остальное /media/series/

Расположение: /srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/docker/media-pipeline/router.py Запуск: python3 router.py --dry-run (проверка) / python3 router.py --apply (исполнение)

media-router.sh — cron-скрипт для Telegram-уведомлений

Обёртка над router.py, которая:

  • запускает router.py --apply
  • если Nothing to doSILENT, ничего не шлёт
  • если созданы symlink'и или ошибка — отправляет отчёт в Telegram Kraken

Расположение: рядом с router.pymedia-router.sh Cron (Kraken crontab): каждые 10 минут Telegram: kraken_htpc_bot → чат @mallex87

sync.py — обработка ручных торрентов (Transmission)

sync.py работает внутри Transmission-контейнера. При завершении загрузки:

  1. Определяет название через TMDB API
  2. Определяет жанр
  3. Перемещает файл в /media/{movies,cartoons,series,documentaries}/
  4. Обновляет downloadDir в Transmission через RPC

Расположение: /srv/.../docker/media-pipeline/sync.py Триггер: on-download-complete.sh (смонтирован в Transmission как /config/on-download-complete.sh:ro)

Transmission

  • download-dir: /downloads (без complete)
  • incomplete-dir: /downloads/incomplete
  • Язык: отключён auth для локальных
  • RPC: localhost:9091

При перемещении файлов для уже завершённых торрентов:

  1. Переименовать файл/папку под кейс торрента (Linux ext4 case-sensitive)
  2. Вызвать torrent-set-location с move=false
  3. Запустить торрент на сидирование

Cron'ы на Kraken (crontab)

0  *  * * *  bash ~/scripts/sync-vault.sh                     # Obsidian sync
0  *  * * *  pgs-to-srt.sh /media/downloads                   # PGS→SRT новые
0  3  * * *  pgs-to-srt.sh /media                              # PGS→SRT вся библиотека
0  1  * * *  bash ~/scripts/watchlist-nightly.sh               # watchlist nightly
0  9  * * 0  bash ~/scripts/watchlist-discover.sh              # watchlist discover
*/10 * * * * bash .../media-pipeline/media-router.sh           # media router (Telegram)

API Keys

Service API Key
Radarr cbcb8ec3...
Sonarr 15fbec32...
Prowlarr 134ac38a...

(Full keys truncated — retrieve from each service's settings page.)

Ports (default Docker network)

All services accessible at kraken:<port>:

Service Port
Radarr 7878
Sonarr 8989
Prowlarr 9696
Transmission 9091
Jellyfin 8096

Jellyfin библиотеки

Библиотека Тип Путь
Movies movies /media/movies
Series tvshows /media/series
Cartoons movies /media/cartoons
Cartoon Series tvshows /media/cartoons-series
Documentaries movies /media/documentaries
Documentary Series tvshows /media/documentaries-series

movies-radarr и series-sonarr НЕ добавлены в Jellyfin — router.py создаёт symlink'и из них в перечисленные пути.

Известные проблемы

  • 17 фильмов в Radarr hasFile=False — ждут подходящего релиза в Prowlarr. Scream (1996) в процессе загрузки.
  • Prowlarr — если долго не находит релизы, проверить статус индексеров (/api/v1/health).

Notes