--- title: Kraken Media Server — Full Stack created: '2026-05-18' updated: '2026-05-19' type: concept tags: - kraken - media-pipeline - infra - synthesis confidence: high --- # Kraken Media Server — Full Stack Синтез: полная карта медиа-стека на Кракене (RPi5). Объединяет [[tech/kraken-network]], [[tech/media-pipeline-pitfalls]], [[tech/htpc-steam-emulators]]. ## Архитектурный обзор Два параллельных конвейера для медиа-контента: ### Конвейер 1 — media-pipeline (Swift, ручной импорт HTPC→Kraken) ``` HTPC (rsync) → /media/{movies,cartoons,series,documentaries}/ → media-pipeline:kraken (Docker) → scan → resolve → apply → /media/library/{movies,cartoons,series}/ (canonical + NFO) → Jellyfin ``` - Resolve: TMDb (Tier 1) → KP (Tier 2) → IMDb scrape (Tier 3) → web search (Tier 4) - Классификация по жанрам провайдера (Animation→cartoons, Documentary→documentaries), никогда по пути - `unresolved.json` — очередь нераспознанных (13 items на 2026-05-16, все genuine absences) ### Конвейер 2 — *arr stack (новые скачки через Radarr/Sonarr) ``` Prowlarr (RuTracker) → Radarr (7878) / Sonarr (8989) → Transmission (9091) → /media/movies-radarr, /media/series-sonarr → Jellyfin ``` - Раздельные root folder'ы (`movies-radarr`, `series-sonarr`) — не конфликтуют с media-pipeline library - Jellyfin читает оба пути для Movies и Series ## Сервисы и порты | Сервис | Порт | Данные | |--------|------|--------| | Jellyfin | 8096 | `/media/library/` + `/media/movies-radarr` + `/media/series-sonarr` | | Transmission | 9091 | `/media/downloads/complete` | | Radarr | 7878 | root: `/media/movies-radarr` | | Sonarr | 8989 | root: `/media/series-sonarr` | | Prowlarr | 9696 | индексер: RuTracker | | media-pipeline | — | Docker run, не compose; config: `~/docker/media-pipeline/` | | Hermes (Kraken) | — | Docker container, skills: `~/.hermes/skills/` | ## Ключевые питфоллы (пережитые) 1. **HDD read-only под нагрузкой** — rsync + ffmpeg transcode одновременно → Sense Key 0x4, ext4 remount-ro. Фикс: ребут → fsck → `docker compose up -d` (2026-05-18) 2. **`docker save | ssh` зависает** — через WireGuard tunnel. Фикс: `docker save -o /tmp/` + `scp` + `docker load` раздельно 3. **curl отсутствует в Hermes-контейнере** — скиллы с curl-командами не работают из контейнера. Навигация: хостовый Hermes vs container Hermes 4. **Pi-hole DNS hijack** → Sonarr/Radarr 503. Фикс: whitelist или прямые IP 5. **Skills path**: `~/.hermes/skills/` (хост) ≠ `/opt/data/skills/` (контейнер) 6. **KP API domain** переехал на `api.poiskkino.dev` (был `api.kinopoisk.dev`) 7. **providers block в config.json** — если не указан явно, все провайдеры disabled → 213 skipped вместо 278 applied ## Статус (2026-05-18) - ✅ media-pipeline: 402/402 тестов, 13 unresolved (genuine absences в KP/TMDb) - ✅ *arr stack: Prowlarr+Radarr+Sonarr+Transmission+Jellyfin — работают - ✅ Hermes на Кракене: docker container, скиллы `download-media` + `arr-media-stack-setup` - ⏳ Трекер-парсеры (Steps D-F): audio/non-video scanner, fixture тесты для rutor/nnm-club - ⏳ Transmission torrent-fix: 271/293 файлов без привязки после pipeline apply ## Watchlist Sync (в разработке, 2026-05-19) Python-сервис `~/Developer/watchlist-sync` для автоматической синхронизации `family/documents/movies-watchlist.md` с Radarr/Sonarr/Jellyfin: - **parse** → `[ ]`/`[x]`/`❓`/`⬇️` статусы из .md - **resolve** → TMDB + KP API → ID + тип (movie/tv) - **sync-down** → добавить в Radarr/Sonarr батчами по 5 - **sync-up** → Jellyfin watched history → `[x]` в .md - **AI curation** → Hermes Kraken cron, disambiguation ❓ → Zulip `#personal::Kraken torrents` Stage 2 (после 50+ просмотров): персонализированные рекомендации по профилю (3 списка: вдвоём / один / семейное). ## Агент-доступ Kraken-Hermes в контейнере (`hermes-kraken`) доступен через Zulip. Скачать медиа: - Сериал → Sonarr API → Transmission - Фильм → Radarr API → Transmission - Только через curl (python3 запрещён в скилле)