Files
obsidian-vault/wiki/tech/arr-stack-kraken.md
T

137 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Arr Stack — Kraken
created: '2026-05-23'
updated: '2026-05-27'
type: tech
namespace: family
tags: [arr, radarr, sonarr, prowlarr, transmission, jellyfin, infra, kraken]
related:
- "[[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.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-контейнера. При завершении загрузки:
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
- See [[arr-stack-taiga]] for Taiga (secondary) arr stack
- Media pipeline pitfalls: [[media-pipeline-pitfalls]]
- Синтез: [[concepts/kraken-media-stack]]