Failed to authenticate. API Error: 401 Invalid authentication credentials
[2026-05-18] vault sync
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Kraken Network & Infra
|
||||
created: '2026-05-17'
|
||||
updated: '2026-05-17'
|
||||
updated: '2026-05-18'
|
||||
type: reference
|
||||
tags:
|
||||
- kraken
|
||||
@@ -37,3 +37,44 @@ confidence: high
|
||||
- Configs: `~/docker/media-pipeline/{config.json,cache/,unresolved.json}`
|
||||
- Нет docker-compose — только `docker run` напрямую
|
||||
- Монтировать `unresolved.json` явно: `-v "$(pwd)/unresolved.json:/config/unresolved.json"`
|
||||
|
||||
## *arr стек (добавлен 2026-05-17)
|
||||
|
||||
Prowlarr / Radarr / Sonarr + Transmission + Jellyfin — полностью настроены через API.
|
||||
Скилл: `~/.hermes/skills/arr-media-stack-setup/SKILL.md`
|
||||
|
||||
| Сервис | Порт | Compose dir |
|
||||
|--------|------|-------------|
|
||||
| Transmission | 9091 | `docker/transmission/` |
|
||||
| Radarr | 7878 | `docker/radarr/` |
|
||||
| Sonarr | 8989 | `docker/sonarr/` |
|
||||
| Prowlarr | 9696 | `docker/prowlarr/` |
|
||||
| Jellyfin | 8096 | `docker/jellyfin/` |
|
||||
|
||||
Все контейнеры в `media_net` (external network), кроме Jellyfin (читает диск напрямую).
|
||||
RuTracker индексер подключён через Prowlarr → fullSync в Radarr/Sonarr.
|
||||
|
||||
Скачка медиа-агентом: скилл `download-media` (Radarr/Sonarr API — только `curl + jq`, без python3).
|
||||
|
||||
**⚠️ Pitfall: Pi-hole DNS hijack** — при включённом Pi-hole Radarr/Sonarr могут получать 503 на DNS lookup (Pi-hole блокирует трекеры). Решение: whitelist в Pi-hole или прямые IP в настройках индексера.
|
||||
|
||||
**⚠️ Pitfall: curl отсутствует в Hermes-контейнере** — агент внутри Docker не может исполнять curl-команды из скилла. Skills path: `~/.hermes/skills/` видна только хостовому Hermes; контейнерный Hermes ищет в `/opt/data/skills/`.
|
||||
|
||||
## HDD Hardware Error — поведение при перегрузке
|
||||
|
||||
**Симптом (2026-05-18):** При одновременном rsync + Jellyfin transcode + docker overlay → ext4 сбрасывает ошибку Sense Key 0x4 (Hardware Error) → файловая система ремонтирует в read-only (`remount-ro`).
|
||||
|
||||
**Признаки:** Docker containers fail with `EIO` (I/O error -5), overlayfs недоступен.
|
||||
|
||||
**Восстановление:**
|
||||
1. Reboot Kraken (OMV или физически)
|
||||
2. При монтировании ext4 автоматически запускает fsck
|
||||
3. После ребута: `docker compose up -d` из каждого `~/docker/<service>/`
|
||||
|
||||
**Профилактика:** не запускать rsync и ffmpeg transcode одновременно. Jellyfin transcode: pgsrip (subtitle extraction) особенно нагружает CPU+диск.
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[personal-os-architecture]]
|
||||
- [[tech/media-pipeline-pitfalls]]
|
||||
- [[tech/htpc-steam-emulators]]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Media Pipeline — Pitfalls & Debug Notes
|
||||
created: '2026-05-16'
|
||||
updated: '2026-05-16'
|
||||
updated: '2026-05-18'
|
||||
type: entity
|
||||
tags:
|
||||
- media-pipeline
|
||||
@@ -12,8 +12,8 @@ confidence: high
|
||||
---
|
||||
# Media Pipeline — Pitfalls & Debug Notes
|
||||
|
||||
Операционные заметки по Swift media-pipeline (media_files_db / media-toolbox) на Крякне.
|
||||
Связано: [[personal-os-architecture]], [[wiki/tech/kraken-infra]]
|
||||
Операционные заметки по Swift media-pipeline (media_files_db / media-toolbox) на Кракене.
|
||||
Связано: [[personal-os-architecture]], [[tech/kraken-network]]
|
||||
|
||||
## §9.x Score Engine — Критические питфолы
|
||||
|
||||
@@ -41,6 +41,7 @@ confidence: high
|
||||
- 40 KP-запросов vs 8428 TMDb в типичном прогоне
|
||||
- Лимит исчерпывается только после очистки кеша когда весь TMDb идёт заново
|
||||
- Проблема не в архитектуре — это нормально
|
||||
- **KP API URL смена домена (Баг 8):** `api.kinopoisk.dev` → `api.poiskkino.dev`. Swift URLSession при редиректе теряет `X-API-KEY` → пустые ответы кешируются. Фикс: обновить URL, добавить `shouldCache: ((Data) -> Bool)?` — не кешировать пустой `docs`.
|
||||
|
||||
## Docker Deploy — Kraken (обязательный порядок)
|
||||
|
||||
@@ -92,6 +93,29 @@ docker run \
|
||||
- §9.6 subset floor 0.35 — добавлен
|
||||
- §9.9 year tiebreak `count>1` only — исправлен
|
||||
- Year-miss retry в TMDb/KP providers — добавлен
|
||||
- KP API URL (`api.poiskkino.dev`) + пустой-docs no-cache — исправлен
|
||||
- Leet-speak в транслите (`4` = `ч`): `String.decodeLeetSpeak()` — исправлен
|
||||
- Год `2023г` (кириллическое `г`): `(19|20)\d\d)г\b` паттерн — исправлен
|
||||
- `TitleParser _year_` underscore boundary: `\b` → `(?<![0-9])..(?![0-9])` — исправлен (Баг 12)
|
||||
- `OutputConfig` `cartoons`/`documentaries` не optional в JSON: `decodeIfPresent` — исправлен
|
||||
- `xvid`/`divx` не в quality markers list — исправлен
|
||||
- TitleParser: год как название фильма (1984, 2001) → safety guard ≥2 букв перед — исправлен
|
||||
|
||||
## Трекер-парсеры (Steps A-C, 2026-05-17)
|
||||
|
||||
`TrackerPageParserRegistry` — dispatch по `url.host`:
|
||||
- `RutrackerPageParser` — CP1251/iconv, SwiftSoup, жанры из заголовка, KP/IMDb IDs
|
||||
- `RutorPageParser`, `NNMClubPageParser` — структура реализована, требует fixture тестов
|
||||
- `TrackerMediaKind` enum: movie/series/cartoon/documentary/music/audiobook/game/book/unknown
|
||||
- `extractMediaKind` — детект по `BB.catId`/`FORUM_ID` на странице (100+ forum IDs)
|
||||
|
||||
`DirectoryPolicy` / `MatchPolicy` / `MoveStrategy`:
|
||||
- `FileAction.transmissionMove(torrentId:, from:, to:)` — Codable
|
||||
- `buildMovieActions` читает policy, `needsSymlink`, `needsNFO`, `effectiveOutputDir`
|
||||
- `transmissionMove` когда есть `torrentId`, иначе `move`
|
||||
|
||||
**⚠️ `transmissionMove` генерируется только если scanner создал регион** (нужен video файл).
|
||||
Музыка/книги/игры из downloads не перекладываются — нет `videoExtensions` для аудио (Шаг D, pending).
|
||||
|
||||
## Agent/Sync Pitfall — Duplicate unresolved
|
||||
|
||||
@@ -99,7 +123,13 @@ docker run \
|
||||
|
||||
**Фикс:** `updateUnresolvedStore` проверяет `allOutputDirs` на существующий canonical dir → пропускает. Файл: `PipelineRunner.swift`.
|
||||
|
||||
## QuerySnapshotGenerator
|
||||
|
||||
При изменениях в `TitleParser`/`NameTokenization`/`QueryBuilder` снапшоты в тестах устаревают.
|
||||
**Регенерация:** `swift run QuerySnapshotGenerator` из корня репо.
|
||||
НЕ использовать `SNAPSHOT_TESTING_RECORD=all` — крашит при 364 concurrent writes (SIGSEGV).
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[personal-os-architecture]]
|
||||
- [[wiki/tech/kraken-network]]
|
||||
- [[tech/kraken-network]]
|
||||
|
||||
Reference in New Issue
Block a user