Files
coolcouch/README.md
Julien Calixte 38089ef269 init
2026-06-01 20:37:14 +02:00

1.6 KiB

coolcouch

CouchDB 3 on Coolify, with CORS enabled and system databases bootstrapped at first start.

Deploy

  1. In Coolify: New Resource → Docker Compose and point it at this repository.
  2. In the resource's Environment Variables tab, set:
    • COUCHDB_PASSWORD — required
    • COUCHDB_USER — optional, defaults to admin
  3. In the resource's Domains tab, assign a domain to the couchdb service on port 5984. Coolify fills SERVICE_FQDN_COUCHDB_5984 from this.
  4. Deploy. The couchdb-init one-shot service will wait for CouchDB to be healthy, then PUT _users, _replicator, _global_changes and exit.

Verify

Replace $DOMAIN and $PASS:

curl -fsS https://$DOMAIN/_up
curl -fsS -u admin:$PASS https://$DOMAIN/
curl -fsS -u admin:$PASS https://$DOMAIN/_all_dbs
curl -fsS -I -X OPTIONS https://$DOMAIN/ \
  -H "Origin: https://example.com" \
  -H "Access-Control-Request-Method: GET"

Expected: _up returns {"status":"ok",...}; / returns the CouchDB welcome JSON; _all_dbs returns ["_global_changes","_replicator","_users"]; the preflight returns a 2xx with an Access-Control-Allow-Origin header.

CORS

Wildcard origin (*), credentials = false — the only browser-spec-legal combination with a wildcard. If a client needs cookie/credentialed auth, switch origins in couchdb/local.d/cors.ini to an explicit list and set credentials = true.

Files

  • docker-compose.yml — services, volume, Traefik labels, healthcheck, init sidecar
  • couchdb/local.d/cors.ini — mounted into /opt/couchdb/etc/local.d/ so CouchDB picks it up at startup