Files
chart/library/ix-dev/charts/nextcloud/questions.yaml
Stavros Kois 67683ae63e NAS-123507 / 24.04 / fix URL generation for nextcloud when SSL is enabled (#1465)
* fix URL generation for nextcloud when SSL is enabled

* wording

* adjust overwritehost variable too

* no need for printf

* add field to define port for url rewrite

* wording

* increase 10min to 15min startup time to accomodate slower IO for installes/upgrades
2023-08-30 14:58:04 +03:00

438 lines
14 KiB
YAML

groups:
- name: "Container Images"
description: "Image to be used for container"
- name: "Nextcloud Configuration"
description: "Configuration details for Nextcloud workload"
- name: "Storage"
description: "Configure Storage for Nextcloud"
- name: "Container Configuration"
description: "Configure nextcloud container parameters"
- name: "Postgresql Configuration"
description: "Configure Postgresql for nextcloud"
- name: "CronJob configuration"
description: "Configure CronJob for nextcloud"
- name: "Scaling/Upgrade Policy"
description: "Configure how pods are replaced when configuration is upgraded"
- name: "Advanced DNS Settings"
description: "Configure DNS settings"
- name: "Resource Limits"
description: "Set CPU/memory limits for Kubernetes Pod"
portals:
web_portal:
protocols:
- "$kubernetes-resource_configmap_nginx-configuration_protocol"
host:
- "$variable-nextcloud.host"
ports:
- "$variable-service.nodePort"
questions:
- variable: dnsConfig
label: "DNS Configuration"
group: "Advanced DNS Settings"
schema:
type: dict
attrs:
- variable: options
label: "DNS Options"
schema:
type: list
items:
- variable: optionsEntry
label: "Option Entry Configuration"
schema:
type: dict
attrs:
- variable: name
label: "Option Name"
schema:
type: string
required: true
- variable: value
label: "Option Value"
schema:
type: string
required: true
- variable: certificate
description: "Configure Certificate for Nextcloud"
label: "Certificate Configuration"
group: "Nextcloud Configuration"
schema:
type: int
$ref:
- "definitions/certificate"
- variable: nginxConfig
description: "Configure Nginx for Nextcloud"
label: "Nginx Configuration"
group: "Nextcloud Configuration"
schema:
type: dict
show_if: [["certificate", "!=", null]]
attrs:
- variable: proxy_timeouts
label: "Proxy timeouts (Seconds)"
description: |
Applies the timeout to the following settings:</br>
- proxy_connect_timeout</br>
- proxy_send_timeout</br>
- proxy_read_timeout</br>
schema:
type: int
min: 30
default: 60
required: true
- variable: useDifferentAccessPort
label: "Use different port for URL rewrites"
description: |
If enabled, the URL rewrite will use [Access Port] defined below instead of the [Node Port].</br>
Note that Nextcloud will still listen on the [Node Port]. (Default 9001)
schema:
type: boolean
default: false
- variable: externalAccessPort
label: "External Access Port"
schema:
type: int
show_if: [["useDifferentAccessPort", "=", true]]
min: 443
max: 65535
default: 443
required: true
- variable: nextcloud
description: "Nextcloud configuration details"
label: "Nextcloud Configuration"
group: "Nextcloud Configuration"
schema:
type: dict
required: true
additional_attrs: true
attrs:
- variable: host
description: "Nextcloud host to create application URLs"
label: "Nextcloud host"
schema:
type: string
$ref:
- "definitions/nodeIP"
- variable: username
label: "Username"
description: "Name of the Nextcloud admin user"
schema:
type: string
default: "admin"
required: true
- variable: password
label: "Password"
description: "Password for the Nextcloud admin user"
schema:
type: string
private: true
default: "changeme"
required: true
- variable: datadir
label: "Nextcloud data directory"
description: "Configures the data directory where nextcloud stores all files from the users"
schema:
type: path
default: "/var/www/html/data"
required: true
- variable: install_ffmpeg
label: "Install ffmpeg"
description: "Automatically Install ffmpeg when the container starts"
schema:
type: boolean
default: false
- variable: install_smbclient
label: "Install smbclient"
description: "Automatically Install smbclient when the container starts"
schema:
type: boolean
default: false
- variable: max_upload_size
label: "Max Upload Size (Giga Bytes)"
description: |
Applies the timeout to the following settings:</br>
- client_max_body_size in nginx</br>
- post_max_size and upload_max_filesize in php</br>
schema:
type: int
default: 3
min: 1
required: true
- variable: max_execution_time
label: "Max Execution Time (Seconds)"
description: "Configures the max execution time of php"
schema:
type: int
default: 30
min: 30
required: true
- variable: php_memory_limit
label: "PHP Memory Limit (Mega Bytes)"
description: "Configures the memory limit of php"
schema:
type: int
default: 512
min: 128
max: 4096
required: true
- variable: opcache_memory_consumption
label: "Opcache Memory Consumption (Mega Bytes)"
description: "Configures the memory consumption of the opcache"
schema:
type: int
min: 128
max: 1024
default: 128
required: true
- variable: cronjob
description: "Setup cronjob for nextcloud"
label: "Setup cronjob for nextcloud"
group: "CronJob configuration"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable cronjobs for nextcloud"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: schedule
label: Schedule
schema:
type: string
default: "*/15 * * * *"
empty: false
# Update strategy
- variable: updateStrategy
description: "Upgrade Policy"
label: "Update Strategy"
group: "Scaling/Upgrade Policy"
schema:
type: string
default: "Recreate"
enum:
- value: "RollingUpdate"
description: "Create new pods and then kill old ones"
- value: "Recreate"
description: "Kill existing pods before creating new ones"
- variable: service
description: "Nextcloud Service Configuration"
label: "Nextcloud Service Configuration"
group: "Nextcloud Configuration"
schema:
type: dict
required: true
attrs:
- variable: nodePort
label: "Node Port to use for Nextcloud"
schema:
type: int
min: 9000
max: 65535
default: 9001
required: true
- variable: appVolumeMounts
label: "Nextcloud Storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: nextcloud-data
label: "Nextcloud Data Volume"
schema:
type: dict
attrs:
- variable: datasetName
label: "Nextcloud Data Volume Name"
schema:
type: string
hidden: true
$ref:
- "normalize/ixVolume"
show_if: [["hostPathEnabled", "=", false]]
default: "ix-nextcloud_data"
editable: false
- variable: mountPath
label: "Nextcloud Data Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
hidden: true
editable: false
default: "/var/www"
- variable: hostPathEnabled
label: "Enable Host Path for Nextcloud Data Volume"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path for Nextcloud Data Volume"
schema:
type: hostpath
required: true
- variable: extraAppVolumeMounts
label: "Nextcloud Extra Host Path Volumes"
group: "Storage"
schema:
type: list
items:
- variable: extraAppVolume
label: "Nextcloud Host Path Volume"
description: "Add an extra host path volume for nextcloud application"
schema:
type: dict
attrs:
- variable: mountPath
label: "Mount Path in Pod"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
required: true
- variable: hostPath
label: "Host Path"
description: "Host path"
schema:
type: hostpath
required: true
- variable: postgresAppVolumeMounts
label: "Postgres Storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: postgres-data
label: "Postgres Data Volume"
schema:
type: dict
attrs:
- variable: datasetName
label: "Postgres Data Volume Name"
schema:
type: string
hidden: true
$ref:
- "normalize/ixVolume"
default: "ix-postgres_data"
show_if: [["hostPathEnabled", "=", false]]
editable: false
- variable: mountPath
label: "Postgresql Data Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
hidden: true
editable: false
default: "/var/lib/postgresql/data"
- variable: hostPathEnabled
label: "Enable Host Path for Postgres Data Volume"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path for Postgres Data Volume"
schema:
type: hostpath
required: true
- variable: postgres-backup
label: "Postgres Backup Volume"
schema:
type: dict
attrs:
- variable: datasetName
label: "Postgres Backup Volume Name"
schema:
type: string
hidden: true
$ref:
- "normalize/ixVolume"
default: "ix-postgres_backups"
show_if: [["hostPathEnabled", "=", false]]
editable: false
- variable: mountPath
label: "Postgresql Backup Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
hidden: true
editable: false
default: "/postgres_backups"
- variable: hostPathEnabled
label: "Enable Host Path for Postgres Backup Volume"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path for Postgres Backup Volume"
schema:
type: hostpath
required: true
- variable: enableResourceLimits
label: "Enable Pod resource limits"
group: "Resource Limits"
schema:
type: boolean
default: false
- variable: cpuLimit
label: "CPU Limit"
description: "CPU resource limit allow plain integer values with suffix m(milli) e.g 1000m, 100."
group: "Resource Limits"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^\\d+(?:\\.\\d+(?!.*m$)|m?$)"
default: "4000m"
- variable: memLimit
label: "Memory Limit"
group: "Resource Limits"
description: "Memory limits is specified by number of bytes. Followed by quantity suffix like E,P,T,G,M,k and Ei,Pi,Ti,Mi,Gi,Ki can also be used. e.g 129e6, 129M, 128974848000m, 123Mi"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$"
default: "8Gi"
- variable: environmentVariables
label: "Nextcloud environment"
group: "Nextcloud Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string