Files
obsidian-vault/family/how-to/arr-stack-kraken.md
T

15 KiB
Raw Blame History

title, created, updated, type, namespace, tags, related
title created updated type namespace tags related
Arr Stack — Kraken 2026-05-23 2026-09-04 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.)

Качество загрузки для НОВЫХ фильмов/сериалов (2026-09-04)

watchlist-sync (автодобавление из watchlist) использует профиль WEB-4K (no remux) (Radarr id 7, Sonarr id 7) вместо бывшего Any/id=1.

Что разрешает профиль (в порядке предпочтения, кодированные, БЕЗ remux/BR-DISK):

  • 2160p: HDTV / WEBDL / WEBRip / BluRay-2160p (кодир.)
  • fallback 1080p: HDTV / WEBDL / WEBRip / BluRay-1080p (кодир.)
  • fallback 720p: HDTV / WEBDL / WEBRip / BluRay-720p (кодир.)
  • Запрещены: Remux-1080p, Remux-2160p, BR-DISK, Raw-HD, SDTV/DVD/480/576.
  • cutoff = Bluray-2160p (кодир.); upgrade выключен после скачивания.

Где менять: watchlist-sync/watchlist_sync/arr.py строки qualityProfileId: 7 (radarr_add ~L77, sonarr_add ~L112). НЕ редактировать профили вручную иначе watchlist-sync надо обновить на новый id. Создать/править профиль «WEB-4K (no remux)» — Radarr/Sonarr → Settings → Quality Profiles.

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).
  • 🔴 2026-09-04: 4K UHD Remux при Direct Play подтормаживает на ТВ (webOS). Симптом у Неистовый (Unhinged 2020) — 60.9GB ...Remux.2160p.mkv avg ~99 Мбит/с. После фикса eth0 Kraken → 1G (был 100M, см. kraken-network) торможение сохранилось. Подтверждено по логу Jellyfin log_20260904.log: сессия 10:18→10:28 «Jellyfin for WebOS 1.2.2», Stop at 400916ms (~6:40), ни одной строки transcode → это Direct Play, не CPU-рендер субтитров.
  • 🔴🔴 2026-09-04 (вживую): тормозит Direct Play даже лёгкого 4K → пока шло по Wi-Fi, причина не сервер/диск. В живом воспроизведении по Wi-Fi Project Hail Mary (2026) (...2160p.iT.WEB-DL...mkv, HEVC Main10 4K HDR10+, avg ~24.5-25.7 Мбит/с, 30.2GB, Direct Play) подёргивание было, при этом: транскода нет (0 ffmpeg, CPU Kraken load 0.1), сервер отдаёт всего ~21 Мбит/с, Wi-Fi ТВ «чист» по MAC-счётчикам (0 CRC/0 retries, -53 dBm), линки с запасом ×10+.
  • 2026-09-04 РАЗРЕШЕНИЕ (проверено пользователем вживую): после двух правок — (1) eth0 Kraken возвращён на 1G (замена патч-корда) и (2) ТВ переведён на проводной Ethernet (100M downshift-линк) — и Unhinged (remux, ~89 Мбит/с), и Project Hail Mary (лёгкий 4K) идут без тормозов. Вывод: причиной были НЕ пропускная способность и НЕ декодер-клиента, а нестабильный Wi-Fi-линк последней мили ТВ (даже при чистых MAC-счётчиках — джиттер/переупорядочивание в зашумлённом эфире). Провод (даже 100M) стабильно отдаёт. Профиль WEB-4K (no remux) остаётся разумной страховкой, но не был обязательной причиной тормозов.

Radarr Quality Profiles на Kraken (проверено 2026-09-04)

Via http://kraken:7878/radarr/api/v3/qualityprofile (X-Api-Key из config.xml; UrlBase=/radarr). Radarr v6.1.1.10360, Linuxserver image, net docker_default.

id Профиль Разрешённые качества Cutoff
1 Any весь диапазон CAM..BR-DISK, вкл. все 2160p Remux-1080p
2 SD до Bluray-576p
3 HD-720p до Bluray-720p
4 HD-1080p HDTV/Bluray/Remux-1080p Bluray-1080p
5 Ultra-HD HDTV/Bluray/Remux-2160p (BR-DISK не allowed) Remux-2160p
6 HD-720p/1080p 1080p и ниже
7 WEB-4K (no remux) создан кодир. HDTV/WEB/BluRay 2160p+1080p+720p Bluray-2160p (кодир.)
8 (если появится из id авто-инкремента — перепроверить)

Профиль id=7 разрешает код HDTV/WEBDL/WEBRip/BluRay в 2160/1080/720; запрещает Remux-1080p, Remux-2160p, BR-DISK, Raw-HD, SDTV/DVD/480/576. upgrade выключен. Sonarr: аналогичный профиль тоже id=7.

  • Корень «почему новые качаются в любой жир»: watchlist-sync (который добавляет фильмы/сериалы из watchlist в Radarr/Sonarr) жёстко прописывает "qualityProfileId": 1 (= профиль Any) в arr.py:
    • Реальный путь репо: /srv/dev-disk-by-uuid-6194539b-03e0-4f33-986b-4da09834e82f/watchlist-sync (НЕ ~/Developer/watchlist-sync, хотя симлинк ~/Developer/watchlist-sync.../49e8.../watchlist-sync есть; 49e8 — симлинк на 6194).
    • watchlist_sync/arr.pyradarr_add() (~стр 77) и sonarr_add() (~стр 112), обе "qualityProfileId": 1. Radarr POST /api/v3/movie c addOptions.searchForMovie:true; Sonarr POST /api/v3/series.
  • Решение принято и применено (см. выше): профиль WEB-4K (no remux) (Radarr/Sonarr id 7), fallback 1080→720, remux запрещён. Применено 2026-09-04.
  • 2026-09-04: стратегия качества РЕШЕНА И ПРИМЕНЕНА. Новые фильмы/сериалы (через watchlist-sync) добавляются с профилем WEB-4K (no remux) (Radarr id 7, Sonarr id 7) — см. секцию «Качество загрузки для НОВЫХ». Fallback: если нет 2160p-кодированного — 1080p → 720p; remux не берётся никогда. Было принято так (fallback=1080, если нет — 720). Существующие файлы НЕ трогаются.

Реальный состав жирного remux (пример Unhinged, ffprobe 2026-09-04)

Важно для понимания «что даёт remux» перед выбором профиля. Файл Неистовый.2020.UHD.Blu-Ray.Remux.2160p.mkv = 60.9GB, 1:31:05, контейнер 89.17 Мбит/с средний.

FFprobe потоки:

idx тип кодек каналы язык / роль
0 video HEVC Main10, 3840×2160, 24fps HDR10 (BT.2020, PQ smpte2084)
1 audio AC3 5.1(side) 384k rus «Dub, iTunes»
2 audio DTS-HD MA 7.1 rus «Д. Есарев»
3 audio TrueHD 7.1 eng
4 audio AC3 5.1 640k eng
5 audio DTS stereo 320k eng Commentary (реж. Деррик Борте)
6-8 sub SRT/SPU rus / eng full / eng SDH

Вывод: размер 60GB раздувает НЕ видео (HDR10 HEVC-часть типичная), а множество звуковых дорожек (lossless DTS-HD MA + TrueHD) + аудиокомментарий. «Что даёт remux» на бытовом ТВ: видео-выигрыш против аккуратного 4K-рипа почти незаметен с дивана; бонус реализуется только при lossless-прокачке звука (AVR/eARC). Если ТВ играет через собственные динамики/стерео или делает audio-transcode — плюс remux теряется, а вес/сеть/лаг остаются. Это аргумент за профиль «2160p без Remux» для бытового просмотра на webOS-TB.

Бенчмарк WEB-4K (замерено по библиотеке Kraken, 2026-09-04)

«Поддерживаемое качество» для сравнения с жирным remux — это кодированные 2160p. Замер файлов с WEB+2160 в имени в /media:

  • Полнометражки (2ч): Project Hail Mary 28.1GB, The Drama 19.2GB, The Crow 17.4GB, They Will Kill You 17.2GB, Кот в сапогах 19.9GB → range 1728GB, медиана ~19GB.
  • 45-50 мин эпизоды док-сериалов (prehistoric.planet s01): ~7.27.7GB каждый.
  • Статсводка по всем 10 файлам: min 7.2 / median 12.5 / mean 13.9 / max 28.1 GB. Средний битрейт ~20–40 Мбит/с.
  • Практичный floor benchmark: «нормальная» копия 4K для этого ТВ ≈ 17–28GB/фильм (в 2.53× меньше remux). ⚠️ ⚠️ Важно: подёргивание 4K Direct Play (и лёгкого, и remux) было вызвано Wi-Fi-линком последней мили ТВ — по проводу оба идут (см. «РАЗРЕШЕНИЕ» в «Известные проблемы»). Напротив клиента webOS не виноват.

Notes