An example of allowing users to create a new user and create a private database for them
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

CouchDB SelfService

This is a simple CouchDB external process written in Python that processes the URL http://localhost:5984/_register?username=xxx&passwd=YYY or an POST to the same URL from a HTML form contain fields with the names username and password It applies some simple validation to the username and password. It then creates a new CouchDB user in the standard _users database and creates the user a new database by replicating from a template database. Security is set on the new database so that it can be admin'ed by the admin and read only by the new user


  1. Ensure Python 2.x is installed and couchdb-python 0.8
  2. Edit the file and change the admin username and password to those of your couch database
  3. Create a database called template_db that will be used as a template database for each user. If you call this database something else then edit the appropriate line in
  4. Create a directory and copy the three python files into it.
  5. Copy the selfservice.ini file into the directory //etc/couchdb/local.d/
  6. Edit the selfservice.ini file so that it correctly refers to your python executable and to the location of
  7. Restart CouchDB

You should now be able to create an account by running the command: curl -v "http://localhost:5984/template_db/_register?username=firstuser&passwd=password"

Don't forget that if you change anything in the python code you'll need to restart the CouchDB server for the change to take effect.

To Do

There should be a simple example template database that contains a login form and Register button