This wiki uses gollum and omnigollum.

Build

docker build -t hotmaps/wiki . 

Run

Run wiki from Dockerfile

Replace -e ENV_VARIABLES

docker run -d --rm 
-p 80:4567 
--name wiki 
-e GITHUB_CLIENT_ID=0123456789 
-e GITHUB_CLIENT_SECRET=0123456789 
-e AUTH_USERS=email1,email2,email3
hotmaps/wiki

Run wiki from docker-compose

Create .env file based on .env.example and update environment variables.

# ./docker-compose.yml

version: '3.2'
services:
  wiki:
    env_file: .env
    build: .
    ports:
      - "80:80"
Run docker-compose (in terminal)
docker-compose up -d 

Configuration

Here are the environment variables that you need to configure to make the container work:

  • GITHUB_CLIENT_ID: OAuth provider app client ID for GitHub
  • GITHUB_CLIENT_SECRET: OAuth provider app client secret for GitHub
  • AUTH_USERS: list of user emails separated by a coma (eg. email1,email2,email3)

OAuth configuration

For GitHub, you need to create client ID and client secret on GitHub website on the settings page of your account or ogranization, in developer settings, OAuth Apps.

To add another provider you should also edit config.rb:

# ./config.rb

# [...]

options = {
  # OmniAuth::Builder block is passed as a proc
  :providers => Proc.new do

    # GitHub
    provider :github, ENV['GITHUB_CLIENT_ID'], ENV['GITHUB_CLIENT_SECRET'],
    
    # LDAP
    provider :ldap,
      :host => '127.0.0.1',
      :port => 389,
      :method => :plain,
      :base => 'dc=example,dc=com',
      :uid => 'uid',
      :bind_dn => 'cn=manager,dc=example,dc=com',
      :password => 'password'
    
    # Twitter
    provider :twitter, 'CONSUMER_KEY', 'CONSUMER_SECRET'
    
    # OpenID
    provider :open_id, OpenID::Store::Filesystem.new('/tmp')  
    
    # others ...

  # [...]
}

Omnigollum allows many OAuth providers. You can find more information about this here.