2026-05-13 kraken: mcpvault, vault rw, docker/containerd на HDD
This commit is contained in:
@@ -28,7 +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 агент Кракен | ✅ | Запущен, Telegram @kraken_htpc_bot живой, obsidian-mcp подключён |
|
||||
| 11 — Hermes агент Кракен | ✅ | Запущен, Telegram @kraken_htpc_bot живой, mcpvault подключён, obsidian RW |
|
||||
| 11а — Docker на HDD | ✅ | data-root + containerd перенесены на HDD через symlink, SD освободилась до 22% |
|
||||
| 12 — Obsidian sync (Taiga↔Kraken↔Eagle) | ✅ | Все 3 узла работают, кроны активны, двусторонний sync протестирован |
|
||||
| 13 — Vault wiki (llm-wiki) | 🔲 | Eagle: scheduled wiki-curation job, Karpathy-style |
|
||||
|
||||
@@ -243,40 +244,62 @@ rsync -avh --progress /path/to/movies/ kraken@kraken.local:/srv/.../media/movies
|
||||
|
||||
## Шаг 11 — Hermes агент Кракен
|
||||
|
||||
**Статус: ✅ запущен (2026-05-12)**
|
||||
**Статус: ✅ запущен (2026-05-12), mcpvault ✅ (2026-05-13)**
|
||||
|
||||
### Файлы
|
||||
```
|
||||
/home/kraken/hermes/
|
||||
Dockerfile — образ на базе node:20-slim + hermes-agent + obsidian-mcp
|
||||
docker-compose.yml — restart: unless-stopped, network_mode: host, HERMES_ALLOW_ROOT=1
|
||||
Dockerfile — образ hermes-kraken:latest
|
||||
docker-compose.yml — restart: unless-stopped, network_mode: host
|
||||
.env — API ключи
|
||||
config.yaml → /srv/.../docker/hermes/config/config.yaml
|
||||
```
|
||||
|
||||
### Модели (актуально 2026-05-12)
|
||||
Конфиги и данные на HDD:
|
||||
```
|
||||
/srv/dev-disk-by-uuid-49e8f586.../docker/hermes/config/
|
||||
config.yaml — основной конфиг Hermes
|
||||
.local/bin/mcpvault — symlink → ../lib/node_modules/@bitbonsai/mcpvault/dist/server.js
|
||||
.local/lib/node_modules/@bitbonsai/mcpvault/ — persistent, не слетает при rebuild
|
||||
```
|
||||
|
||||
### Модели (актуально 2026-05-13)
|
||||
| Модель | Статус |
|
||||
|--------|--------|
|
||||
| `openai/gpt-oss-120b:free` | ✅ primary |
|
||||
| `minimax/minimax-m2.5:free` | ✅ fallback |
|
||||
| `gemini-2.5-flash` | ✅ primary |
|
||||
| openrouter fallbacks | ✅ |
|
||||
|
||||
### Telegram бот
|
||||
- Имя: Кракен / Bot: [@kraken_htpc_bot](https://t.me/kraken_htpc_bot)
|
||||
|
||||
### Toolsets
|
||||
`hermes-cli, terminal, file, web, memory, spotify, homeassistant`
|
||||
|
||||
### MCP серверы
|
||||
| Server | Команда | Vault |
|
||||
|--------|---------|-------|
|
||||
| obsidian | `npx obsidian-mcp /home/kraken/obsidian` | `~/obsidian` (sparse: personal/ + family/) |
|
||||
| obsidian | `/opt/data/.local/bin/mcpvault /vault` | `/home/kraken/obsidian` → `/vault:rw` |
|
||||
|
||||
### Деплой
|
||||
> ⚠️ mcpvault установлен через `npm install -g --prefix /opt/data/.local` — живёт на HDD, переживает rebuild образа
|
||||
> ⚠️ Vault монтируется как `/vault:rw` (не `:ro`!) — иначе mcpvault не может писать заметки
|
||||
> ⚠️ config.yaml: указывать **полный путь** `/opt/data/.local/bin/mcpvault` — PATH в контейнере его не включает
|
||||
> ⚠️ args: `/vault` (путь внутри контейнера), не `/home/kraken/obsidian`
|
||||
|
||||
### Деплой / пересборка
|
||||
```bash
|
||||
cd /home/kraken/hermes
|
||||
sudo docker compose build # ~82 сек на RPi5
|
||||
sudo docker compose up -d
|
||||
sudo docker logs hermes-kraken --tail 20
|
||||
# Сборка (осторожно — npm install съедает место на SD!)
|
||||
cd /home/kraken/hermes && docker build -t hermes-kraken:latest .
|
||||
|
||||
# Если ENOSPC при сборке — сначала почистить build cache:
|
||||
docker builder prune -af
|
||||
|
||||
# Запуск (docker compose не работает через SSH из-за long-lived process detection)
|
||||
docker stop hermes-kraken && docker rm hermes-kraken
|
||||
docker run -d --name hermes-kraken --restart unless-stopped --network host \
|
||||
-v /srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/docker/hermes/config:/opt/data \
|
||||
-v /home/kraken/obsidian:/vault:rw \
|
||||
-e HERMES_UID=1000 -e HERMES_GID=1000 -e HERMES_ALLOW_ROOT_GATEWAY=1 \
|
||||
--env-file /home/kraken/hermes/.env hermes-kraken:latest
|
||||
|
||||
# Проверка
|
||||
docker logs hermes-kraken --tail 20
|
||||
docker inspect hermes-kraken --format 'Status={{.State.Status}} Restarts={{.RestartCount}}'
|
||||
```
|
||||
|
||||
### TODO
|
||||
@@ -285,6 +308,43 @@ sudo docker logs hermes-kraken --tail 20
|
||||
|
||||
---
|
||||
|
||||
## Шаг 11а — Docker и containerd на HDD
|
||||
|
||||
**Статус: ✅ (2026-05-13)**
|
||||
|
||||
SD карта 14GB быстро заполняется Docker образами. Всё перенесено на HDD.
|
||||
|
||||
### Docker data-root
|
||||
```bash
|
||||
# /etc/docker/daemon.json
|
||||
{"data-root": "/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/docker-data"}
|
||||
```
|
||||
|
||||
### containerd → symlink на HDD
|
||||
```bash
|
||||
sudo systemctl stop docker docker.socket containerd
|
||||
sudo rsync -a /var/lib/containerd/ /srv/.../containerd/
|
||||
sudo mv /var/lib/containerd /var/lib/containerd.bak
|
||||
sudo ln -s /srv/.../containerd /var/lib/containerd
|
||||
sudo systemctl start containerd docker
|
||||
sudo rm -rf /var/lib/containerd.bak
|
||||
```
|
||||
|
||||
### Build cache (buildkit) — живёт на SD!
|
||||
Buildkit cache НЕ управляется data-root — растёт на SD. Cron очистки:
|
||||
```
|
||||
# /etc/cron.d/docker-buildcache-cleanup
|
||||
0 4 * * * root docker builder prune -af --filter until=24h > /dev/null 2>&1
|
||||
```
|
||||
|
||||
При ручной сборке перед build: `docker builder prune -af`
|
||||
|
||||
### Текущее состояние SD (после всех переносов)
|
||||
- SD: ~22% используется (2.9GB из 14GB), 11GB свободно
|
||||
- HDD: docker-data + containerd + build cache → не мусорят SD
|
||||
|
||||
---
|
||||
|
||||
## Шаг 12 — Obsidian sync (Eagle ↔ Taiga ↔ Kraken)
|
||||
|
||||
**Статус: ✅ работает на всех 3 узлах (протестировано 2026-05-13)**
|
||||
|
||||
Reference in New Issue
Block a user