: Documentation

Getting Started Developing CIA

Want to help with CIA? Below are a few common starting points. We encourage you to join the IRC channel (#cia on Azuru) and/or the mailing list.

Writing Client Scripts

This is the easiest way to get involved with CIA. Do you want to add support for a new revision control system? Do you want to improve one of the existing client scripts?

The best way to get started is probably by using some of the existing existing scripts as examples. There is also an XML schema for the messages accepted by CIA.

Getting the Source

CIA.vc is on GitHub:

Running Your Own Server

CIA is a complex system. It was designed to be a centrally-administered service, so it is fairly difficult to install and maintain. This is a diagram of CIA's major components:

A diagram of CIA's architecture

If you're interested in running or developing on an isolated part of CIA, it may not be necessary to run every service that a production server would run. If you do want to run the entire application, setup can be daunting.

See the setup instructions here

The Development and Small Deployment VM

To make this process a bit easier, you can now download a virtual machine image which contains a full Ubuntu Linux server with nearly all of CIA already installed and configured. This is a VMware virtual machine, so you'll need either the free VMware Player, VMware Server, or another of their products.

After booting, you can use SSH or the local console to log in with the username "cia" and password "changeme". A web server should automatically start on port 80. The VM will try to obtain an IP address via DHCP by default, so you'll need to log in and use "ifconfig" to see what IP it ended up with. You should be able to immediately connect to the CIA web interface, and either create a new user or log in with username "admin" and password "changeme".

For secure deployment:

  1. Change the 'cia' account password
  2. Generate a new OpenSSH private key
  3. Generate a new Django secret (~/.django_secret)
  4. Generate a new CIA capability key (~/.cia_key)
  5. Generate a new HTTPS certificate for Pound
  6. Either deactivate the "admin" Django user or change its password

Other things to change:

  1. Set a publically-visible hostname in settings.py and bootstrap.sh, and in the django_site database table.
  2. Set up admin addresses in settings.py and /etc/aliases

Known problems:

  1. There is no init script for the Twisted daemons. They will be started automatically by an @reboot line in crontab, but you'll need to maintain them using the scripts in ~/cia/conf.
  2. Several URLs on the site will point to http://cia-dsd-vm/... until you change the hostname in bootstrap.sh. (Or whichever script you're using to start up the Twisted Web daemons)
  3. E-mail support is not yet configured. You'll need to set up procmail correctly, then set up /etc/aliases, .forward, and .procmailrc using the templates in ~/cia/conf.