An example of allowing users to create a new user and create a private database for them
Switch branches/tags
Nothing to show
Clone or download
Martin Higham
Martin Higham First Commit
Latest commit 802503f May 27, 2011
Failed to load latest commit information.
src First Commit May 27, 2011
.gitignore First Commit May 27, 2011 First Commit May 27, 2011
selfservice.ini First Commit May 27, 2011

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