6.1 KiB
title, namespace, created, updated, last_synced, type, tags, confidence
| title | namespace | created | updated | last_synced | type | tags | confidence | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Kraken Network & Infra | work | 2026-05-17 | 2026-05-20 | 2026-05-20 | reference |
|
high |
Kraken Network & Infra
Topology
| Host | IP | Notes |
|---|---|---|
| Kraken | 192.168.1.15 | wlan0 (ASUS5), основной. ssh kraken. eth0 отключён |
| Kraken eth0 | 192.168.1.14 | DHCP static lease, неактивен |
| HTPC | 192.168.1.86 | Bazzite, LAN |
Важные правила
- HTPC не достигает Kraken через WireGuard — только LAN (
192.168.1.14) - Kraken достигает HTPC напрямую по LAN (192.168.1.86)
- Для rsync: всегда тянуть на Kraken (Kraken→HTPC), никогда push с HTPC
WireGuard VPN
Kraken имеет WireGuard адрес 10.99.1.2 (через VPS 91.207.28.205). Используется только как резервный путь при недоступности LAN.
wg-auto.sh (Eagle-side, macOS)
Авто-управление WireGuard-туннелем на Eagle (ноутбуке):
- Polling каждые 30 секунд
AbandonProcessGroup=trueв plist (корректное завершение)- Проверка туннеля:
ifconfig | grep 10.99.0.2 - Поднятие/опускание через
wg_up()с очисткой старого интерфейса wg0.conf: безDNS=— вместо этого PostUp создаёт/etc/resolver/kraken(nameserver 10.99.0.1), PostDown удаляет. Безkillall mDNSResponder— не нужно.
Сетевые интерфейсы Kraken
wlan0(192.168.1.15, MAC2c:cf:67:64:03:f4, ASUS5) — основной, static lease на роутереeth0— отключёнssh krakenрезолвится в 192.168.1.15 (wlan0)
Kodi на HTPC
- Library:
/run/media/bazzite/Data/kodi/{movies,series}— симлинки на реальные файлы
Kraken media volume
- Mount path:
/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/media→/media - НЕ
/mnt/user/media— пустая! - 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 недоступен.
Восстановление:
- Reboot Kraken (OMV или физически)
- При монтировании ext4 автоматически запускает fsck
- После ребута:
docker compose up -dиз каждого~/docker/<service>/
Профилактика: не запускать rsync и ffmpeg transcode одновременно. Jellyfin transcode: pgsrip (subtitle extraction) особенно нагружает CPU+диск.
Связанные заметки
Инцидент 2026-05-21 — containerd не стартовал после нечистого выключения
Симптомы: Крякен не отвечал по сети утром, потребовалась ручная перезагрузка. После ребута nginx отдавал "502 Bad Gateway" на /sonarr, /radarr, /jellyfin и др.
Причина: Жёсткое выключение → orphan cleanup на ext4 (/dev/mmcblk0p2). containerd стартовал пока FS была ещё read-only → erofs snapshotter не смог создать temp-файл → bolt metadata plugin упал → вся цепочка плагинов Docker не инициализировалась → контейнеры не поднялись → nginx bad gateway.
Фикс:
- Вручную:
systemctl restart containerd && systemctl restart docker - Добавлен
/etc/systemd/system/containerd.service.d/wait-for-fs.conf— containerd ждётlocal-fs.targetперед стартом - Добавлен
/etc/monit/conf.d/docker— watchdog по/var/run/docker.sock, перезапускает containerd+docker если сокет недоступен (каждые ~2 мин)