[2026-05-22] taiga sync: .obsidian/community-plugins.json .obsidian/graph.json .obsidian/hotkeys.json .obsidian/plugins/obsidian-git/data.json .obsidian/plugins/obsidian-git/main.js

This commit is contained in:
Тайга
2026-05-22 13:00:45 +00:00
parent 4934fb8249
commit 08142fc8a5
273 changed files with 3814 additions and 12480 deletions
-112
View File
@@ -1,112 +0,0 @@
---
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]]
## Инцидент 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 мин)