diff --git a/family/how-to/openmediavault-rpi5.md b/family/how-to/openmediavault-rpi5.md index 47658001..e9dd7506 100644 --- a/family/how-to/openmediavault-rpi5.md +++ b/family/how-to/openmediavault-rpi5.md @@ -28,8 +28,9 @@ ip: 192.168.1.14 | 8 — Контейнеры | ✅ | Все через отдельные docker compose, конфиги на HDD (см. ниже) | | 9 — Time Machine share | ✅ | `mbentley/timemachine:smb`, расписание 10:00-22:00 GMT+6, HDD/timemachine | | 10 — Перенос данных | 🔲 | | -| 11 — Hermes агент Кракен | 🚧 | Dockerfile + config готовы, нужно: заполнить .env, HA token, собрать образ | -| 12 — Obsidian sync (Taiga↔Kraken↔Eagle) | 🔲 | Настроить синхронизацию vault между всеми тремя агентами | +| 11 — Hermes агент Кракен | 🚧 | Билд готов, entrypoint проблема решается, нужно: HA token (отложено), docker compose up | +| 12 — Obsidian sync (Taiga↔Kraken↔Eagle) | 🚧 | Скрипты готовы, cron Eagle запущен (hourly). Кракен/Тайга — деплой pending | +| 13 — Vault wiki (llm-wiki) | 🔲 | Eagle: scheduled wiki-curation job, Karpathy-style | --- @@ -299,22 +300,49 @@ sudo docker logs hermes-kraken --tail 20 --- -## Шаг 12 — Obsidian sync (Taiga ↔ Kraken ↔ Eagle) +## Шаг 12 — Obsidian sync (Eagle ↔ Taiga ↔ Kraken) -Все три агента должны работать с одним vault. Варианты: -- **Git sync** — vault в git repo, каждый агент делает pull/push -- **rsync** — периодическая синхронизация через SSH -- **Syncthing** — p2p sync без облака +**Схема:** Git bare repo на TrueNAS как центральный хаб. -Текущее состояние vault: -- Eagle (Mac): `~/obsidian/` — git repo, auto-commit 23:00 -- Taiga (TrueNAS): `/mnt/RED_2TB/storage/obsidian/` — read-only mount -- Kraken (RPi): `/vault` — пока не подключён +``` +Eagle (полный vault) ──push/pull──┐ +Taiga (personal/ family/) ────────├── TrueNAS bare repo (git) +Kraken (personal/ family/) ────────┘ +``` -**Следующие шаги:** -- [ ] Определить схему sync (git vs syncthing vs rsync) -- [ ] Настроить write-доступ на Тайге и Кракене -- [ ] Автоматический pull на всех агентах при изменениях +**Скрипты:** +- Eagle: `~/scripts/sync-vault.sh` — full vault, pull→stash→push каждый час +- Taiga/Kraken: `~/scripts/sync-vault.sh` (partial) — sparse checkout `personal/ family/`, та же схема + +**Логика конфликтов:** +1. `git stash` локальных изменений +2. `git pull` (merge) +3. При конфликте — оставить conflict markers, `git stash pop` +4. Коммит с пометкой "conflict markers present" +5. `git push` + +**Eagle cron:** job `b8d6cd6c97f6` (`sync-vault`), каждый час, `0 * * * *` — ✅ активен + +**Taiga/Kraken:** `~/scripts/sync-vault.sh` — деплой pending (нужен SSH ключ крякена на TrueNAS) + +**TODO:** +- [ ] Добавить SSH ключ Кракена в authorized_keys на TrueNAS +- [ ] Деплой sync-vault.sh на Кракен + cron (hourly) +- [ ] Деплой sync-vault.sh на Тайгу + cron (hourly) +- [ ] Инициализировать sparse checkout на Кракене: `VAULT_DIR=/vault REMOTE_URL=ssh://truenas_admin@mallexxx.duckdns.org/mnt/RED_2TB/storage/git/obsidian-vault.git bash sync-vault.sh` + +## Шаг 13 — Vault wiki (llm-wiki / Karpathy approach) + +Eagle-only: scheduled Hermes job раз в сутки запускает wiki-curation: +- Упорядочивает `wiki/` папку по SCHEMA.md +- Строит cross-references между страницами +- Резолвит git-конфликты вручную (semantic merge) +- Lint: orphans, broken links, stale content + +**TODO:** +- [ ] Создать `wiki/SCHEMA.md`, `wiki/index.md`, `wiki/log.md` +- [ ] Добавить cron job на Eagle: ежедневно 02:00, skill `llm-wiki` +- [ ] Настроить `WIKI_PATH=~/obsidian/wiki` в Eagle `.env` --- diff --git a/family/how-to/truenas-infrastructure.md b/family/how-to/truenas-infrastructure.md index ade34474..0fab0075 100644 --- a/family/how-to/truenas-infrastructure.md +++ b/family/how-to/truenas-infrastructure.md @@ -4,8 +4,10 @@ ## Доступ -- **Host (local):** `192.168.2.197` -- **Host (external):** `mallexxx.duckdns.org` (DuckDNS, иногда слетает резолв — fallback на 192.168.2.197) +- **Host (local):** `192.168.2.197` — локальный IP TrueNAS в подсети роутера (192.168.2.x) + - ⚠️ Eagle (Mac, 192.168.1.x) и Kraken (192.168.1.14) находятся в **другой подсети** → прямой доступ по 192.168.2.197 с них **недоступен** + - Для SSH/API с Орла и Кракена — только через `mallexxx.duckdns.org` +- **Host (external):** `mallexxx.duckdns.org` (DuckDNS) — основной способ доступа извне и из 192.168.1.x - **SSH:** `truenas_admin@mallexxx.duckdns.org -i ~/.ssh/id_rsa` - **Web UI:** http://truenas.mallexxx.duckdns.org - **Portainer:** https://portainer.mallexxx.duckdns.org diff --git a/personal/sync-test.md b/personal/sync-test.md deleted file mode 100644 index 76e13d5e..00000000 --- a/personal/sync-test.md +++ /dev/null @@ -1,11 +0,0 @@ -# Sync test 2026-05-13 00:40:31 - -Created on Eagle. Should appear on Taiga and Kraken after sync. - -<<<<<<< Updated upstream -Written from TAIGA at Wed May 13 00:50:40 +06 2026 -Written from TAIGA at Wed May 13 00:51:13 +06 2026 -======= -Written from KRAKEN at Wed May 13 00:50:00 +06 2026 -Written from KRAKEN at Wed May 13 00:51:12 +06 2026 ->>>>>>> Stashed changes