- couchdb:3, bridge, 127.0.0.1:5984, journald - couchdb-config/local.ini с CORS для Obsidian (app://obsidian.md) - max_http_request_size 4 ГБ для больших vault-ов - .env и data/ исключены из git
50 lines
1.9 KiB
Markdown
50 lines
1.9 KiB
Markdown
# 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)
|