minad / olelo

Wiki with git backend
MIT License
241 stars 44 forks source link

= Ōlelo Wiki

[[http://rubygems.org/gems/olelo|{{https://badge.fury.io/rb/olelo.png|Gem}}]] [[https://travis-ci.org/minad/olelo|{{https://secure.travis-ci.org/minad/olelo.png?branch=master|Build Status}}]] [[https://gemnasium.com/minad/olelo|{{https://gemnasium.com/minad/olelo.png?travis|Dependency Status}}]] [[https://codeclimate.com/github/minad/olelo|{{https://codeclimate.com/github/minad/moneta.png|Code Climate}}]]

Ōlelo is a wiki that stores pages in a [[http://git-scm.org/|Git]] repository, supports many markup styles and has an extensible, hackable architecture! If you want to see a demo installation go to http://www.gitwiki.org/.

== Features

Ōlelo implements a plugin system. A lot of the features are implemented as plugins and can be activated or deactivated as you wish.

Core features:

Features, implemented by plugins:

== Quick start

The best way to install Ōlelo is via 'gem'.

{{{ $ gem install olelo }}}

Go to a git repository via command line and start the Ōlelo webserver.

{{{ $ olelo }}}

Point your web browser at http://localhost:8080/. This is all you have to do, now you are good to go to use your wiki!

== Installation from source

Installation from source is especially useful if you want to do development or use the newest features.

Clone the git repository:

{{{ git clone git://github.com/minad/olelo.git }}}

Now change to the Ōlelo source directory and use Bundler to install the dependencies.

{{{ $ cd olelo $ bundle install }}}

Start the Ōlelo webserver from the Ōlelo source directory.

{{{ $ bin/olelo }}}

== Deployment

For production purposes, I recommend that you deploy the wiki with [[http://unicorn.bogomips.org|Unicorn]]. You should use the rackup configuration from the Ōlelo source or gem directory.

{{{ $ unicorn path-to/config.ru }}}

Unicorn is a very flexible ruby application server and Ōlelo runs very well on it. You can adapt the number of Unicorn workers depending on the load you expect. It is a good idea to observe the Unicorn workers as described in https://github.com/blog/519-unicorn-god and kill missbehaving workers if necessary. You can call this snippet in a cronjob which terminates all workers gracefully that need more than 100M.

{{{

!/bin/bash

ps -e -www -o pid,rss,command | grep '[u]nicorn worker' | while read -r -a a; do pid=${a[0]} mem=${a[1]} [[ "$mem" -gt 100000 ]] && kill -s QUIT $pid done }}}

== Configuration

For deployment you might want to tweak some settings. Ōlelo reads the files 'config/config.yml.default' and 'config/config.yml' in that order. So just copy the default configuration 'config/config.yml.default' to 'config/config.yml' and make your modifications. If you installed Ōlelo as gem this is not a good idea since you don't want to fiddle in the gem directory. For this purpose the environment variable '$OLELO_CONFIG' exists which can point to the configuration file that you want to use.

{{{ export OLELO_CONFIG=/home/olelo/olelo_config.yml }}}

You can also use the '$OLELO_CONFIG' environment variable if you want to run multiple Ōlelo instances with different configurations, for example to serve different pages from different repositories.

== Setting up a private wiki using Apache

Assuming the wiki server is running on localhost:5000 (e.g. unicorn), we can redirect Apache requests by adding the following lines to your virtual host. This works also with https.

{{{

Private wiki

ProxyPass /wiki http://localhost:5000 ProxyPassReverse /wiki http://localhost:5000 ProxyPreserveHost On ProxyRequests Off RequestHeader set X-Forwarded-Proto https <Proxy *> Order deny,allow Allow from all }}}

In your Ōlelo 'config.yml' you should set the following options:

{{{ base_path: '/wiki'

Enable the private wiki plugin

disabled_plugins:

authentication: enable_signup: false }}}

== Dependencies

If you installed Ōlelo as gem or used Bundler you don't really have to care about the dependencies. The standard installation provides the core dependencies and a good selection of optional dependencies.

Core dependencies:

Some dependencies are optional, for example depending on the markup you want to use.

== Development

=== Important concepts

=== Tipps

== Authors

Git-Wiki was originally developed by Simon Rozet. The development of Ōlelo to its current state was done by Daniel Mendler and contributors. The current code base doesn't have much in common with the original Git-Wiki proof-of-concept.

Contributors:

== License

Ōlelo is released under the MIT license.