Files
obsidian-vault/wiki/tech/kraken-network.md
T

6.1 KiB
Raw Blame History

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
kraken
network
infra
htpc
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, MAC 2c: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 недоступен.

Восстановление:

  1. Reboot Kraken (OMV или физически)
  2. При монтировании ext4 автоматически запускает fsck
  3. После ребута: 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.

Фикс:

  1. Вручную: systemctl restart containerd && systemctl restart docker
  2. Добавлен /etc/systemd/system/containerd.service.d/wait-for-fs.conf — containerd ждёт local-fs.target перед стартом
  3. Добавлен /etc/monit/conf.d/docker — watchdog по /var/run/docker.sock, перезапускает containerd+docker если сокет недоступен (каждые ~2 мин)