13 KiB
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 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). - 🔴 2026-09-04: 4K UHD Remux при Direct Play подтормаживает на ТВ (webOS). Симптом у
Неистовый (Unhinged 2020)— 60.9GB...Remux.2160p.mkvavg ~99 Мбит/с. После фикса eth0 Kraken → 1G (был 100M, см. kraken-network) торможение сохранилось. Подтверждено по логу Jellyfinlog_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 → причина в клиенте webOS, НЕ в сети/диске. Вживую при воспроизведении
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 ТВ чист (0 CRC / 0 retries за стрим, -53 dBm), все линки с запасом ×10+. Значит низкоуровневая причина — программный декодер/буфер «Jellyfin for WebOS 1.2.2» при Direct Play 4K HEVC 10-bit HDR, не инфраструктура. Вывод для стратегии качества: даже лёгкий 4K Direct Play не гарантирует плавности на этом ТВ-клиенте — вопрос не столько в remux, сколько в клиенте. Кандидаты фикса: настройки буфера/декодера клиента, DirectStream (ремукс), тянуть через HTPC/Kodi на HDMI, либо транскод аудио. Решение НЕ принято — продолжить в след. сессии.
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 и ниже | — |
- Корень «почему новые качаются в любой жир»:
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.py→radarr_add()(~стр 77) иsonarr_add()(~стр 112), обе"qualityProfileId": 1. Radarr POST/api/v3/moviecaddOptions.searchForMovie:true; Sonarr POST/api/v3/series.
- Реальный путь репо:
- Как изменить «качество для новых фильмов» глобально: сменить зашитый
qualityProfileIdвarr.pyна другой профиль (напр. id=5 Ultra-HD), ИЛИ создать профиль «2160p без Remux» и указать его. Это правка кода репо watchlist-sync на Кракене + профили в Radarr API. ⚠️ Алекс ещё НЕ утвердил направление (4K лёгкий vs 1080p, и нужно ли для сериалов). НЕ менять без явного ok. - ⚠️ Решение по стратегии качества (пользователь прошлые строки уточнял) НЕ принято — продолжить в след. сессии. Приоритет — разобраться, что делает webOS-клиент на Direct Play лёгкого 4K (см. «Известные проблемы»), т.к. если клиент виноват, смена профиля Radarr не решит подёргивание.
Реальный состав жирного 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 Mary28.1GB,The Drama19.2GB,The Crow17.4GB,They Will Kill You17.2GB,Кот в сапогах19.9GB → range 17–28GB, медиана ~19GB. - 45-50 мин эпизоды док-сериалов (
prehistoric.planets01): ~7.2–7.7GB каждый. - Статсводка по всем 10 файлам: min 7.2 / median 12.5 / mean 13.9 / max 28.1 GB. Средний битрейт ~20–40 Мбит/с.
- Практичный floor benchmark: «нормальная» копия 4K для этого ТВ ≈ 17–28GB/фильм (в 2.5–3× меньше remux). ⚠️ Однако см. «Известные проблемы»: даже такой лёгкий 4K Direct Play у webOS-клиента может подёргиваться — дело в клиенте, а не в размере файла.
Notes
- See arr-stack-taiga for Taiga (secondary) arr stack
- Media pipeline pitfalls: media-pipeline-pitfalls
- Синтез: concepts/kraken-media-stack