diff --git a/decisions/2026-04-17-nextcloud-sync-schema.md b/decisions/2026-04-17-nextcloud-sync-schema.md index 35eda20..e7b6cb8 100644 --- a/decisions/2026-04-17-nextcloud-sync-schema.md +++ b/decisions/2026-04-17-nextcloud-sync-schema.md @@ -30,12 +30,31 @@ Vault `~/knowledge-base` хранился только в Gitea (`git.dttb.ru/ol ### Архитектура ``` -~/knowledge-base/ ← один источник истины - ├── .git/ → push в Gitea (git.dttb.ru) [история, review] - └── файлы → rclone bisync на Nextcloud [мгновенный sync] - через sync.sh, триггер Stop-hook + Mac (~/knowledge-base) + │ git push (ручной / obsidian-git плагин) + │ rclone bisync → Nextcloud (Stop-hook + ручной sync.sh) + ▼ + Gitea (git.dttb.ru) ◄───── source of truth для серверных клиентов + │ + ├─► code-server LXC 132 /root/knowledge-base + │ cron */5: kb-autosync.sh (pull + auto-commit + push) + │ + └─► openclaw LXC 137 /root/knowledge-base (READ-ONLY) + cron */15: kb-pull.sh (pull --ff-only only) + + Nextcloud (dttb.ru/Knowledge Base) ◄── сервисная копия для iPhone Obsidian ``` +### Расширение на серверы (2026-04-17) + +| Хост | Путь | Режим | Триггер | Скрипт | +|------|------|-------|---------|--------| +| Mac | `~/knowledge-base` | RW, git + rclone+NC | Stop-hook Claude, ручной | `~/.config/nextcloud-kb/sync.sh` | +| code-server LXC 132 | `/root/knowledge-base` | RW git | cron `*/5 * * * *` | `/usr/local/bin/kb-autosync.sh` | +| openclaw LXC 137 | `/root/knowledge-base` | **RO git** (push disabled) | cron `*/15 * * * *` | `/usr/local/bin/kb-pull.sh` | + +**openclaw read-only** через `git remote set-url --push origin DISABLED_READONLY` — любая попытка push из бота завершится ошибкой "Could not resolve host", случайно перезаписать не сможет. + ### Компоненты - **`/Users/ai/.config/nextcloud-kb/rclone.conf`** — WebDAV ремоут `kbsync:` на `https://dttb.ru/remote.php/dav/files/admin`, app password в obscured виде @@ -77,6 +96,8 @@ GUI Nextcloud.app запускается в Aqua-session (не launchd), раб - `.git/` **не** в Nextcloud — git и nextcloud параллельные каналы, не вложенные ### Файлы экосистемы + +**На Mac:** ``` ~/.config/nextcloud-kb/ ├── app-password chmod 600 @@ -88,6 +109,26 @@ GUI Nextcloud.app запускается в Aqua-session (не launchd), раб └── sync.lock.d/ mkdir-lock (временный) ``` +**На code-server (LXC 132):** +``` +/root/knowledge-base/ полный RW git-клон +/usr/local/bin/kb-autosync.sh cron-скрипт */5 +/var/log/kb-autosync.log логи +/tmp/kb-autosync.lock flock +``` + +**На openclaw (LXC 137):** +``` +/root/knowledge-base/ RO git-клон (push disabled) +/usr/local/bin/kb-pull.sh cron-скрипт */15 +/var/log/kb-pull.log логи +``` + +### Сквозной тест 2026-04-17 (пройден) +- Mac создаёт файл → `git push` → code-server `kb-autosync.sh` fast-forward через 0-5 мин → openclaw `kb-pull.sh` ff-only через 0-15 мин ✓ +- code-server создаёт файл → auto-commit + push → Mac `git pull` подтягивает ✓ +- Mac удаляет файл → push → обе LXC удаляют у себя при следующем sync ✓ + ### Credentials Nextcloud (dttb.ru) - URL: `https://dttb.ru` - User: `admin` / пароль `1qaz!QAZ`