[2026-05-13] obsidian sync docs: obsidian-sync.md created, kraken plan updated, truenas-infra + architecture cross-referenced

This commit is contained in:
Alexey Martemyanov
2026-05-13 00:57:52 +06:00
parent cad406d1c7
commit 68a8291500
4 changed files with 211 additions and 63 deletions
+35 -59
View File
@@ -28,8 +28,8 @@ 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 агент Кракен | 🚧 | Билд готов, entrypoint проблема решается, нужно: HA token (отложено), docker compose up |
| 12 — Obsidian sync (Taiga↔Kraken↔Eagle) | 🚧 | Скрипты готовы, cron Eagle запущен (hourly). Кракен/Тайга — деплой pending |
| 11 — Hermes агент Кракен | | Запущен, Telegram @kraken_htpc_bot живой, obsidian-mcp подключён |
| 12 — Obsidian sync (Taiga↔Kraken↔Eagle) | | Все 3 узла работают, кроны активны, двусторонний sync протестирован |
| 13 — Vault wiki (llm-wiki) | 🔲 | Eagle: scheduled wiki-curation job, Karpathy-style |
---
@@ -243,93 +243,69 @@ rsync -avh --progress /path/to/movies/ kraken@kraken.local:/srv/.../media/movies
## Шаг 11 — Hermes агент Кракен
**Статус: ✅ запущен (2026-05-12)**
### Файлы
```
/home/kraken/hermes/
Dockerfile — образ на базе node:20-slim + hermes-agent + obsidian-mcp
docker-compose.yml — restart: unless-stopped, network_mode: host
.env — API ключи (заполнить вручную)
config.yaml → копируется в /srv/.../docker/hermes/config/config.yaml
docker-compose.yml — restart: unless-stopped, network_mode: host, HERMES_ALLOW_ROOT=1
.env — API ключи
config.yaml → /srv/.../docker/hermes/config/config.yaml
```
### Модели (проверено 2026-05-12)
Бесплатные модели с tool calling на OpenRouter:
### Модели (актуально 2026-05-12)
| Модель | Статус |
|--------|--------|
| `nvidia/nemotron-3-super-120b-a12b:free` | ✅ работает |
| `openrouter/free` | ✅ fallback (авто-роутинг) |
| `deepseek/deepseek-chat-v3-0324:free` | ❌ 404 |
| `qwen/qwen3-235b-a22b:free` | ❌ 404 |
| `google/gemma-4-31b-it:free` | ❌ 429 rate limit |
**Primary**: `nvidia/nemotron-3-super-120b-a12b:free` (262K ctx, tools ✅)
**Auxiliary/Fallback**: `openrouter/free`
**Рекомендуется**: добавить `GOOGLE_API_KEY` → Gemini Flash как auxiliary
| `openai/gpt-oss-120b:free` | ✅ primary |
| `minimax/minimax-m2.5:free` | ✅ fallback |
### Telegram бот
- Имя: Кракен
- Bot: [@kraken_htpc_bot](https://t.me/kraken_htpc_bot)
- Token: `8750114596:AAH625OBSdb_Bn7ZSwshjDD3mbENnkSRYag`
- Имя: Кракен / Bot: [@kraken_htpc_bot](https://t.me/kraken_htpc_bot)
### Toolsets
`hermes-cli, terminal, file, web, web_crawler, memory, spotify, homeassistant`
`hermes-cli, terminal, file, web, memory, spotify, homeassistant`
### Деплой (после заполнения .env)
### MCP серверы
| Server | Команда | Vault |
|--------|---------|-------|
| obsidian | `npx obsidian-mcp /home/kraken/obsidian` | `~/obsidian` (sparse: personal/ + family/) |
### Деплой
```bash
# Заполнить ключи:
nano /home/kraken/hermes/.env
# OPENROUTER_API_KEY=sk-or-...
# GOOGLE_API_KEY=...
# HASS_TOKEN=... (создать в HA UI → Profile → Long-Lived Access Tokens)
# Собрать и запустить:
cd /home/kraken/hermes
sudo docker compose build
sudo docker compose build # ~82 сек на RPi5
sudo docker compose up -d
# Проверить:
sudo docker logs hermes-kraken --tail 20
```
### TODO
- [ ] Заполнить .env (OPENROUTER_API_KEY, GOOGLE_API_KEY)
- [ ] Настроить HA → создать Long-Lived token → вписать в HASS_TOKEN
- [ ] Собрать и запустить контейнер
- [ ] Настроить obsidian-mcp (vault path = /vault)
- [ ] Перенести Spotify auth с Eagle (или запарить заново)
- [ ] Настроить HA → создать Long-Lived token → вписать в HASS_TOKEN в .env
- [ ] Перенести Spotify auth (или запарить заново)
---
## Шаг 12 — Obsidian sync (Eagle ↔ Taiga ↔ Kraken)
**Схема:** Git bare repo на TrueNAS как центральный хаб.
**Статус: ✅ работает на всех 3 узлах (протестировано 2026-05-13)**
Подробная документация: [[obsidian-sync]]
**Схема:**
```
Eagle (полный vault) ──push/pull──┐
Taiga (personal/ family/) ────────├── TrueNAS bare repo (git)
Kraken (personal/ family/) ────────
Eagle (полный vault ~/obsidian) ──push/pull──┐
Taiga (sparse: personal/ family/) ────────────├── TrueNAS bare repo
Kraken (sparse: personal/ family/) ───────────┘ mallexxx.duckdns.org:/mnt/RED_2TB/storage/git/obsidian-vault.git
```
**Скрипты:**
- Eagle: `~/scripts/sync-vault.sh` — full vault, pull→stash→push каждый час
- Taiga/Kraken: `~/scripts/sync-vault.sh` (partial) — sparse checkout `personal/ family/`, та же схема
**Скрипты и кроны:**
| Узел | Скрипт | Крон | Vault |
|------|--------|------|-------|
| Eagle | `~/scripts/sync-vault.sh` | `0 * * * *` | `~/obsidian` (full) |
| Kraken | `~/scripts/sync-vault.sh` | `0 * * * *` | `~/obsidian` (sparse) |
| Taiga | `~/sync-vault.sh` (на хосте!) | Hermes cron `0 * * * *` | `/mnt/RED_2TB/docker/hermes/vault` (sparse) |
**Логика конфликтов:**
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`
> ⚠️ Тайга: скрипт запускается на **хосте TrueNAS** (не внутри контейнера) — только truenas_admin имеет ZFS ACL доступ к bare repo.
## Шаг 13 — Vault wiki (llm-wiki / Karpathy approach)