# GoWiki - a simple wiki engine written in Go

## Building

**Requirements:**

* Go (golang) >= 1.12

Linux:

```
make

or offline

make vendor
```

OpenBSD:

```
GOOS=openbsd make

or offline

GOOS=openbsd make vendor
```

## Install

See the `scripts/` directory on how to install gowiki on Linux or OpenBSD.

## Config

```
{
        "data_dir": "/var/lib/gowiki",     // running directory. data will be stored here
        "user": "wiki",                    // drop privileges to user
        "group": "wiki",                   // drop privileges to group
        "listen_addr": "127.0.0.1:8080",   // listening <address>:<port>
        "log_file": "gowiki.log",          // log file (use - for stdout, this only works in combination with 'foreground: true')
        "secret": "",                      // static hmac secret (at least 64 chars, used for JWT signing)
	"admin": true,                     // set to false to disable the default admin user
        "foreground": false,               // do not fork into the background
        "secure_cookie": false,            // enable secure cookie flag
        "debug": false                     // enable debugging
}
```

## Features

* Fulltext indexing of wiki pages
* Password hashing using BCrypt
* 2FA using TOTP
* Content Security Policy
* No Javascript (yet)
* Private wiki pages

### GoWiki on OpenBSD

GoWiki makes use of the OpenBSD native security features [pledge(2)](https://man.openbsd.org/pledge) and [unveil(2)](https://man.openbsd.org/unveil).
