NextCloud Helm Chart Values

Abstract

Documentation for the NextCloud Helm Chart values.

NextCloud Helm Chart Values#

This folder contains a values file to deploy the NextCloud Community Helm Chart along with a JSON schema file generated from that values file.

This is a copy

Any documentation here was originally sourced from the NextCloud Community Helm Chart’s GitHub. In the event of conflicts between this information and the source repository, the source repository should be considered the truth.

Schema Generation#

If you need to update the JSON schema, follow these steps.

  1. Make sure the Helm schema-gen plugin is installed.

    helm plugin install https://github.com/karuppiah7890/helm-schema-gen
    
  2. Use the plugin to generate the new schema.

    helm schema-gen values.yaml > values.schema.json
    

Usage#

  1. Add the repository to Helm.

    helm repo add nextcloud https://nextcloud.github.io/helm/
    helm repo update
    
  2. Edit the values.yaml as you need.

  3. Deploy the chart.

    kubectl create ns NextCloud
    helm -n NextCloud upgrade --install NextCloud NextCloud-community/NextCloud -f values.yaml
    

Values#

image

Nextcloud Values


Default values for Nextcloud. This is a YAML-formatted file. Declare variables to be passed into your templates.


Official nextcloud image version


Reference for the Nextcloud Helm chart is available here. Reference for Docker image tags is available here.

image:
  repository: nextcloud
  # Tag is the version of the Nextcloud image. By default,
  # it is generated automatically by flavor and appVersion.
  tag: fpm
  pullPolicy: IfNotPresent
  # Optionally use pullSecrets for private Docker repositories.f
  # pullSecrets:
  #   - myRegistryKeySecretName
# Overrides for name or full name.
nameOverride: ""
fullnameOverride: "nextcloud"
# Annotations and labels
# Define pod annotations, deployment annotations, and deployment labels as needed.
podAnnotations: {}
deploymentAnnotations: {}
deploymentLabels: {}
# Number of replicas to be deployed
replicaCount: 1
ingress

Ingress Settings


Enable or disable ingress and define ingress controller-specific annotations.

ingress:
  enabled: true
  className: nginx
  annotations:
    cert-manager.io/cluster-issuer: nextcloud
    cert-manager.io/common-name: nextcloud.breeze-blocks.net
    # nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-headers: "X-Forwarded-For"
    nginx.ingress.kubernetes.io/proxy-body-size: 4G
    # nginx.ingress.kubernetes.io/server-snippet: |-
    #   server_tokens off;
    #   proxy_hide_header X-Powered-By;
    #   rewrite ^/.well-known/webfinger /index.php/.well-known/webfinger last;
    #   rewrite ^/.well-known/nodeinfo /index.php/.well-known/nodeinfo last;
    #   rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #   rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json;
    #   location = /.well-known/carddav {
    #     return 301 $scheme://$host/remote.php/dav;
    #   }
    #   location = /.well-known/caldav {
    #     return 301 $scheme://$host/remote.php/dav;
    #   }
    #   location = /robots.txt {
    #     allow all;
    #     log_not_found off;
    #     access_log off;
    #   }
    #   location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
    #     deny all;
    #   }
    #   location ~ ^/(?:autotest|occ|issue|indie|db_|console) {
    #     deny all;
    #   }
  # Define TLS configuration for ingress, with secretName and hosts.
  # tls:
  # - secretName: nextcloud-cert
  #   hosts:
  #   - nextcloud.breeze-blocks.net
  labels:
    app.kubernetes.io/name: nextcloud
  path: /
  pathType: Prefix
internalDatabase

Database Settings


Configure the database.

internalDatabase:
  enabled: false
externalDatabase:
  enabled: true
  existingSecret:
    enabled: true
    secretName: nextcloud-db
    usernameKey: username
    passwordKey: password
    hostKey: host
    databaseKey: database
  type: postgresql
lifecycle

Lifecycle Hooks


Optional configuration of lifecycle hooks to run commands during container lifecycle events`.

lifecycle: {}
# postStartCommand: []
# preStopCommand: []
# PHP HTTPS Configuration
phpClientHttpsFix:
  enabled: true
  protocol: https
nextcloud

Nextcloud Application Configuration


Primary configuration parameters for the Nextcloud application.

nextcloud:
  host: nextcloud.breeze-blocks.net
  username: admin
  password: changeme
  # Option to use an existing secret for Nextcloud credentials.
  existingSecret:
    enabled: true
    # Secret name containing Nextcloud credentials.
    secretName: nextcloud-login
    usernameKey: nextcloud-username
    passwordKey: nextcloud-password
    tokenKey: ""
    smtpUsernameKey: smtp-username
    smtpPasswordKey: smtp-password
    smtpHostKey: smtp-host
  update: 0
  # Define the port if the web server is not binding to the default port.
  containerPort: 80
  datadir: /var/www/html/data
persistence

Persistent Storage for Nextcloud


Configure persistent storage for Nextcloud’s data directory.

persistence:
  enabled: true
  existingClaim: nextcloud-nextcloud
  subPath: ""
  nextcloudData:
    enabled: true
    subPath: ""
    existingClaim: nextcloud-nextcloud-data
    accessMode: ReadWriteMany
    size: 50Gi
    storageClass: csi-lvm-linear
# Trusted domains configuration
# Optional: Define trusted domains to be templated
# into the NEXTCLOUD_TRUSTED_DOMAINS environment variable.
trustedDomains:
- breeze-blocks.net
mail

SMTP Configuration


Email server settings to allow Nextcloud to send emails.

persistence:
  enabled: true
  existingClaim: nextcloud-nextcloud
  subPath: ""
  nextcloudData:
    enabled: true
    subPath: ""
    existingClaim: nextcloud-nextcloud-data
    accessMode: ReadWriteMany
    size: 50Gi
    storageClass: csi-lvm-linear
# Trusted domains configuration
# Optional: Define trusted domains to be templated
# into the NEXTCLOUD_TRUSTED_DOMAINS environment variable.
trustedDomains:
- breeze-blocks.net
objectStore

Object Storage Configuration


Configure Nextcloud to use an object storage provider (e.g., S3, Swift) as the primary storage

objectStore:
  s3:
    enabled: false
    # S3 access credentials and configuration parameters.
    accessKey: ""
    secretKey: ""
    host: ""
    ssl: true
    port: "443"
    region: "eu-west-1"
    bucket: ""
    prefix: ""
    usePathStyle: false
    autoCreate: false
    storageClass: "STANDARD"
    sse_c_key: ""
    existingSecret: ""
  swift:
    enabled: false
    user:
      domain: "Default"
      name: ""
      password: ""
    project:
      name: ""
      domain: "Default"
    url: ""
    region: ""
    service: "swift"
    container: ""
    autoCreate: false
phpConfigs

PHP Configuration


Custom PHP configurations injected into Nextcloud containers.

phpConfigs: {}
# Extra PHP configurations can be specified using `defaultConfigs`.
defaultConfigs:
  .htaccess: true
  apache-pretty-urls.config.php: true
  apcu.config.php: true
  apps.config.php: true
  autoconfig.php: true
  redis.config.php: true
  reverse-proxy.config.php: true
  s3.config.php: false
  smtp.config.php: true
  swift.config.php: true
  upgrade-disable-web.config.php: true
hooks

Hooks for Auto Configuration


Here you can define custom hooks to be executed during specific container lifecycle events.

hooks:
  pre-installation:
  post-installation:
  pre-upgrade:
  post-upgrade:
  before-starting:
redis

Redis Configuration


Optional Redis configuration for Nextcloud caching.

redis:
  enabled: false
  auth:
    enabled: false
    password: 'changeme'
  global:
    storageClass: csi-lvm-linear
  master:
    persistence:
      enabled: true
  replica:
    persistence:
      enabled: true
service

Service Configuration


Configure the service type (ClusterIP, LoadBalancer, etc.) for Nextcloud.

service:
  type: LoadBalancer
  port: 80
  loadBalancerIP: 192.168.5.5
  externalIPs:
  - 192.168.5.16
  nodePort:
  annotations:
    app.kubernetes.io/hostname: nextcloud.breeze-blocks.net
nginx:
  enabled: true
livenessProbe

Liveness, Readiness, and Startup Probes


Configure liveness, readiness, and startup probes for the Nextcloud container.

livenessProbe:
  enabled: false
  initialDelaySeconds: 10
  periodSeconds: 10
readinessProbe:
  enabled: false
  initialDelaySeconds: 10
  periodSeconds: 10
startupProbe:
  enabled: false
  initialDelaySeconds: 30
  periodSeconds: 10
# HorizontalPodAutoscaler (HPA) Configuration
hpa:
  enabled: false
  cputhreshold: 60
  minPods: 1
  maxPods: 10
# Node selector, tolerations, and affinity for the Nextcloud pod.
nodeSelector: {}
tolerations: []
affinity: {}
metrics

Prometheus Exporter Configuration


Configuration for enabling Prometheus metrics for Nextcloud.

# yaml-language-server: $schema=values.schema.json
###
# ```{rubric} Nextcloud Values
# ```
# ---
# Default values for Nextcloud.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
#
# ---
# ```{rubric} Official nextcloud image version
# ```
# ---
# Reference for the Nextcloud Helm chart is available
# [here](https://github.com/nextcloud/helm/blob/main/charts/nextcloud/values.yaml).
# Reference for Docker image tags is available
# [here](https://hub.docker.com/r/library/nextcloud/tags/).
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "image:\n"
# :end-before: "###\n"
# ```
image:
  repository: nextcloud
  # Tag is the version of the Nextcloud image. By default,
  # it is generated automatically by flavor and appVersion.
  tag: fpm
  pullPolicy: IfNotPresent
  # Optionally use pullSecrets for private Docker repositories.f
  # pullSecrets:
  #   - myRegistryKeySecretName
# Overrides for name or full name.
nameOverride: ""
fullnameOverride: "nextcloud"
# Annotations and labels
# Define pod annotations, deployment annotations, and deployment labels as needed.
podAnnotations: {}
deploymentAnnotations: {}
deploymentLabels: {}
# Number of replicas to be deployed
replicaCount: 1

###
# ```{rubric} Ingress Settings
# ```
# ---
# Enable or disable {term}`ingress` and define {term}`ingress`
# controller-specific annotations.
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "ingress:\n"
# :end-before: "###\n"
# ```
ingress:
  enabled: true
  className: nginx
  annotations:
    cert-manager.io/cluster-issuer: nextcloud
    cert-manager.io/common-name: nextcloud.breeze-blocks.net
    # nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-headers: "X-Forwarded-For"
    nginx.ingress.kubernetes.io/proxy-body-size: 4G
    # nginx.ingress.kubernetes.io/server-snippet: |-
    #   server_tokens off;
    #   proxy_hide_header X-Powered-By;
    #   rewrite ^/.well-known/webfinger /index.php/.well-known/webfinger last;
    #   rewrite ^/.well-known/nodeinfo /index.php/.well-known/nodeinfo last;
    #   rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #   rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json;
    #   location = /.well-known/carddav {
    #     return 301 $scheme://$host/remote.php/dav;
    #   }
    #   location = /.well-known/caldav {
    #     return 301 $scheme://$host/remote.php/dav;
    #   }
    #   location = /robots.txt {
    #     allow all;
    #     log_not_found off;
    #     access_log off;
    #   }
    #   location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
    #     deny all;
    #   }
    #   location ~ ^/(?:autotest|occ|issue|indie|db_|console) {
    #     deny all;
    #   }
  # Define TLS configuration for ingress, with secretName and hosts.
  # tls:
  # - secretName: nextcloud-cert
  #   hosts:
  #   - nextcloud.breeze-blocks.net
  labels:
    app.kubernetes.io/name: nextcloud
  path: /
  pathType: Prefix

###
# ```{rubric} Database Settings
# ```
# ---
# Configure the database.
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "internalDatabase:\n"
# :end-before: "###\n"
# ```
internalDatabase:
  enabled: false
externalDatabase:
  enabled: true
  existingSecret:
    enabled: true
    secretName: nextcloud-db
    usernameKey: username
    passwordKey: password
    hostKey: host
    databaseKey: database
  type: postgresql


###
# ```{rubric} Lifecycle Hooks
# ```
# ---
# Optional configuration of lifecycle hooks to run commands during container
# {term}`lifecycle events``.
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "lifecycle: {}\n"
# :end-before: "###\n"
# ```
lifecycle: {}
# postStartCommand: []
# preStopCommand: []
# PHP HTTPS Configuration
phpClientHttpsFix:
  enabled: true
  protocol: https

###
# ```{rubric} Nextcloud Application Configuration
# ```
# ---
# Primary configuration parameters for the Nextcloud application.
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "nextcloud:\n"
# :end-before: "###\n"
# ```
nextcloud:
  host: nextcloud.breeze-blocks.net
  username: admin
  password: changeme
  # Option to use an existing secret for Nextcloud credentials.
  existingSecret:
    enabled: true
    # Secret name containing Nextcloud credentials.
    secretName: nextcloud-login
    usernameKey: nextcloud-username
    passwordKey: nextcloud-password
    tokenKey: ""
    smtpUsernameKey: smtp-username
    smtpPasswordKey: smtp-password
    smtpHostKey: smtp-host
  update: 0
  # Define the port if the web server is not binding to the default port.
  containerPort: 80
  datadir: /var/www/html/data

###
# ```{rubric} Persistent Storage for Nextcloud
# ```
# ---
# Configure persistent storage for Nextcloud's data directory.
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "persistence:\n"
# :end-before: "###\n"
# ```
persistence:
  enabled: true
  existingClaim: nextcloud-nextcloud
  subPath: ""
  nextcloudData:
    enabled: true
    subPath: ""
    existingClaim: nextcloud-nextcloud-data
    accessMode: ReadWriteMany
    size: 50Gi
    storageClass: csi-lvm-linear
# Trusted domains configuration
# Optional: Define trusted domains to be templated
# into the NEXTCLOUD_TRUSTED_DOMAINS environment variable.
trustedDomains:
- breeze-blocks.net

###
# ```{rubric} SMTP Configuration
# ```
# ---
# Email server settings to allow Nextcloud to send emails.
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "persistence:\n"
# :end-before: "###\n"
# ```
mail:
  enabled: false
  fromAddress: user
  domain: domain.com
  smtp:
    host: domain.com
    secure: ssl
    port: 465
    authtype: LOGIN
    name: user
    password: pass

###
# ```{rubric} Object Storage Configuration
# ```
# ---
# Configure Nextcloud to use an object storage provider (e.g., S3, Swift) as
# [the primary storage](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html)
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "objectStore:\n"
# :end-before: "###\n"
# ```
objectStore:
  s3:
    enabled: false
    # S3 access credentials and configuration parameters.
    accessKey: ""
    secretKey: ""
    host: ""
    ssl: true
    port: "443"
    region: "eu-west-1"
    bucket: ""
    prefix: ""
    usePathStyle: false
    autoCreate: false
    storageClass: "STANDARD"
    sse_c_key: ""
    existingSecret: ""
  swift:
    enabled: false
    user:
      domain: "Default"
      name: ""
      password: ""
    project:
      name: ""
      domain: "Default"
    url: ""
    region: ""
    service: "swift"
    container: ""
    autoCreate: false

###
# ```{rubric} PHP Configuration
# ```
# ---
# Custom PHP configurations injected into Nextcloud containers.
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "phpConfigs: {}\n"
# :end-before: "###\n"
# ```
phpConfigs: {}
# Extra PHP configurations can be specified using `defaultConfigs`.
defaultConfigs:
  .htaccess: true
  apache-pretty-urls.config.php: true
  apcu.config.php: true
  apps.config.php: true
  autoconfig.php: true
  redis.config.php: true
  reverse-proxy.config.php: true
  s3.config.php: false
  smtp.config.php: true
  swift.config.php: true
  upgrade-disable-web.config.php: true

###
# ```{rubric} Hooks for Auto Configuration
# ```
# ---
# Here you can define custom hooks to be executed during specific container lifecycle events.
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "hooks:\n"
# :end-before: "###\n"
# ```
hooks:
  pre-installation:
  post-installation:
  pre-upgrade:
  post-upgrade:
  before-starting:

###
# ```{rubric} Deployment Strategy
# ```
# ---
# Strategy for pod replacement during upgrades. Options: `Recreate` or `RollingUpdate`.
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "strategy:\n"
# :end-before: "###\n"
# ```
strategy:
  type: Recreate
  # type: RollingUpdate
  # rollingUpdate:
  #   maxSurge: 1
  #   maxUnavailable: 0
# Additional environment variables for Nextcloud.
extraEnv: []
#  - name: SOME_SECRET_ENV
#    valueFrom:
#      secretKeyRef:
#        name: nextcloud
#        key: secret_key
# Additional init and sidecar containers.
extraInitContainers: []
extraSidecarContainers: []
# Additional volumes and volume mounts.
extraVolumes: []
extraVolumeMounts: []
# Security context settings for Nextcloud containers and pods.
securityContext: {}
podSecurityContext: {}

###
# ```{rubric} Redis Configuration
# ```
# ---
# Optional Redis configuration for Nextcloud caching.
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "redis:\n"
# :end-before: "###\n"
# ```
redis:
  enabled: false
  auth:
    enabled: false
    password: 'changeme'
  global:
    storageClass: csi-lvm-linear
  master:
    persistence:
      enabled: true
  replica:
    persistence:
      enabled: true

###
# ```{rubric} Service Configuration
# ```
# ---
# Configure the service type (ClusterIP, LoadBalancer, etc.) for Nextcloud.
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "service:\n"
# :end-before: "###\n"
# ```
service:
  type: LoadBalancer
  port: 80
  loadBalancerIP: 192.168.5.5
  externalIPs:
  - 192.168.5.16
  nodePort:
  annotations:
    app.kubernetes.io/hostname: nextcloud.breeze-blocks.net
nginx:
  enabled: true

###
# ```{rubric} Liveness, Readiness, and Startup Probes
# ```
# ---
# Configure liveness, readiness, and startup probes for the Nextcloud container.
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "livenessProbe:\n"
# :end-before: "###\n"
# ```
livenessProbe:
  enabled: false
  initialDelaySeconds: 10
  periodSeconds: 10
readinessProbe:
  enabled: false
  initialDelaySeconds: 10
  periodSeconds: 10
startupProbe:
  enabled: false
  initialDelaySeconds: 30
  periodSeconds: 10
# HorizontalPodAutoscaler (HPA) Configuration
hpa:
  enabled: false
  cputhreshold: 60
  minPods: 1
  maxPods: 10
# Node selector, tolerations, and affinity for the Nextcloud pod.
nodeSelector: {}
tolerations: []
affinity: {}

###
# ```{rubric} Prometheus Exporter Configuration
# ```
# ---
# Configuration for enabling Prometheus metrics for Nextcloud.
#
# ```{literalinclude} /charts/nextcloud/values.yaml
# :language: yaml
# :start-at: "metrics:\n
# ```
metrics:
  enabled: false
  server: ""
  https: false
  token: ""
  timeout: 5s
  tlsSkipVerify: false
  image:
    repository: xperimental/nextcloud-exporter
    tag: 0.6.2
  resources: {}
# ServiceMonitor configuration for Prometheus Operator.
serviceMonitor:
  enabled: false
  namespace: ""
  interval: 30s
# RBAC configuration for Nextcloud.
rbac:
  enabled: true
  serviceaccount:
    create: true
    name: nextcloud