
[](https://github.com/Requarks/wiki/releases)
[](https://github.com/requarks/wiki/blob/master/LICENSE)
[](https://opencollective.com/wikijs)
[](https://github.com/Requarks/wiki/releases)
[](https://hub.docker.com/r/requarks/wiki/)  
[](https://dev.azure.com/requarks/wiki/_build/latest?definitionId=9)
[](https://sonarcloud.io/dashboard?id=wiki)
[](https://sonarcloud.io/dashboard?id=wiki)
[](https://sonarcloud.io/dashboard?id=wiki)
[](http://standardjs.com/)  
[](https://wiki.requarks.io/slack)
[](https://twitter.com/requarks)
[](https://wiki.js.org/newsletter)
##### A modern, lightweight and powerful wiki app built on NodeJS
 
- **[Official Website](https://wiki.js.org/)**
- **[Documentation](https://docs.requarks.io/)**
Donate
Wiki.js is an open source project that has been made possible due to the generous contributions by community [backers](https://wiki.js.org/about). If you are interested in supporting this project, please consider [becoming a sponsor](https://github.com/users/NGPixel/sponsorship), [becoming a patron](https://www.patreon.com/requarks), donating to our [OpenCollective](https://opencollective.com/wikijs), via [Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FLV5X255Z9CJU&source=url) or via Ethereum (`0xe1d55c19ae86f6bcbfb17e7f06ace96bdbb22cb5`).
  
  [](https://github.com/users/NGPixel/sponsorship)
  [](https://www.patreon.com/requarks)
  [](https://opencollective.com/wikijs)
  [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FLV5X255Z9CJU&source=url)  
  [](https://etherscan.io/address/0xe1d55c19ae86f6bcbfb17e7f06ace96bdbb22cb5)
  [](https://checkout.opennode.com/p/2553c612-f863-4407-82b3-1a7685268747)
  [](https://wikijs.threadless.com)
## Introduction
This chart bootstraps a Wiki.js deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
It also optionally packages the [PostgreSQL](https://github.com/kubernetes/charts/tree/master/stable/postgresql) as the database but you are free to bring your own.
## Prerequisites
- PV provisioner support in the underlying infrastructure (with persistence storage enabled) if you want data persistance
## Installing the Chart
To install the chart with the release name `my-release` run the following from this (`helm`) directory:
### Using Helm 3:
```console
$ helm install my-release .
```
### Using Helm 2:
```console
$ helm install --name my-release . 
```
The command deploys Wiki.js on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
$ helm delete my-release
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
> **Warning**: Persistant Volume Claims for the database are not deleted automatically. They need to be manually deleted
```console
$ kubectl delete pvc/data-wiki-postgresql-0
```
## Configuration
The following table lists the configurable parameters of the Wiki.js chart and their default values.
| Parameter                            | Description                                 | Default                                                    |
| -------------------------------      | -------------------------------             | ---------------------------------------------------------- |
| `image.repository`                   | Wiki.js image                                | `requarks/wiki`                                           |
| `image.tag`                          | Wiki.js image tag                            | `latest`                                                      |
| `imagePullPolicy`                    | Image pull policy                           | `IfNotPresent`                                             |
| `replicacount`                   | Amount of wiki.js service pods to run                   | `1`                                                        |
| `resources.limits`               | wiki.js service resource limits                         | `nil`                               |
| `resources.requests`             | wiki.js service resource requests                       | `nil`                               |
| `nodeSelector`                   | Node labels for wiki.js pod assignment          | `{}`                                                       |
| `affinity`                       | Affinity settings for wiki.js pod assignment    | `{}`                                                       |
| `schedulerName`                  | Name of an alternate scheduler for wiki.js pod  | `nil`                                                      |
| `tolerations`                    | Toleration labels for wiki.jsk pod assignment    | `[]`                                                       |
| `ingress.enabled`                    | Enable ingress controller resource          | `false`                                                    |
| `ingress.annotations`                | Ingress annotations                         | `{}`                                                       |
| `ingress.hosts`                      | List of ingress rules                        | `[{"host": "wiki.local", "paths": ["/"]}]`                |
| `ingress.tls`                        | Ingress TLS configuration                   | `[]`                                                       |
| `postgresql.enabled`                 | Deploy postgres server (see below)          | `true`                                                     |
| `postgresql.postgresqlDatabase`        | Postgres database name                      | `wiki`                                                   |
| `postgresql.postgresqlUser`            | Postgres username                           | `postgres`                                                   |
| `postgresql.postgresqlHost`            | External postgres host                      | `nil`                                                      |
| `postgresql.postgresqlPassword`        | External postgres password                  | `nil`                                                      |
| `postgresql.postgresqlPort`            | External postgres port                      | `5432`                                                     |
| `postgresql.persistence.enabled`                | Enable postgres persistence using PVC                | `true`                                                     |
| `postgresql.persistence.existingClaim`          | Provide an existing `PersistentVolumeClaim` for postgres | `nil`                                                      |
| `postgresql.persistence.storageClass`           | Postgres PVC Storage Class (example: `nfs`)                           | `nil`                 |
| `postgresql.persistence.size`                   | Postgers PVC Storage Request                         | `8Gi`                                                     |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
$ helm install --name my-release \
  --set postgresql.persistence.enabled=false \
   . 
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
```console
$ helm install --name my-release -f values.yaml . 
```
> **Tip**: You can use the default [values.yaml](values.yaml)
## PostgresSQL
By default, PostgreSQL is installed as part of the chart.
### Using an external PostgreSQL server
To use an external PostgreSQL server, set `postgresql.enabled` to `false` and then set `postgresql.postgresqlHost` and `postgresql.postgresqlPassword`. The other options (`postgresql.postgresqlDatabase`, `postgresql.postgresqlUser` and `postgresql.postgresqlPort`) may also want changing from their default values.
You also need to add the follow Helm template to your deployment:
```yaml
kind: Secret
apiVersion: v1
metadata:
  name: {{ template "wiki.postgresql.secret" . }}
data:
  {{ template "wiki.postgresql.secretKey" . }}: "{{ .Values.postgresql.postgresqlPassword | b64enc }}"
```
## Persistence
Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube.
See the [Configuration](#configuration) section to configure the PVC or to disable persistence.
## Ingress
This chart provides support for Ingress resource. If you have an available Ingress Controller such as Nginx or Traefik you maybe want to set `ingress.enabled` to true and choose an `ingress.hostname` for the URL. Then, you should be able to access the installation using that address.