92 lines
4.8 KiB
Markdown
92 lines
4.8 KiB
Markdown
---
|
||
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 запрещён в скилле)
|