## File: README.md

- **[Official Website](https://js.wiki/)**
- **[Documentation](https://docs.requarks.io/)**
- [Requirements](https://docs.requarks.io/install/requirements)
- [Installation](https://docs.requarks.io/install)
- [Demo](https://docs.requarks.io/demo)
- [Changelog](https://github.com/requarks/wiki/releases)
- [Feature Requests](https://feedback.js.wiki/wiki)
- Chat with us on [Discord](https://discord.gg/rcxt9QS2jd)
- [Translations](https://docs.requarks.io/dev/translations) *(We need your help!)*
- [Special Thanks](#special-thanks)
- [Contribute](#contributors)

[Follow our Twitter feed](https://twitter.com/requarks) to learn about upcoming updates and new releases!

<h2 align="center">Donate</h2>



<h2 align="center">Gold Tier Sponsors</h2>



<h2 align="center">GitHub Sponsors</h2>

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](https://github.com/users/NGPixel/sponsorship)]





<h2 align="center">OpenCollective Sponsors</h2>

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](https://opencollective.com/wikijs#sponsor)]



<h2 align="center">Patreon Backers</h2>

Thank you to all our patrons! 🙏 [[Become a patron](https://www.patreon.com/requarks)]



<h2 align="center">OpenCollective Backers</h2>

Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/wikijs#backer)]

[](https://opencollective.com/wikijs#backers)

<h2 align="center">Contributors</h2>

This project exists thanks to all the people who contribute. [[Contribute]](https://github.com/Requarks/wiki/blob/master/.github/CONTRIBUTING.md).
[](https://github.com/Requarks/wiki/graphs/contributors)

<h2 align="center">Special Thanks</h2>

  
[Browserstack](https://www.browserstack.com/) for providing access to their great cross-browser testing tools.

  
[Cloudflare](https://www.cloudflare.com/) for providing their great CDN, SSL and advanced networking services.

  
[DigitalOcean](https://m.do.co/c/5f7445bfa4d0) for providing hosting of the Wiki.js documentation site and APIs.

  
[Icons8](https://icons8.com/) for providing access to their beautiful icon sets.

  
[Lokalise](https://lokalise.com/) for providing access to their great localization tool.

  
[MacStadium](https://www.macstadium.com) for providing access to their Mac hardware in the cloud.

  
[Netlify](https://www.netlify.com) for providing hosting for our website.

  
[ngrok](https://ngrok.com) for providing access to their great HTTP tunneling services.

  
[Porkbun](https://www.porkbun.com) for providing domain registration services.

---

## File: dev/helm/README.md

- **[Official Website](https://wiki.js.org/)**
- **[Documentation](https://docs.requarks.io/)**

<h2 align="center">Donate</h2>



## 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 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

```console
$ helm repo add requarks https://charts.js.wiki
```

## Installing the Chart

To install the chart with the release name `my-release` run the following:

### Using Helm 3/4:
```console
$ helm install my-release requarks/wiki
```
### Using Helm 2:
```console
$ helm install --name my-release requarks/wiki
```

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                            | `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,

```console
$ helm install --name my-release \
  --set postgresql.persistence.enabled=false \
   requarks/wiki
```

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 requarks/wiki
```

> **Tip**: You can use the default [values.yaml](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 credentials
- `postgresql.existingSecretKey`: Key in the secret containing the password (defaults to `postgresql-password`)
- `postgresql.existingSecretUserKey`: Key in the secret containing the username (defaults to `postgresql-username`)
Example usage:
```bash
# 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-secret
```

## 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 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:

1. Create a ConfigMap with CAs in PEM format, e.g.:

```yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: ca
  namespace: your-wikijs-namespace
data:
  certs.pem: |-
    -----BEGIN CERTIFICATE-----
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    -----END CERTIFICATE-----
```

2. Mount your CAs from the ConfigMap to the Wiki.js pod and set `nodeExtraCaCerts` helm variable. Insert the following lines to your Wiki.js `values.yaml`, e.g.:

```yaml
volumeMounts:
  - name: ca
    mountPath: /cas.pem
    subPath: certs.pem

volumes:
  - name: ca
    configMap:
      name: ca

nodeExtraCaCerts: "/cas.pem"
```