Setting up CouchDB

One of the main benefits of learning PouchDB is that it's exactly the same as CouchDB. In fact, PouchDB is a shameless plagiarist: all of the API methods are the same, with only slight modifications to make it more JavaScript-y.

For instance, in CouchDB you would fetch all documents using:


In PouchDB this becomes:

db.allDocs({include_docs: true})

The APIs are the same, and the semantics are the same.

In the following examples, we will set up CouchDB and talk to it using a tool you're already familiar with: your browser.

If you are on a Debian flavor of Linux (Ubuntu, Mint, etc.), you can install CouchDB as follows.

First, enable the CouchDB package repository on your machine:

$ sudo apt update && sudo apt install -y curl apt-transport-https gnupg
$ curl | gpg --dearmor | sudo tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1
source /etc/os-release
$ echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] ${VERSION_CODENAME} main" \
    | sudo tee /etc/apt/sources.list.d/couchdb.list >/dev/null

Next, update your package lists and install CouchDB:

$ sudo apt-get update
$ sudo apt-get install -y couchdb

If you are on a Mac or Windows you should install the official binaries from the CouchDB web site.

A CouchDB alternative: PouchDB Server

If you have trouble installing CouchDB, you can also install PouchDB Server, which is a drop-in replacement for CouchDB that uses PouchDB under the hood:

$ npm install -g pouchdb-server
$ pouchdb-server --port 5984

PouchDB Server is currently experimental, and we do not recommend it for production environments.

Once CouchDB is installed, it should be running at localhost:5984. To verify, you can open up your terminal and type

$ curl localhost:5984

You should see something like:


Next, open up http://localhost:5984/_utils/ in your browser.

If you see a screen like the following, then you are ready to rock and roll with CouchDB:

Fauxton interface

CORS is a web technology that allows web sites to use resources from another domain. You will want to enable this in your CouchDB before continuing, because otherwise PouchDB will not work unless it's served from exactly the same domain as CouchDB.

Enabling CORS is easy. Just install this handy script:

$ npm install -g add-cors-to-couchdb

And run it:

$ add-cors-to-couchdb

If you installed PouchDB Server, CORS is enabled by default, and this step is not necessary.

Now that you have CouchDB installed, let's install PouchDB.