Port 5984 is the CouchDB HTTP API port. CouchDB exposes its entire database interface as a REST API on port 5984 – creating databases, inserting documents, and running queries all happen over HTTP. Default installations bind to all interfaces with admin party mode (no authentication). Lock down immediately after install.
Port Number
5984
Protocol
TCP
Service
Apache CouchDB HTTP API
Range
IANA Registered (1024–49151)
Check CouchDB version (determines which CVEs apply)
curl -s http://localhost:5984/ | jq .versionList all databases – if this works without auth, you are in Admin Party mode
curl -s http://localhost:5984/_all_dbs | jq .Check if admin users exist (empty object = Admin Party)
curl -s http://localhost:5984/_node/_local/_config/admins | jq .CouchDB health check endpoint (2.x+)
curl -s http://localhost:5984/_up | jq .curl http://localhost:5984/
curl http://localhost:5984/_all_dbs
curl -X PUT http://admin:pass@localhost:5984/mydbCouchDB was created by Damien Katz in 2005, became an Apache project in 2008. Port 5984 was chosen arbitrarily. CouchDB pioneered the document-oriented database model with HTTP REST API and master-master replication. Version 2.0 (2016) added clustering. The 'Admin Party' default was changed to require admin setup in CouchDB 3.0 (2020). IBM forked it as Cloudant for their cloud offering.
How do I secure a CouchDB installation?
1. Create admin user immediately: curl -X PUT http://localhost:5984/_node/_local/_config/admins/admin -d '"strongpassword"'. 2. Bind to localhost: [chttpd] bind_address = 127.0.0.1. 3. Change Erlang cookie from default 'monster'. 4. Enable require_valid_user = true in [chttpd] section. 5. Use HTTPS (port 6984) with valid certificates for any network-accessible deployment.
Is CouchDB safe to expose with authentication enabled?
With authentication enabled and require_valid_user=true, unauthorized users cannot access data. However, the HTTP API surface is large – prefer a reverse proxy that exposes only specific endpoints your application needs. Never expose /_utils (admin UI) or /_node (cluster config) to untrusted networks even with auth enabled.