102 lines
4.9 KiB
Markdown
102 lines
4.9 KiB
Markdown
---
|
||
title: Kraken Network & Infra
|
||
namespace: work
|
||
created: '2026-05-17'
|
||
updated: '2026-05-20'
|
||
last_synced: '2026-05-20'
|
||
type: reference
|
||
tags:
|
||
- kraken
|
||
- network
|
||
- infra
|
||
- htpc
|
||
confidence: 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+диск.
|
||
|
||
## Связанные заметки
|
||
|
||
- [[personal-os-architecture]]
|
||
- [[tech/media-pipeline-pitfalls]]
|
||
- [[tech/htpc-steam-emulators]]
|