5.7 KiB
Executable File
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 Stack — Kraken
Pipeline
Prowlarr → Radarr + Sonarr → Transmission → Jellyfin
↓
router.py (cron 10min)
↓
symlinks → /media/{movies,cartoons,series,documentaries,...}/
Два параллельных пути поступления контента:
- Radarr/Sonarr → качают в
/media/movies-radarr/и/media/series-sonarr/ - Transmission (ручные торренты) →
on-download-complete.sh→sync.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 do— SILENT, ничего не шлёт - если созданы symlink'и или ошибка — отправляет отчёт в Telegram Kraken
Расположение: рядом с router.py — media-router.sh
Cron (Kraken crontab): каждые 10 минут
Telegram: kraken_htpc_bot → чат @mallex87
sync.py — обработка ручных торрентов (Transmission)
sync.py работает внутри Transmission-контейнера. При завершении загрузки:
- Определяет название через TMDB API
- Определяет жанр
- Перемещает файл в
/media/{movies,cartoons,series,documentaries}/ - Обновляет
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
При перемещении файлов для уже завершённых торрентов:
- Переименовать файл/папку под кейс торрента (Linux ext4 case-sensitive)
- Вызвать
torrent-set-locationсmove=false - Запустить торрент на сидирование
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
- See arr-stack-taiga for Taiga (secondary) arr stack
- Media pipeline pitfalls: media-pipeline-pitfalls
- Синтез: concepts/kraken-media-stack