captainVersion: 4
services:
    $$cap_appname-db:
        documentation: Taken from https://hub.docker.com/_/mariadb
        image: mariadb:$$cap_mariadb_version
        volumes:
            - $$cap_appname-db-data:/var/lib/mysql
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: $$cap_db_pass
            MYSQL_DATABASE: nextcloud
            MYSQL_USER: $$cap_db_user
            MYSQL_PASSWORD: $$cap_db_pass
        caproverExtra:
            notExposeAsWebApp: 'true'
    $$cap_appname:
        depends_on:
            - $$cap_appname-db
        documentation: Taken from https://hub.docker.com/_/nextcloud
        image: nextcloud:$$cap_nextcloud_version
        volumes:
            - $$cap_appname-data:/var/www/html
        restart: always
        environment:
            OVERWRITEPROTOCOL: $$cap_http_https_cors
            MYSQL_DATABASE: nextcloud
            MYSQL_USER: $$cap_db_user
            MYSQL_PASSWORD: $$cap_db_pass
            MYSQL_HOST: srv-captain--$$cap_appname-db
            NEXTCLOUD_ADMIN_USER: $$cap_admin_user
            NEXTCLOUD_ADMIN_PASSWORD: $$cap_admin_pass
            NEXTCLOUD_TRUSTED_DOMAINS: $$cap_appname.$$cap_root_domain
    $$cap_appname-cron:
        depends_on:
            - $$cap_appname-db
            - $$cap_appname
        documentation: https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb-cron-redis/apache/docker-compose.yml
        restart: always
        volumes:
            - $$cap_appname-data:/var/www/html
        caproverExtra:
            dockerfileLines:
                - FROM nextcloud:$$cap_nextcloud_version
                - 'ENTRYPOINT [ "/cron.sh" ] '
            notExposeAsWebApp: 'true'
caproverOneClickApp:
    variables:
        - id: $$cap_nextcloud_version
          label: NextCloud Version
          defaultValue: 19.0.0
          description: >-
              Check out their Docker page for the valid tags https://hub.docker.com/r/library/nextcloud/tags/


              do not use fpm versions.
          validRegex: /^([^\s^\/])+$/
        - id: $$cap_mariadb_version
          label: MariaDB (database) version
          defaultValue: 10.5.3
          description: Check out their Docker page for the valid tags https://hub.docker.com/_/mariadb?tab=tags
          validRegex: /^([^\s^\/])+$/
        - id: $$cap_db_pass
          label: database password
          description: Password for the database user and root using mysql.
          validRegex: /.{1,}/
        - id: $$cap_db_user
          label: database user
          defaultValue: nextcloud
          description: Username for the database using mysql.
          validRegex: /^([a-zA-Z0-9])+$/
        - id: $$cap_admin_user
          label: admin name
          defaultValue: admin
          description: Name of the Nextcloud admin user.
          validRegex: /^([a-zA-Z0-9\@\.])+$/
        - id: $$cap_admin_pass
          label: admin password
          description: Password for the Nextcloud admin user.
          validRegex: /.{1,}/
        - id: $$cap_http_https_cors
          label: Protocol of proxy
          defaultValue: https
          description: Choose either http or https. cors configuration to login are set by the docker image, if you do not set this same as your proxy configuration, login will fail
          validRegex: /^http[s]?$/
    instructions:
        start: A safe home for all your data. Access & share your files, calendars, contacts, mail & more from any device, on your terms. http://Nextcloud.com
        end: >-
            NextCloud is deployed and will be available on few minutes as $$cap_appname.

            If you set the cors sections to https, please enable https on your app. If you do not activate it you will have an error.


            For better performances and compliance, you can add "add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;" below "proxy_set_header X-Forwarded-Proto $scheme;" into the nginx configuration.
    displayName: nextcloud
    isOfficial: true
    description: Nextcloud is a suite of client-server software for creating and using file hosting services
    documentation: Taken from https://hub.docker.com/_/nextcloud
