File: README.md
- Official Website
- Documentation
- Requirements
- Installation
- Demo
- Changelog
- Feature Requests
- Chat with us on Discord
- Translations (We need your help!)
- Special Thanks
- Contribute
Follow our Twitter feed to learn about upcoming updates and new releases!
Donate
Gold Tier Sponsors
GitHub Sponsors
Support this project by becoming a sponsor. Your name will show up in the Contribute page of all Wiki.js installations as well as here with a link to your website! [Become a sponsor]
OpenCollective Sponsors
Support this project by becoming a sponsor. Your logo will show up in the Contribute page of all Wiki.js installations as well as here with a link to your website! [Become a sponsor]
Patreon Backers
Thank you to all our patrons! ๐ [Become a patron]
OpenCollective Backers
Thank you to all our backers! ๐ [Become a backer]
Contributors
This project exists thanks to all the people who contribute. [Contribute].
Special Thanks
Browserstack for providing access to their great cross-browser testing tools.
Cloudflare for providing their great CDN, SSL and advanced networking services.
DigitalOcean for providing hosting of the Wiki.js documentation site and APIs.
Icons8 for providing access to their beautiful icon sets.
Lokalise for providing access to their great localization tool.
MacStadium for providing access to their Mac hardware in the cloud.
Netlify for providing hosting for our website.
ngrok for providing access to their great HTTP tunneling services.
Porkbun for providing domain registration services.
File: dev/helm/README.md
Donate
Introduction
This chart bootstraps a Wiki.js deployment on a Kubernetes cluster using the Helm package manager.
It also optionally deploys PostgreSQL as the database using the official PostgreSQL image from Docker Hub, but you are free to bring your own database.
Prerequisites
- PV provisioner support in the underlying infrastructure (with persistence storage enabled) if you want data persistance
Adding the Wiki.js Helm Repository
$ helm repo add requarks https://charts.js.wikiInstalling the Chart
To install the chart with the release name my-release run the following:
Using Helm 3/4:
$ helm install my-release requarks/wikiUsing Helm 2:
$ helm install --name my-release requarks/wikiThe command deploys Wiki.js on the Kubernetes cluster in the default configuration. The 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:
$ helm delete my-releaseThe 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
$ kubectl delete pvc/data-wiki-postgresql-0Configuration
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 | 2 |
imagePullPolicy |
Image pull policy | IfNotPresent |
replicacount |
Number of Wiki.js pods to run | 1 |
revisionHistoryLimit |
Total number of revision history points | 10 |
resources.limits |
Wiki.js service resource limits | nil |
resources.requests |
Wiki.js service resource requests | nil |
nodeSelector |
Node labels for the Wiki.js pod assignment | {} |
affinity |
Affinity settings for the Wiki.js pod assignment | {} |
schedulerName |
Name of an alternate scheduler for the Wiki.js pod | nil |
tolerations |
Toleration labels for the Wiki.js pod assignment | [] |
volumeMounts |
Volume mounts for the Wiki.js container | [] |
volumes |
Volumes for the Wiki.js pod | [] |
ingress.enabled |
Enable ingress controller resource | false |
ingress.className |
Ingress class name | "" |
ingress.annotations |
Ingress annotations | {} |
ingress.hosts |
List of ingress rules | [{"host": "wiki.local", "paths": ["/"]}] |
ingress.tls |
Ingress TLS configuration | [] |
sideload.enabled |
Enable sideloading of locale files from git | false |
sideload.repoURL |
Git repository URL containing locale files | https://github.com/Requarks/wiki-localization |
sideload.env |
Environment variables for the sideload container | {} |
sideload.securityContext |
Security context for the sideload container | nil |
sideload.resources.limits |
Resource limits for the sideload container | nil |
sideload.resources.requests |
Resource requests for the sideload container | nil |
nodeExtraCaCerts |
Trusted certificates path | nil |
externalPostgresql.databaseURL |
External postgres connection string | nil |
postgresql.enabled |
Deploy postgres server (see below) | true |
postgresql.postgresqlDatabase |
Postgres database name | wiki |
postgresql.postgresqlUser |
Postgres username | postgres |
postgresql.postgresqlHost |
Postgres host | nil |
postgresql.postgresqlPassword |
Postgres password | nil |
postgresql.existingSecret |
Provide an existing Secret for postgres |
nil |
postgresql.existingSecretKey |
The postgres password key in the existing Secret |
postgresql-password |
postgresql.existingSecretUserKey |
The postgres username key in the existing Secret |
postgresql-username |
postgresql.postgresqlPort |
Postgres port | 5432 |
postgresql.ssl |
Enable external postgres SSL connection | false |
postgresql.ca |
Certificate of Authority content for postgres | nil |
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 |
Postgres PVC Storage Request | 8Gi |
postgresql.persistence.accessMode |
Postgres Persistent Volume Access Mode | ReadWriteOnce |
postgresql.image.repository |
PostgreSQL image repository | postgres |
postgresql.image.tag |
PostgreSQL image tag | 18 |
postgresql.image.pullPolicy |
PostgreSQL image pull policy | IfNotPresent |
postgresql.resources |
PostgreSQL resource requests/limits | {} |
postgresql.nodeSelector |
PostgreSQL node selector labels | {} |
postgresql.tolerations |
PostgreSQL toleration labels | [] |
postgresql.affinity |
PostgreSQL affinity settings | {} |
postgresql.service.type |
PostgreSQL service type | ClusterIP |
postgresql.service.port |
PostgreSQL service port | 5432 |
postgresql.service.annotations |
PostgreSQL service annotations | {} |
Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,
$ helm install --name my-release \
--set postgresql.persistence.enabled=false \
requarks/wikiAlternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
$ helm install --name my-release -f values.yaml requarks/wikiTip: You can use the default values.yaml
PostgreSQL
By default, PostgreSQL is installed as part of the chart using the official PostgreSQL image from Docker Hub (version 18).
Using an external PostgreSQL server
To use an external PostgreSQL server, set postgresql.enabled to false, then use either:
Connection String
Set externalPostgresql.databaseURL to the full PostgreSQL connection string.
Connection Parameters
Set externalPostgresql.host, externalPostgres.port, externalPostgres.database, externalPostgres.username, externalPostgres.existingSecret (secret name) and externalPostgres.existingSecretKey (key in the secret containing the password)
Ensure the secret specified in externalPostgresql.existingSecret already exists, with a password set at the path specified in externalPostgres.existingSecretKey.
To use an SSL connection you can set externalPostgresql.ssl to true and if needed the path to a Certificate of Authority can be set using externalPostgresql.ca to /path/to/ca. Default externalPostgresql.ssl value is false.
Using an existing PostgreSQL secret with built-in PostgreSQL
When using the built-in PostgreSQL (default behavior with postgresql.enabled: true), you can still use an existing Kubernetes secret for the database credentials by setting:
postgresql.existingSecret: Name of the existing secret containing the credentialspostgresql.existingSecretKey: Key in the secret containing the password (defaults topostgresql-password)postgresql.existingSecretUserKey: Key in the secret containing the username (defaults topostgresql-username)
Example usage:
# Create your existing secret
kubectl create secret generic my-postgres-secret \
--from-literal=postgresql-username=postgres \
--from-literal=postgresql-password=yourpassword
# Deploy with existing secret
helm install my-release requarks/wiki \
--set postgresql.enabled=true \
--set postgresql.existingSecret=my-postgres-secretPersistence
Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube.
See the 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 add ingress.hosts for the URL. Then, you should be able to access the installation using that address.
Extra Trusted Certificates
To append extra CA Certificates:
- Create a ConfigMap with CAs in PEM format, e.g.:
apiVersion: v1
kind: ConfigMap
metadata:
name: ca
namespace: your-wikijs-namespace
data:
certs.pem: |-
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE------ Mount your CAs from the ConfigMap to the Wiki.js pod and set
nodeExtraCaCertshelm variable. Insert the following lines to your Wiki.jsvalues.yaml, e.g.:
volumeMounts:
- name: ca
mountPath: /cas.pem
subPath: certs.pem
volumes:
- name: ca
configMap:
name: ca
nodeExtraCaCerts: "/cas.pem"