obsidian auto-sync 2026-04-17 23:02:26

This commit is contained in:
dttb
2026-04-17 23:02:27 +03:00
parent 1b698583c1
commit d29ce2c95e
2 changed files with 183 additions and 12 deletions

View File

@@ -30,21 +30,34 @@ Vault `~/knowledge-base` хранился только в Gitea (`git.dttb.ru/ol
### Архитектура
```
Mac (~/knowledge-base)
git push (ручной / obsidian-git плагин)
│ rclone bisync → Nextcloud (Stop-hook + ручной sync.sh)
iPhone Obsidian / Nextcloud клиенты
HTTPS WebDAV
Nextcloud dttb.ru (VM 250)
↕ Apple File Provider API (macOS 26+)
~/Library/CloudStorage/Nextcloud-admin@dttbru/Knowledge Base/
↕ rclone bisync LOCAL↔LOCAL (launchd каждые 60 сек)
~/knowledge-base/ ◄── primary workspace
│ git push/pull + obsidian-git autoPush (5 мин)
Gitea (git.dttb.ru) ◄───── source of truth для серверных клиентов
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
```
### Ключевая находка: local-to-local bisync через launchd
Первая попытка была rclone bisync ↔ WebDAV через launchd — падала с `Host unreachable` (Go из launchd-контекста macOS не может коннектиться на LAN). Обход:
1. Nextcloud.app настроен через webflow OAuth на admin@dttb.ru
2. macOS File Provider (native Apple API, не Qt) зеркалит весь `admin@dttb.ru` в `~/Library/CloudStorage/Nextcloud-admin@dttbru/`
3. rclone bisync теперь работает **между двумя локальными путями** — без network-syscalls, launchd-проблема обойдена
4. File Provider сам делает upload/download в Nextcloud (Apple-подписан, имеет полный network context)
**Задержка:** iPhone → Mac vault ≈ File Provider (10-30с) + rclone launchd (≤60с) ≈ 90 сек max.
### Расширение на серверы (2026-04-17)
| Хост | Путь | Режим | Триггер | Скрипт |
@@ -100,13 +113,16 @@ GUI Nextcloud.app запускается в Aqua-session (не launchd), раб
**На Mac:**
```
~/.config/nextcloud-kb/
├── app-password chmod 600
├── rclone.conf chmod 600
├── app-password chmod 600 (для WebDAV ручного sync.sh)
├── rclone.conf chmod 600
├── rclone-filter.lst
├── sync.sh chmod 700
├── sync.log логи sync-обёртки
├── rclone.log подробные логи rclone
── sync.lock.d/ mkdir-lock (временный)
├── sync.sh chmod 700 (WebDAV bisync — ручной + Stop-hook)
├── sync-local.sh chmod 700 (local bisync — через launchd)
├── sync.log, sync-local.log логи
── rclone.log, rclone-local.log подробные rclone логи
└── sync.lock.d/ sync-local.lock.d/ atomic locks
~/Library/LaunchAgents/ru.dttb.kb-sync-local.plist StartInterval=60s
```
**На code-server (LXC 132):**