git + markdown = ikiwiki
What is ikiwiki all about?
ikiwiki is an open source wiki that versions its pages in git, understands markdown, and has no database. Every edit causes a quick recompile of all pages. This might sound wasteful but it happens in the background and makes all other page loads happen very quickly. Moreover, ditching a database means less things to maintain, less things to secure and less things to go wrong. ikiwiki can run on a tiny server, costs nothing, has the right set of features, and is super fast.
Why does git matter for a wiki??
Because you can edit right from the command line! Just like a wiki on Github, you can clone your wiki to your workstation or utility server and make edits without ever leaving the command line. For a developer, this is great. You don’t have to open up a browser and look up crazy syntax for whatever wiki you are using - just fire up vim and write in beautiful and simple markdown.
What is Bootstrap 3?
Bootstrap 3 is a CSS framework from twitter that looks great, works on all screen sizes and makes it easy to put together a great looking site. The cookbook I created for this (read on!) automatically installs a Bootstrap 3 theme so that it looks like the screenshot above.
How do you search a static wiki??
There is no JVM and there are no running cron jobs. There isn’t even a back end database… So how does search work? Great, actually! The sqlite_search plugin for ikiwiki writes flat file indexes on each change. Searches are run through the search bar in the header of each page.
How does auth work?
If you are using the Chef cookbook I linked above, you can enable htpasswd auth by changing the
['ikiwiki']['passworded'] = false to true. This sets the wiki up to do http auth against local user accounts. After that, you can disable the user plugin and enable the httpauth plugin to automatically auth people into the wiki with only one password prompt. Additionally, you can enable oauth against a variety of providers with the oauth plugin.
What else can it do?
ikiwiki has a lot of plugins available for installation. By default, many basic plugins are available, but I have added even more in my Cookbook. The core features you need all work great:
- Web UI
Install it with my Chef cookbook!
I liked ikiwiki so much that I made a cookbook to install it and published it on the chef supermarket. Just setup a minimal CentOS node, join it to Chef and install this cookbook to start using it. Or, you can always just use ikiwiki without the cookbook and roll your own theme/search. Those installation instructions are here.