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.
Make sure the Helm
schema-gen
plugin is installed.helm plugin install https://github.com/karuppiah7890/helm-schema-gen
Use the plugin to generate the new schema.
helm schema-gen values.yaml > values.schema.json
Usage#
Add the repository to Helm.
helm repo add nextcloud https://nextcloud.github.io/helm/ helm repo update
Edit the
values.yaml
as you need.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
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