# Obsidian Self-hosted LiveSync stack — CouchDB. # # Деплоится ОТДЕЛЬНО от main стека: # docker compose -f docker-compose.obsidian.yml up -d # # Связан с main-stack через external network `gendesign_shared`. Caddy в # main-stack маршрутизирует obsidian.gendsgn.ru → couchdb:5984 через эту сеть. # # Сеть должна быть создана один раз вручную: # docker network create gendesign_shared # (или используй scripts/setup-obsidian-stack.sh). services: couchdb: image: couchdb:3 container_name: gendesign-couchdb restart: unless-stopped # env_file подгружается ДО env: + interpolation. Это критично — без него # compose видит пустой COUCHDB_PASSWORD и couchdb падает в Admin-Party mode. env_file: - path: ./backend/.env.runtime required: false - path: ./backend/.env required: false environment: COUCHDB_USER: ${COUCHDB_USER:-obsidian} COUCHDB_PASSWORD: ${COUCHDB_PASSWORD:?must be set in backend/.env.runtime} volumes: - couchdb_data:/opt/couchdb/data - couchdb_config:/opt/couchdb/etc/local.d expose: - "5984" networks: - shared healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:5984/_up"] interval: 30s timeout: 10s retries: 5 volumes: couchdb_data: couchdb_config: networks: shared: external: true name: gendesign_shared