Skip to content
Snippets Groups Projects
Arie Peterson's avatar
d76d625c

Nextcloud + Onlyoffice helm chart

This helm chart installs Nextcloud and ONLYOFFICE and configures Nextcloud to use ONLYOFFICE as its document editor. Depends on the Nextcloud @stable chart. For configuration details on Nextcloud, refer to their documentation.

Parts of this chart are based on a copy of the COLLABORA code helm chart

Installation

NOTE: The onlyoffice.server_name variable needs to be overwritten with a URL that points to your onlyoffice for this to work correctly. See values-local.yaml.example for an example of domain configurations you might want to do. These instructions assume you copy values-local.yaml.example to values-local.yaml and edit it.

NOTE: It is very important that you uncomment and set the following password and secrets variables manually when you run helm install:

  • nextcloud.nextcloud.password
  • nextcloud.mariadb.auth.password
  • nextcloud.mariadb.auth.rootPassword
  • redis.auth.password
  • onlyoffice.jwtSecret
  • rabbitmq.auth.password
  • rabbitmq.auth.erlangCookie
  • global.onlyofficeDb.password

NOTE: The chart currently includes a ConfigMap with a name that is not dependent on the release name. This means that the chart cannot be installed more than once into the same namespace. If you need to install Nextcloud and Onlyoffice several times into the same cluster, use different namespaces.

Install from the remote repo

This is the way to go if you want to use the packaged chart as is. If you'd like to make changes before installing, refer to the next section.

Add our helm repository1:

helm repo add nextcloud-onlyoffice https://open.greenhost.net/api/v4/projects/1/packages/helm/stable

Then install the chart:

helm install -f values-local.yaml my-nextcloud nextcloud-onlyoffice/nextcloud-onlyoffice

Install from a local repo

Start by cloning the nextcloud helm chart repo:

git clone https://open.greenhost.net/stackspin/nextcloud.git
cd nextcloud

Add the dependencies repositories:

# nextcloud chart
helm repo add nextcloud https://nextcloud.github.io/helm
# rabbitmq chart
helm repo add bitnami https://charts.bitnami.com/bitnami

Fetch the chart dependencies:

helm dependency build

Then install the chart:

helm install -f values-local.yaml my-nextcloud .

Nextcloud configuration.

This chart adds a "postStart" command to the Nextcloud pod, that installs apps (see below) and applies a custom configuration to set up those apps and integration with ONLYOFFICE as well as the Stackspin OIDC provider.

Kubernetes postStart commands do not log to the pod log. Instead, the script creates its own log in /var/www/tmp/postStart<date>.log. This means that even if you can't exec into the pod (because something is failing), you can see the logs inside the data folder in the PVC. Often, if the postStart command fails, you can also see the problem by running kubectl describe pod <nextcloud pod>.

Apps

The Nextcloud app store allows admin users to install applications, many of which have not undergone security testing. For that reason we disabled downloading new apps via the app store. As the person installing Nextcloud it is possible to specify which applications from the app store are available for installation. It is also possible to enable them by default. Apps that are not enabled by default can be enabled through the Apps screen in Nextcloud.

Apps that are installed this way are automatically updated to their newest version every time Nextcloud is updated.

To install apps, edit the values.yaml file:

apps:
  - name: sociallogin  # Installs sociallogin app
    enabled: false     # Disables sociallogin by default

Additionally, we have added an option to install Apps immediately from GitHub releases. The benefit of this, compared to installing them with occ, is that we can pin the versions to specific GitHub releases. To install an app from GitHub releases:

apps:
  - name: onlyoffice
    # The name of the repository. This is the name for a repository located at
    # https://github.com/ONLYOFFICE/onlyoffice-nextcloud:
    github_repository: ONLYOFFICE/onlyoffice-nextcloud
    # The version to install or upgrade the app to
    version: 7.5.4
    # The name of the "asset" to download from this release. This name can be
    # found on https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases
    release_filename: onlyoffice.tar.gz
    # Enable the app after installing it
    enabled: true

Values

The included values.yaml file configures Nextcloud to use a Mariadb database, otherwise the Job cannot access the database for plugin installation.

It also configures NextCloud to use a persistent volume, because this is necessary for the integration job to work. Be sure to change the size of the persistent disk (default: 2 GB) if you need more.

Parameter Description Default
nextcloud.* See NextCloud helm chart
onlyoffice.replicaCount Number of provisioner instances to deployed 1
onlyoffice.strategy Specifies the strategy used to replace old Pods by new ones Recreate
onlyoffice.jwtSecret Used to set the JWT shared secret between ONLYOFFICE and NC secret
onlyoffice.image.repository Provisioner image onlyoffice/documentserver
onlyoffice.image.tag Version of provisioner image 5.3.1.26
onlyoffice.image.pullPolicy Image pull policy IfNotPresent
onlyoffice.server_name Onlyoffice server URL onlyoffice.domain
onlyoffice.ingress.enabled false
onlyoffice.ingress.annotations {}
onlyoffice.ingress.paths []
onlyoffice.ingress.hosts []
onlyoffice.ingress.tls []
onlyoffice.livenessProbe.enabled Turn on and off liveness probe true
onlyoffice.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated 30
onlyoffice.livenessProbe.periodSeconds How often to perform the probe 10
onlyoffice.livenessProbe.timeoutSeconds When the probe times out 2
onlyoffice.livenessProbe.successThreshold Minimum consecutive successes for the probe 1
onlyoffice.livenessProbe.failureThreshold Minimum consecutive failures for the probe 3
onlyoffice.readinessProbe.enabled Turn on and off readiness probe true
onlyoffice.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated 30
onlyoffice.readinessProbe.periodSeconds How often to perform the probe 10
onlyoffice.readinessProbe.timeoutSeconds When the probe times out 2
onlyoffice.readinessProbe.successThreshold Minimum consecutive successes for the probe 1
onlyoffice.readinessProbe.failureThreshold Minimum consecutive failures for the probe 3
onlyoffice.securityContext Change pod security contenxt {}
onlyoffice.resources Resources required (e.g. CPU, memory) {}
onlyoffice.nodeSelector Node labels for pod assignment {}
onlyoffice.affinity Affinity settings {}
onlyoffice.tolerations List of node taints to tolerate []

Running tests

This chart comes with Cypress e2e tests that you can run by running helm test <release name>. Add the --logs parameter if you want to immediately see the console output from the test.

Running the tests locally

If the tests fail, you'll want to observe the steps Cypress executes in the browser. To do so, install Cypress with npm

Setup

npm install -D

Usage

Export KUBECONFIG to access a cluster with an existing nextcloud helm chart installation.

export KUBECONFIG=…/kube_config_cluster.yml

Set environment variables to use with Cypress. Read the script to see the possible values and adjust them if necessary.

source get-cypress-vars.sh <release_name>

Start Cypress GUI:

./node_modules/.bin/cypress open

or just run the tests from the console:

./node_modules/.bin/cypress run --headed

Releasing

To publish a new version of the helm chart:

  1. increase the chart version in Chart.yaml;
  2. update CHANGELOG.md and check that it includes relevant changes, including ones added by renovatebot;
  3. commit and push these changes to main;
  4. create a new git tag for the new release and push it to gitlab as well.

The last step will trigger a CI run that will package and publish the helm chart.

  1. If you want to test a version that is not on the main branch yet, use https://open.greenhost.net/api/v4/projects/1/packages/helm/unstable