---
name: obsidian-sync-overview
description: "Синхронизация Obsidian Vault между MacBook, mac mini и телефоном/CodocehStol — своя CouchDB на mini + плагин LiveSync + livesync-bridge; адрес sync.codoceh.ru; включая chunk-баг на CodocehStol и обход копированием с mini"
metadata: 
  node_type: memory
  type: project
  originSessionId: dbaba430-4a08-4b98-bfc2-021473ebb7da
  modified: 2026-08-21T08:00:54.057Z
---

Vault `~/Documents/Obsidian Vault` синхронизируется **своей CouchDB** (не Obsidian Sync, не облако).
Заведено 2026-08-07. Полная документация — Obsidian `Projects/obsidian-sync/` (5 файлов).

- **База:** CouchDB 3.5.2 на mini, `127.0.0.1:5984`, база `obsidian`, launchd `homebrew.mxcl.couchdb`,
  конфиг `/opt/homebrew/etc/local.ini`, лог `/opt/homebrew/var/log/couchdb.log`.
- **Наружу:** `https://sync.codoceh.ru` — сервис `obsidian-sync` в том же rathole, что и сайты КодоЦеха
  (mini 5984 → VPS 195.133.147.176 `127.0.0.1:14014` → Caddy). DNS не нужен, работает wildcard `*.codoceh.ru`.
  Caddy отдаёт 404 на `/_utils*`, `/_all_dbs`, `/_node/*`, `/_config*`. Без пароля — 401.
- **MacBook:** плагин `obsidian-livesync` 1.0.6, режим LiveSync, E2E-шифрование + обфускация путей.
- **mini:** GUI-Obsidian нет — стоит `livesync-bridge` (Deno, launchd `local.livesync-bridge`,
  `~/Services/livesync-bridge`), держит файловую копию в `/Users/cebers_mini/Documents/Obsidian Vault`.
  **Это значит: Claude на mini и Claude на ноуте видят один и тот же vault.**
- **Бэкап:** launchd `local.obsidian-vault-snapshot` (03:30) → bare-репо `~/Backups/obsidian-vault.git` на mini.
- Тайлы в [[ops_dashboard_tailscale_funnel]]: `obsidian_couchdb`, `livesync_bridge`.

**Грабли, стоившие отката (2026-08-07):** подключаемое к синхронизации устройство должно иметь
**ПУСТУЮ** папку vault. На mini лежала старая копия — мост залил её в базу как «правки», и семь
заметок на ноуте откатились к майским версиям, плюс воскресли удалённые папки. Спас git-коммит,
сделанный до начала работ; поэтому ежедневный git-снимок оставлен отдельным слоем — синхронизация
бэкапом не является, она тиражирует порчу.

**Телефон** (Galaxy S24 Ultra): хранилище `/sdcard/Documents/Obsidian Vault`, плагин залит через
`adb push` в `.obsidian/plugins/obsidian-livesync/` вместе с готовым `data.json` — каталог плагинов
не нужен. Настраивается с мака по USB через adb (screencap + input tap).

**Грабли «Obsidian на маке молча перестаёт синхронизировать»:** через пару минут после запуска
ноутбук переставал слать запросы к CouchDB, при этом плагин показывал «Replication activated» —
по интерфейсу не видно, видно только по пустому логу CouchDB. Это macOS App Nap глушит таймеры
фонового Electron. Лечение — в настройках LiveSync `keepReplicationActiveInBackground = true` и
`allowSleepDuringSynchronisation(OnDesktop) = false`.

Ещё два поведения: мост не стартует, пока плагин не создал `_local/obsydian_livesync_milestone`
(на пустой базе — сначала Obsidian, потом перезапуск моста); при первом подключении к новой базе
плагин показывает диалог «Synchronisation paused for compatibility review» → `Resume synchronisation`.

**CodocehStol (Linux ARM64 desktop в proot-контейнере, отдельно от Galaxy S24 Ultra выше):**
Obsidian 1.13.7 desktop + `obsidian-livesync` 1.0.16, vault `/root/ObsidianVault` внутри rootfs
приложения `ru.codoceh.stol`.

**Грабли (2026-08-21, потрачена вся сессия): `additionalSuffixOfDatabaseName` мигрирует сам собой
в Obsidian-vault-ID** — при новой настройке плагин почему-то подхватил `a1b2c3d4e5f6a7b8` (это ID
хранилища из `.config/Obsidian/obsidian.json`, а не пустая строка как на маке) — из-за этого
`document-id-mismatch` на каждом файле. Фикс: `additionalSuffixOfDatabaseName: ""` в data.json,
сверить с рабочим устройством.

**Более серьёзная и НЕ до конца решённая грабля: сборка контента заметки из чанков (chunks,
readChunksOnline=true, `getDBEntryFromMeta`→`chunkManager.read`) массово фейлится с
`[ReplicateResultProcessor] Failed to gather content of ...` на этой сборке Obsidian, независимо
от: чистоты локальной базы (IndexedDB `.config/Obsidian/IndexedDB`), уникальности
`additionalSuffixOfDatabaseName`, режима OneShot vs continuous LiveSync. Envelope-документы (счётчик
всегда ровно "221" — реальное число несущих `f:`-документов, не кэш) реплицируются нормально, но
сами куски (`h:`-документы, ~10511 шт., проверены и существуют на сервере через прямой curl к
CouchDB на mini) через живой канал не долетают до диска. Сервер и остальные устройства (мак,
livesync-bridge на mini) не затронуты — проверено прямым curl к `127.0.0.1:5984/obsidian` на mini,
все 10708 документов целы.

**Рабочий обход (не решение, но снимает боль):** скопировать уже материализованные файлы с mini
(`/Users/cebers_mini/Documents/Obsidian Vault`, живёт через `livesync-bridge`, ~180 файлов, всегда
актуальны) напрямую в vault телефона — `tar czf` на mini → `scp` на мак → локальный
`python3 -m http.server` в LAN → `curl` из терминала внутри proot-контейнера (adb run-as НЕ может
писать в приватную папку приложения из `/sdcard`, зато читает/пишет свои файлы; проще гонять через
HTTP в LAN). После этого OfflineScanner опознаёт файлы по хешу как совпадающие с базой, диалог
«Synchronisation paused for compatibility review» → `Resume synchronisation` безопасен. LiveSync
дальше нормально ведёт НОВЫЕ изменения; для будущих новых больших заметок тот же chunk-баг может
повториться — тогда повторить трюк с копированием с mini (5 минут).

Связано: [[obsidian_documentation_rule]], [[mac_mini_upterm_access]], [[codoceh_vps_edge]], [[codoceh_stol_dev]].
