Ain't No Wiki

Ain't No Wiki (anw)

This wiki-like content management system (anw) is my latest programming project. It is based on the Django framework for Python.

There are project pages on SourceForge (obsolete) and LaunchPad. If you would like to contribute (by coding or reporting bugs), please visit the project homepage on LaunchPad. There you can find further help, too.


  • anw combines the features of wiki and content management systems.
    • Pages are edited in HTML with TinyMCE.
    • File uploads are comfortable.
    • Categories are not wiki pages, but separate database objects.
  • anw offers categories, tags and keyword search for navigation in the system.
  • anw is designed to support HTTPS (Admin Interface and other critical pages).
  • anw is based on the Django framework.
    • Therefore the source code is quite compact and easy to read.
    • Therefore it is easy to expand.

System requirements

  • A webserver, e.g. Apache2
  • A database, e.g. MySQL
  • Python 2.5 or higher
  • Recent version of Python Django
    • The stable branch (rev. 10) is downward compatible to Django 1.1
    • The trunk branch (rev. 107) requires the current stable release of Django (v. 1.3.1)
  • Python Imaging Library

Known Bugs and TODO


If you are using or interested in using this wiki and you think a feature is missing, let me know on the Tracker.


There are some bugs which I cannot fix and some which I cannot afford to fix, yet. These bugs are some for which I can provied workarounds:

  • The external swf-plugin for file uploads has issues with HTTPS, but tricks are known to override this bug.

You can report more bugs on the Tracker.


The 10th stable release is now available on Use the Bazaar version control system to check the sources out of the repo. If you are interested in the more experimental version try the trunk branch.

Installation Guide

Before installing this project you need to get Python and Django running successfully on your server. How to get the mini (development) web-server comming with Django up and running is explained in the official tutorial [1]. This guide will only cover the setup of a production server running on an Apache server with MySQL database.

Python and Django

Installing Python and Django is rather trivial. Simply install Python from your repository. If you distro does not offer Python2, get it from and install it.

The Django version in your distro’s repository might be a bit old; therefore I suggest downloading and installing the latest version from the project’s homepage [2].

Apache & MySQL

When installing MySQL (or any other database supported by Django) you should be fine. Just create a user and a database to which the user has access.

When you are using the Apache coming with your repo you should be very fine when you follow the instructions [3] given by the Django Team. As an example here is the configuration of the Apache server of my virtual machine I used for testing and development in the days before releasing a version.

  1. Enable mod_wsgi
  2. Create the file django.wsgi in a subfolder (e.g. "apache") in the project’s root with the following content.
  3. Tell your Apache to serve the Wiki, e.g. in /etc/apache2/sites-enabled/default.
  4. Edit to match your project’s requirements. Take a close look on all variables containing path informations! Also take a look at ADMINS, DATABASES (user, password, DB name, etc.), INSTALLED_APPS (comment out apps you don’t need, but be careful not to comment out important apps).
    If your server does not support HTTPS, make sure to set HTTPS_SUPPORT = False!
  5. In the project’s root run python syncdb to setup the required tables and initial data in the DB.
  6. Restart Apache

Notice the importance of restarting Apache after making changes to its config or the Python files of the project!

Enabling HTTPS

In order to protect your server and the data of your users it is a good idea to set up a secure host, too. If you are afraid of spending an ass-load of money on an SSL certificate, you can simply make your own one and set up a HTTPS host.

  1. Install openssl and run it.
  2. The resulting certificate server.pem should be put in a location where you and Apache can find it, e.g. in the subfolder "apache" in the project’s root.
  3. Tell Apache to serve the project also via HTTPS, e.g. in /etc/apache2/sites-enabled/ssl.
  4. Uncomment the Rewrite... statements in the Apache HTTP config.
  5. Restart Apache.

Notice the Condition in front of the redirection of the /admin URL. This is due to the effect, that a Flash-based upload button does not support HTTPS. Therefore Apache needs to serve this button using HTTP.


coming soon


View History 07.01.2011 13:51
21.12.2013 22:59