captainVersion: 4
services:
    $$cap_appname:
        depends_on:
            - $$cap_appname-db
        image: 'squidex/squidex:$$cap_squidex_version'
        volumes:
            - '$$cap_appname-data:/app/Assets'
        restart: always
        environment:
            URLS__BASEURL: 'https://$$cap_appname.$$cap_root_domain'
            URLS__ENFORCEHTTPS: 'True'
            EVENTSTORE__MONGODB__CONFIGURATION: 'mongodb://root:$$cap_mongo_password@srv-captain--$$cap_appname-db'
            STORE__MONGODB__CONFIGURATION: 'mongodb://root:$$cap_mongo_password@srv-captain--$$cap_appname-db'
            IDENTITY__ADMINEMAIL: $$cap_admin_email
            IDENTITY__ADMINPASSWORD: $$cap_admin_password
            IDENTITY__GOOGLECLIENT: $$cap_google_client
            IDENTITY__GOOGLESECRET: $$cap_google_secret
            IDENTITY__GITHUBCLIENT: $$cap_github_client
            IDENTITY__GITHUBSECRET: $$cap_github_secret
            IDENTITY__MICROSOFTCLIENT: $$cap_microsoft_client
            IDENTITY__MICROSOFTSECRET: $$cap_microsoft_secret
            LETSENCRYPT_HOST: $$cap_appname.$$cap_root_domain
            LETSENCRYPT_EMAIL: $$cap_admin_email
            VIRTUAL_HOST: $$cap_appname.$$cap_root_domain
    $$cap_appname-db:
        image: 'mongo:$$cap_mongo_version'
        volumes:
            - '$$cap_appname-db-data:/data/db'
            - '$$cap_appname-db-config:/data/configdb'
        restart: always
        environment:
            MONGO_INITDB_DATABASE: squidex
            MONGO_INITDB_ROOT_USERNAME: root
            MONGO_INITDB_ROOT_PASSWORD: $$cap_mongo_password
        caproverExtra:
            notExposeAsWebApp: 'true'
caproverOneClickApp:
    variables:
        - id: $$cap_squidex_version
          label: Squidex Version
          defaultValue: 4.6.0
          description: >-
              Check out their page for the valid versions
              https://hub.docker.com/r/squidex/squidex/tags
          validRegex: '/^([^\s^\/])+$/'
        - id: $$cap_mongo_version
          label: MongoDB Version
          defaultValue: '4'
          description: >-
              Check out their Docker page for the valid tags
              https://hub.docker.com/r/library/mongo/tags/
          validRegex: '/^([a-zA-Z0-9])+$/'
        - id: $$cap_mongo_password
          label: MongoDB password
          description: Only use alphanumeric chars.
          validRegex: '/^([a-zA-Z0-9])+$/'
        - id: $$cap_admin_email
          label: Admin Email
          description: The Email which is gonna be used to login as administrator.
          validRegex: >-
              /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
        - id: $$cap_admin_password
          label: Admin Password
          description: >-
              The password which is gonna be used to login as administrator.(Minimum
              eight characters, at least one letter, one number and one special
              character:)
          validRegex: '/^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/'
        - id: $$cap_microsoft_client
          label: Microsoft Client Id(Optional)
          description: The client id from Microsoft in order to enable MS Login.
        - id: $$cap_microsoft_secret
          label: Microsoft Secret Token(Optional)
          description: The secret token from Microsoft in order to enable MS Login.
        - id: $$cap_github_client
          label: Github Client Id(Optional)
          description: The client id from Github in order to enable Github Login.
        - id: $$cap_github_secret
          label: Github Secret Token(Optional)
          description: The secret token from Github in order to enable Github Login.
        - id: $$cap_google_client
          label: Google Client Id(Optional)
          description: The client id from Google in order to enable Google Login.
        - id: $$cap_google_secret
          label: Google Secret Token(Optional)
          description: The secret token from Google in order to enable Google Login.
    instructions:
        start: >-
            Squidex is an open source headless CMS and content management hub. In
            contrast to a traditional CMS Squidex provides a rich API with OData
            filter and Swagger definitions. It is up to you to build your UI on top of
            it. It can be website, a native app or just another server. It is built
            with ASP.NET Core and CQRS and is tested for Windows and Linux on modern
            browsers.
        end: |-
            Squidex is deployed and available as $$cap_appname 
            You'll need also to enable https in order to make this app work.

            IMPORTANT!! Don't forget to change the URLS__BASEURL,LETSENCRYPT_HOST and VIRTUAL_HOST variable if you change your URL.

            IMPORTANT!! It takes up to 2-5 minutes for Squidex to boot up. You will see a 502 Error until the startup is finished.
    displayName: ''
    isOfficial: true
    description: Squidex is an open source headless CMS and content management hub.
    documentation: >-
        Taken from
        https://github.com/Squidex/squidex-docker/blob/master/standalone/docker-compose.yml
