groups: - name: Nextcloud Configuration description: Configure Nextcloud - name: User and Group Configuration description: Configure User and Group for 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: TZ group: Nextcloud Configuration label: Timezone schema: type: string default: Etc/UTC required: true $ref: - definitions/timezone - 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: - 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: redis_password label: Redis Password description: The password for Redis. schema: type: string default: "" required: true private: true - variable: db_password label: Database Password description: The password for the database. schema: type: string default: "" required: true private: true - variable: build label: Build description: Build-time configuration for Nextcloud. schema: type: dict attrs: - 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. 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: performance label: Performance description: | Performance settings for Nextcloud. schema: type: dict attrs: - variable: run_optimize label: Run Optimize description: | Runs some optimizations for Nextcloud.
See https://github.com/truenas/containers/blob/master/apps/nextcloud-fpm/configure-scripts/occ-optimize.sh schema: type: boolean default: true - variable: max_chunksize_mb label: Max Chunksize (MB) description: The maximum chunk size to use for chunked uploads. schema: type: int default: 10 min: 1 max: 1024 required: true - variable: php_upload_limit_gb label: PHP Upload Limit (GB) description: The maximum size of an uploaded file. schema: type: int default: 3 min: 1 required: true - variable: php_memory_limit_mb label: PHP Memory Limit (MB) description: The maximum amount of memory a script may consume. schema: type: int default: 512 min: 128 max: 4096 required: true - variable: general label: General description: General settings for Nextcloud. schema: type: dict attrs: - variable: maintenance_window_start label: Maintenance Window Start description: | The start of the maintenance window.
See https://docs.nextcloud.com/server/28/admin_manual/configuration_server/background_jobs_configuration.html#maintenance-window-start schema: type: int default: 100 min: 0 max: 100 required: true - variable: default_phone_region label: Default Phone Region description: The default phone region. schema: type: string default: US min_length: 2 max_length: 2 required: true - variable: previews label: Previews description: Previews settings for Nextcloud. schema: type: dict attrs: - variable: enabled label: Enabled description: Enable previews. schema: type: boolean default: true - variable: imaginary label: Imaginary description: | Enable Imaginary.
Enabling or Disabling this will trigger actions on each startup to ensure the configuration is either present or absent.
Actions like, update configuration, add/remove nextcloud app. schema: type: dict show_if: [["enabled", "=", true]] attrs: - variable: enabled label: Enabled description: Enable Imaginary. schema: type: boolean default: true - variable: max_x label: Max X description: The maximum width of the preview. schema: type: int default: 2048 required: true - variable: max_y label: Max Y description: The maximum height of the preview. schema: type: int default: 2048 required: true - variable: max_memory_mb label: Max Memory (MB) description: The maximum memory to use for the preview. schema: type: int default: 1024 required: true - variable: max_filesize_image_mb label: Max Filesize Image (MB) description: The maximum size of an image to use for the preview. schema: type: int default: 50 required: true - variable: jpeg_quality label: JPEG Quality description: The JPEG quality to use for the preview. schema: type: int default: 60 min: 1 max: 100 required: true - variable: square_sizes label: Square Sizes description: The square sizes to use for the preview. schema: type: list default: - 32 - 256 items: - variable: size label: Size schema: type: int min: 1 max: 1024 required: true - variable: width_sizes label: Width Sizes description: The width sizes to use for the preview. schema: type: list default: - 256 - 384 items: - variable: size label: Size schema: type: int min: 1 max: 1024 required: true - variable: height_sizes label: Height Sizes description: The height sizes to use for the preview. schema: type: list default: - 256 items: - variable: size label: Size schema: type: int min: 1 max: 1024 required: true - variable: providers label: Providers description: | The providers to use for the preview.
schema: type: list default: - BMP - GIF - JPEG - Krita - MarkDown - MP3 - OpenDocument - PNG - TXT - XBitmap items: - variable: provider label: Provider schema: type: string required: true enum: - value: BMP description: BMP - value: GIF description: GIF - value: JPEG description: JPEG - value: Krita description: Krita - value: MarkDown description: MarkDown - value: MP3 description: MP3 - value: OpenDocument description: OpenDocument - value: PNG description: PNG - value: TXT description: TXT - value: XBitmap description: XBitmap - value: Font description: Font - value: HEIC description: HEIC - value: Illustrator description: Illustrator - value: Movie description: Movie - value: MSOffice2003 description: MSOffice2003 - value: MSOffice2007 description: MSOffice2007 - value: MSOfficeDoc description: MSOfficeDoc - value: PDF description: PDF - value: Photoshop description: Photoshop - value: Postscript description: Postscript - value: StarOffice description: StarOffice - value: SVG description: SVG - value: TIFF description: TIFF - value: EMF description: EMF - variable: expirations label: Expirations description: Expirations settings for Nextcloud. schema: type: dict attrs: - variable: activity_expire_days label: Activity Expire Days description: The number of days to keep activity logs. schema: type: int default: 365 min: 1 required: true - variable: trash_retention label: Trash Retention description: | See https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/trashbin_configuration.html#deleted-items-trash-bin schema: type: string default: auto required: true - variable: versions_retention label: Versions Retention description: | See https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/file_versioning.html schema: type: string default: auto required: true - variable: cron label: Cron description: Cron settings for Nextcloud. schema: type: dict attrs: - variable: tasks label: Tasks description: | Only add here additional (custom) cron tasks.
The Nextcloud's default cron task is already scheduled.
schema: type: list default: [] items: - variable: task label: Task schema: type: dict attrs: - variable: schedule label: Schedule description: The cron schedule. schema: type: string default: "*/15 * * * *" required: true - variable: command label: Command description: The command to run. schema: type: string required: true private: true - variable: notify_push label: Notify Push description: | Notify Push settings for Nextcloud.
Enabling or Disabling this will trigger actions on each startup to ensure the configuration is either present or absent.
Actions like, update configuration, add/remove nextcloud app. schema: type: dict attrs: - variable: enabled label: Enabled description: Enable Notify Push container schema: type: boolean default: true - variable: collabora label: Collabora description: | Collabora settings for Nextcloud.
Enabling or Disabling this will trigger actions on each startup to ensure the configuration is either present or absent.
Actions like, update configuration, add/remove nextcloud app. schema: type: dict attrs: - variable: enabled label: Enabled description: Enable Collabora schema: type: boolean default: false - variable: url label: URL description: | The URL to use for Collabora.
https://collabora.example.com schema: type: string show_if: [["enabled", "=", true]] required: true - variable: internal_url label: Internal URL description: | The internal URL to use for Collabora.
This URL needs to be accessible from the Nextcloud container.
But not required to be accessible from the outside (ie clients).
schema: type: string show_if: [["enabled", "=", true]] default: http://host.docker.internal:9980 required: true - variable: allowlist label: Allowlist description: | The allowlist to use for Collabora.
Example: 0.0.0.0/0 schema: type: list show_if: [["enabled", "=", true]] default: ["0.0.0.0/0"] items: - variable: allow label: Allow schema: type: string required: true - variable: onlyoffice label: Onlyoffice description: | Onlyoffice settings for Nextcloud.
Enabling or Disabling this will trigger actions on each startup to ensure the configuration is either present or absent.
Actions like, update configuration, add/remove nextcloud app. schema: type: dict attrs: - variable: enabled label: Enabled description: Enable Onlyoffice schema: type: boolean default: false - variable: url label: URL description: | The URL to use for Onlyoffice.
https://onlyoffice.example.com schema: type: string show_if: [["enabled", "=", true]] required: true - variable: jwt_secret label: JWT Secret description: | The JWT secret to use for Onlyoffice.
Example: random_string_of_characters schema: type: string show_if: [["enabled", "=", true]] required: true - variable: jwt_header label: JWT Header description: | The JWT header to use for Onlyoffice.
Example: Authorization schema: type: string show_if: [["enabled", "=", true]] default: Authorization required: true - variable: clamav label: Clamav description: Clamav settings for Nextcloud. schema: type: dict attrs: - variable: enabled label: Enabled description: Enable Clamav schema: type: boolean default: false - variable: host label: Host description: | The host to use for Clamav.
Do NOT include the protocol or the port.
Examples:
- clamav.example.com - 192.168.1.100 (replace ip and port with your own) schema: type: string show_if: [["enabled", "=", true]] required: true - variable: port label: Port description: | The port to use for Clamav.
Example: 3310 schema: type: int show_if: [["enabled", "=", true]] default: 3310 min: 1 max: 65535 required: true - variable: file_max_size label: File Max Size description: | The maximum size of a file to scan.
Example: -1 (unlimited) schema: type: int show_if: [["enabled", "=", true]] default: -1 min: -1 required: true - variable: infected_action label: Infected Action description: | The action to take when a file is infected.
Example: only_log schema: type: string show_if: [["enabled", "=", true]] default: only_log required: true enum: - value: only_log description: Only log - value: delete description: Delete - variable: urls label: URLs description: URLs settings for Nextcloud. schema: type: dict attrs: - variable: protocol label: Protocol description: | The protocol you use to access Nextcloud.
For example if you use a reverse proxy, you most likely want to use https.
If you setup a certificate on the network section, https will be used automatically. schema: type: string default: http required: true enum: - value: http description: HTTP - value: https description: HTTPS - variable: host label: Host description: | The host you use to access Nextcloud.
Do NOT include the protocol or the port.
Examples:
- cloud.domain.com
- 192.168.1.100 (replace ip and port with your own) schema: type: string default: "" required: true - variable: external_port label: External Port description: | The external port you use to access Nextcloud.
If you use a reverse proxy, you most likely want to use 443.
Leave it at `0` if you are not using anything else in-front of Nextcloud.
Example: 443 schema: type: int "null": true min: 1 max: 65535 - variable: trusted_domains label: Trusted Domains description: | Additional trusted domains to use for Nextcloud.
Automatically added: - The `host` you set above - Hosts of Collabora and/or Onlyoffice schema: type: list default: [] items: - variable: domain label: Domain schema: type: string required: true - variable: trusted_proxies label: Trusted Proxies description: Trusted proxies to use for Nextcloud. schema: type: list default: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 items: - variable: proxy label: Proxy schema: type: string 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: run_as label: "" group: User and Group Configuration schema: type: dict attrs: - variable: user label: User ID description: The user id that Nextcloud files will be owned by. schema: type: int min: 568 default: 568 required: true - variable: group label: Group ID description: The group id that Nextcloud files will be owned by. schema: type: int min: 568 default: 568 required: true - 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 default: 30125 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: certificate_id label: Certificate ID description: The certificate ID to use for Nextcloud. schema: type: int "null": true $ref: - "definitions/certificate" # - 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 (Mounted at /nc-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: notify-push description: notify-push - 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: []