groups: - name: Nextcloud Configuration description: Configure Nextcloud - name: Network Configuration description: Configure Network for Nextcloud - name: Storage Configuration description: Configure Storage for Nextcloud - name: Labels Configuration description: Configure Labels for Nextcloud - name: Resources Configuration description: Configure Resources for Nextcloud questions: - variable: nextcloud label: "" group: Nextcloud Configuration schema: type: dict attrs: - variable: postgres_image_selector label: Postgres Image (CAUTION) description: | If you are changing this after the postgres directory has been initialized,
STOP! and make sure you have a backup of your data.
Changing this will trigger an one way database upgrade.
You can only select newer versions of postgres.
Selecting an older version will refuse to start.
If something goes wrong, you will have to restore from backup. schema: type: string default: postgres_17_image required: true enum: # TODO: Remove postgres_13_image in the future - value: postgres_13_image description: Postgres 13 - value: postgres_17_image description: Postgres 17 - variable: admin_user label: Admin User description: The admin user for Nextcloud. schema: type: string default: "" required: true - variable: admin_password label: Admin Password description: The admin password for Nextcloud. schema: type: string default: "" required: true private: true - variable: apt_packages label: APT Packages description: | The APT packages to install.
For additional packages, please open an issue on GitHub.
Sources and documentation links can help expedite the process. schema: type: list default: [] items: - variable: package label: Package schema: type: string required: true enum: - value: ffmpeg description: ffmpeg - value: smbclient description: smbclient - value: ocrmypdf description: ocrmypdf - value: libreoffice description: libreoffice - variable: tesseract_languages label: Tesseract Language Codes description: | The tesseract languages to install for OCRmypdf.
See a list of language codes here https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html.
Typing a wrong language code will block the container from starting.
Only takes effect if ocrmypdf is selected above. schema: type: list default: [] items: - variable: language label: Language schema: type: string # eg: eng min_length: 3 # eg chi-sim max_length: 7 required: true - variable: imaginary label: Imaginary description: | Imaginary can help improve performance for generating image previews.
Please see https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#previews for more information.
schema: type: dict attrs: - variable: enabled label: Enabled description: Enable Imaginary schema: type: boolean default: false - variable: host label: Host description: | Nextcloud host to create application URLs
Examples:
cloud.domain.com:30001
cloud.domain.com (if you use port 443 externally)
192.168.1.100:9001 (replace ip and port with your own)

This will be appended to the trusted domains list, but changing that will not remove it from the list.
schema: type: string default: "" - variable: data_dir_path label: Data Directory Path description: | Configures the data directory where Nextcloud stores all files from the users. The path refers to the path inside the container
It is recommended to keep the default value. (/var/www/html/data) schema: type: string default: "/var/www/html/data" required: true - variable: redis_password label: Redis Password description: The password for Redis. schema: type: string default: "" required: true private: true - variable: db_user # This field is only here for backwards compatibility # new installations should not use this field (hence the hidden flag) label: Database User description: The user for the database. schema: type: string default: "nextcloud" required: true private: true hidden: true - variable: db_password label: Database Password description: The password for the database. schema: type: string default: "" required: true private: true - variable: php_upload_limit label: PHP Upload Limit (in GB) description: | Applies the timeout to the following settings:
- client_max_body_size in nginx
- post_max_size and upload_max_filesize in php
schema: type: int min: 1 default: 3 required: true - variable: max_execution_time label: Max Execution Time (in seconds) description: The max execution time for Nextcloud. schema: type: int min: 30 default: 30 required: true - variable: php_memory_limit label: PHP Memory Limit (in MB) description: The PHP memory limit. schema: type: int min: 128 max: 4096 default: 512 required: true - variable: op_cache_interned_strings_buffer label: Op Cache Interned Strings Buffer (in MB) description: The Op Cache interned strings buffer. schema: type: int min: 32 max: 1024 default: 32 required: true - variable: op_cache_memory_consumption label: Op Cache Memory Consumption (in MB) description: The Op Cache memory consumption. schema: type: int min: 128 max: 1024 default: 128 required: true - variable: cron label: Cron description: The cron schedule. schema: type: dict attrs: - variable: enabled label: Enabled description: Enable cron. schema: type: boolean default: false - variable: schedule label: Schedule description: The cron schedule. schema: type: string show_if: [["enabled", "=", true]] default: "*/5 * * * *" required: true - variable: additional_envs label: Additional Environment Variables schema: type: list default: [] items: - variable: env label: Environment Variable schema: type: dict attrs: - variable: name label: Name schema: type: string required: true - variable: value label: Value schema: type: string - variable: network label: "" group: Network Configuration schema: type: dict attrs: - variable: web_port label: WebUI Port schema: type: dict attrs: - variable: bind_mode label: Port Bind Mode description: | The port bind mode.
- Publish: The port will be published on the host for external access.
- Expose: The port will be exposed for inter-container communication.
- None: The port will not be exposed or published.
Note: If the Dockerfile defines an EXPOSE directive, the port will still be exposed for inter-container communication regardless of this setting. schema: type: string default: "published" enum: - value: "published" description: Publish port on the host for external access - value: "exposed" description: Expose port for inter-container communication - value: "" description: None - variable: port_number label: Port Number schema: type: int show_if: [["bind_mode", "=", "published"]] default: 30027 min: 1 max: 65535 required: true - variable: host_ips label: Host IPs description: IPs on the host to bind this port schema: type: list show_if: [["bind_mode", "=", "published"]] default: [] items: - variable: host_ip label: Host IP schema: type: string required: true $ref: - definitions/node_bind_ip - variable: dns_opts label: DNS Options description: | DNS options for the container.
Format: key:value
Example: attempts:3 schema: type: list default: [] items: - variable: option label: Option schema: type: string required: true - variable: certificate_id label: Certificate ID description: The certificate ID to use for Nextcloud. schema: type: int "null": true $ref: - "definitions/certificate" - variable: nginx label: Nginx Configuration description: The configuration for the Nginx. schema: type: dict show_if: [["certificate_id", "!=", null]] attrs: - variable: proxy_timeout label: Proxy Timeout description: | Applies the timeout to the following settings:
- proxy_connect_timeout
- proxy_send_timeout
- proxy_read_timeout
schema: type: int min: 30 default: 60 required: true - variable: use_different_port label: Use different port for URL rewrites description: | If enabled, the URL rewrite will use [Access Port] defined below instead of the [Node Port].
Note that Nextcloud will still listen on the [Node Port]. (Default 9001) schema: type: boolean default: false - variable: external_port label: External Port description: The external port for Nginx. schema: type: int default: 443 min: 443 max: 65535 show_if: [["use_different_port", "=", true]] required: true - variable: custom_confs label: Custom Nginx Configurations description: List of custom Nginx configurations. schema: type: list default: [] items: - variable: conf label: Configuration schema: type: hostpath required: true - variable: storage label: "" group: Storage Configuration schema: type: dict attrs: - variable: html label: Nextcloud AppData Storage (HTML, Custom Themes, Apps, etc.) description: The path to store Nextcloud HTML and AppData. schema: type: dict attrs: - variable: type label: Type description: | ixVolume: Is dataset created automatically by the system.
Host Path: Is a path that already exists on the system. schema: type: string required: true default: "ix_volume" enum: - value: "host_path" description: Host Path (Path that already exists on the system) - value: "ix_volume" description: ixVolume (Dataset created automatically by the system) - variable: ix_volume_config label: ixVolume Configuration description: The configuration for the ixVolume dataset. schema: type: dict show_if: [["type", "=", "ix_volume"]] $ref: - "normalize/ix_volume" attrs: - variable: acl_enable label: Enable ACL description: Enable ACL for the storage. schema: type: boolean default: false - variable: dataset_name label: Dataset Name description: The name of the dataset to use for storage. schema: type: string required: true hidden: true default: "html" - variable: acl_entries label: ACL Configuration schema: type: dict show_if: [["acl_enable", "=", true]] attrs: [] - variable: host_path_config label: Host Path Configuration schema: type: dict show_if: [["type", "=", "host_path"]] attrs: - variable: acl_enable label: Enable ACL description: Enable ACL for the storage. schema: type: boolean default: false - variable: acl label: ACL Configuration schema: type: dict show_if: [["acl_enable", "=", true]] attrs: [] $ref: - "normalize/acl" - variable: path label: Host Path description: The host path to use for storage. schema: type: hostpath show_if: [["acl_enable", "=", false]] required: true - variable: data label: Nextcloud User Data Storage description: The path to store Nextcloud User Data. schema: type: dict attrs: - variable: type label: Type description: | ixVolume: Is dataset created automatically by the system.
Host Path: Is a path that already exists on the system. schema: type: string required: true default: "ix_volume" enum: - value: "host_path" description: Host Path (Path that already exists on the system) - value: "ix_volume" description: ixVolume (Dataset created automatically by the system) - variable: ix_volume_config label: ixVolume Configuration description: The configuration for the ixVolume dataset. schema: type: dict show_if: [["type", "=", "ix_volume"]] $ref: - "normalize/ix_volume" attrs: - variable: acl_enable label: Enable ACL description: Enable ACL for the storage. schema: type: boolean default: false - variable: dataset_name label: Dataset Name description: The name of the dataset to use for storage. schema: type: string required: true hidden: true default: "data" - variable: acl_entries label: ACL Configuration schema: type: dict show_if: [["acl_enable", "=", true]] attrs: [] - variable: host_path_config label: Host Path Configuration schema: type: dict show_if: [["type", "=", "host_path"]] attrs: - variable: acl_enable label: Enable ACL description: Enable ACL for the storage. schema: type: boolean default: false - variable: acl label: ACL Configuration schema: type: dict show_if: [["acl_enable", "=", true]] attrs: [] $ref: - "normalize/acl" - variable: path label: Host Path description: The host path to use for storage. schema: type: hostpath show_if: [["acl_enable", "=", false]] required: true - variable: postgres_data label: Nextcloud Postgres Data Storage description: The path to store Nextcloud Postgres Data. schema: type: dict attrs: - variable: type label: Type description: | ixVolume: Is dataset created automatically by the system.
Host Path: Is a path that already exists on the system. schema: type: string required: true default: "ix_volume" enum: - value: "host_path" description: Host Path (Path that already exists on the system) - value: "ix_volume" description: ixVolume (Dataset created automatically by the system) - variable: ix_volume_config label: ixVolume Configuration description: The configuration for the ixVolume dataset. schema: type: dict show_if: [["type", "=", "ix_volume"]] $ref: - "normalize/ix_volume" attrs: - variable: acl_enable label: Enable ACL description: Enable ACL for the storage. schema: type: boolean default: false - variable: dataset_name label: Dataset Name description: The name of the dataset to use for storage. schema: type: string required: true hidden: true default: "postgres_data" - variable: acl_entries label: ACL Configuration schema: type: dict show_if: [["acl_enable", "=", true]] attrs: [] - variable: host_path_config label: Host Path Configuration schema: type: dict show_if: [["type", "=", "host_path"]] attrs: - variable: acl_enable label: Enable ACL description: Enable ACL for the storage. schema: type: boolean default: false - variable: acl label: ACL Configuration schema: type: dict show_if: [["acl_enable", "=", true]] attrs: [] $ref: - "normalize/acl" - variable: path label: Host Path description: The host path to use for storage. schema: type: hostpath show_if: [["acl_enable", "=", false]] required: true - variable: auto_permissions label: Automatic Permissions description: | Automatically set permissions for the host path. Enabling this, will check the top level directory,
If it finds incorrect permissions, it will `chown` the host path to the user and group required for the postgres container. schema: type: boolean default: false show_if: [["acl_enable", "=", false]] - variable: additional_storage label: Additional Storage schema: type: list default: [] items: - variable: storageEntry label: Storage Entry schema: type: dict attrs: - variable: type label: Type description: | ixVolume: Is dataset created automatically by the system.
Host Path: Is a path that already exists on the system.
SMB Share: Is a SMB share that is mounted to as a volume. schema: type: string required: true default: "ix_volume" enum: - value: "host_path" description: Host Path (Path that already exists on the system) - value: "ix_volume" description: ixVolume (Dataset created automatically by the system) - value: "cifs" description: SMB/CIFS Share (Mounts a volume to a SMB share) - variable: read_only label: Read Only description: Mount the volume as read only. schema: type: boolean default: false - variable: mount_path label: Mount Path description: The path inside the container to mount the storage. schema: type: path required: true - variable: host_path_config label: Host Path Configuration schema: type: dict show_if: [["type", "=", "host_path"]] attrs: - variable: acl_enable label: Enable ACL description: Enable ACL for the storage. schema: type: boolean default: false - variable: acl label: ACL Configuration schema: type: dict show_if: [["acl_enable", "=", true]] attrs: [] $ref: - "normalize/acl" - variable: path label: Host Path description: The host path to use for storage. schema: type: hostpath show_if: [["acl_enable", "=", false]] required: true - variable: ix_volume_config label: ixVolume Configuration description: The configuration for the ixVolume dataset. schema: type: dict show_if: [["type", "=", "ix_volume"]] $ref: - "normalize/ix_volume" attrs: - variable: acl_enable label: Enable ACL description: Enable ACL for the storage. schema: type: boolean default: false - variable: dataset_name label: Dataset Name description: The name of the dataset to use for storage. schema: type: string required: true default: "storage_entry" - variable: acl_entries label: ACL Configuration schema: type: dict show_if: [["acl_enable", "=", true]] attrs: [] $ref: - "normalize/acl" - variable: cifs_config label: SMB Configuration description: The configuration for the SMB dataset. schema: type: dict show_if: [["type", "=", "cifs"]] attrs: - variable: server label: Server description: The server to mount the SMB share. schema: type: string required: true - variable: path label: Path description: The path to mount the SMB share. schema: type: string required: true - variable: username label: Username description: The username to use for the SMB share. schema: type: string required: true - variable: password label: Password description: The password to use for the SMB share. schema: type: string required: true private: true - variable: domain label: Domain description: The domain to use for the SMB share. schema: type: string - variable: labels label: "" group: Labels Configuration schema: type: list default: [] items: - variable: label label: Label schema: type: dict attrs: - variable: key label: Key schema: type: string required: true - variable: value label: Value schema: type: string required: true - variable: containers label: Containers description: Containers where the label should be applied schema: type: list items: - variable: container label: Container schema: type: string required: true enum: - value: nextcloud description: nextcloud - value: imaginary description: imaginary - value: cron description: cron - value: nginx description: nginx - value: postgres description: postgres - value: redis description: redis - variable: resources label: "" group: Resources Configuration schema: type: dict attrs: - variable: limits label: Limits schema: type: dict attrs: - variable: cpus label: CPUs description: CPUs limit for Nextcloud. schema: type: int default: 2 required: true - variable: memory label: Memory (in MB) description: Memory limit for Nextcloud. schema: type: int default: 4096 required: true - variable: gpus group: Resources Configuration label: GPU Configuration schema: type: dict $ref: - "definitions/gpu_configuration" attrs: []