# CLAUDE.md — obsidian-livesync ## Что CouchDB для self-hosted Obsidian LiveSync на str-u-01 (45.10.53.148). Доступ через `obs.striker.su`. ## Стек - `couchdb:3` (Apache CouchDB) на `127.0.0.1:5984` - bind-mount `./data` (БД), `./couchdb-config/local.ini` (CORS для Obsidian) - `restart: unless-stopped`, healthcheck на `/_up` - log-driver: journald ## Структура ``` obsidian-livesync/ ├── docker-compose.yml ├── couchdb-config/local.ini # CORS, max_http_request_size 4G ├── .env.example # шаблон, реальный .env только на сервере ├── .gitignore # исключает .env, data/ ├── README.md └── CLAUDE.md ``` ## Деплой ```bash ssh striker@str-u-01.striker.su cd /opt/docker/sites/obsidian-livesync git pull docker compose pull && docker compose up -d ``` ## nginx vhost: `/etc/nginx/conf.d/obs.striker.su` (ssl + reverse-proxy на 127.0.0.1:5984). **Важно для CouchDB:** - `proxy_set_header Host $host` (CouchDB чувствителен) - `client_max_body_size 4G` (большие vault-ы) - `proxy_buffering off` (long-poll changes feed) - WebSocket headers (changes feed continuous) ## Секреты `.env` на сервере (не в git): `COUCHDB_USER` и `COUCHDB_PASSWORD`. Также скопированы в Vaultwarden (запись "obsidian-livesync str-u-01" / поиск). ## Системные БД После первого запуска CouchDB требует создать `_users`, `_replicator`, `_global_changes` через PUT (см. README). ## Plugin Self-hosted LiveSync - URI: `https://obs.striker.su` - Auth: те же что в `.env` - Database: любое имя (рекомендуется по vault-у, например `obsidian-main`) - Use Custom Request Handler: **off** (не нужно — мы не на Cloudflare)