captainVersion: 4
services:
    $$cap_appname-db:
        image: postgres:$$cap_postgres_version
        environment:
            POSTGRES_DB: $$cap_postgres_db
            POSTGRES_USER: $$cap_postgres_user
            POSTGRES_PASSWORD: $$cap_postgres_password
        volumes:
            - '$$cap_appname-db-data:/var/lib/postgresql/data'
        caproverExtra:
            notExposeAsWebApp: 'true'

    $$cap_appname:
        environment:
            CONFIG_JSON: '{"serverRoot":"http://srv-captain--$$cap_appname:8000","port":8000,"dbtype":"postgres","dbconfig":"postgres://$$cap_postgres_user:$$cap_postgres_password@srv-captain--$$cap_appname-db/$$cap_postgres_db?sslmode=disable&connect_timeout=10","postgres_dbconfig":"dbname=$$cap_postgres_db sslmode=disable","useSSL":false,"webpath":"./pack","filespath":"./files","telemetry":false,"session_expire_time":2592000,"session_refresh_time":18000,"localOnly":false,"enableLocalMode":true,"localModeSocketLocation":"/var/tmp/focalboard_local.socket"}'
        depends_on:
            - $$cap_appname-db
        caproverExtra:
            containerHttpPort: '8000'
            dockerfileLines:
                - FROM mattermost/focalboard:$$cap_focalboard_version
                - CMD printenv CONFIG_JSON > /opt/focalboard/config.json && /opt/focalboard/bin/focalboard-server

caproverOneClickApp:
    variables:
        - id: $$cap_focalboard_version
          label: Focalboard Version
          defaultValue: 0.6.5
          description: 'Check out their docker page for the valid tags https://hub.docker.com/r/mattermost/focalboard/tags'
        - id: $$cap_postgres_version
          label: Postgres Version
          defaultValue: 9.6.21
          description: 'Check out their docker page for the valid tags https://hub.docker.com/_/postgres?tab=tags'
        - id: $$cap_postgres_db
          label: Postgres Database
          defaultValue: boards
        - id: $$cap_postgres_user
          label: Postgres User
          defaultValue: boardsuser
        - id: $$cap_postgres_password
          label: Postgres Password
          defaultValue: $$cap_gen_random_hex(16)

    instructions:
        start: >-
            Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.
            For more info visit https://www.focalboard.com/
        end: |-
            Focalboard has been successfully deployed!

            --------------------------------------------

            Before you proceed, please enable Websocket Support
            https://$$cap_root_domain/#/apps/details/$$cap_appname

            --------------------------------------------

            App is available as http://$$cap_appname.$$cap_root_domain
    displayName: Focalboard
    isOfficial: false
    description: >-
        Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.
    documentation: >-
        This docker-compose is taken from
        https://github.com/mattermost/focalboard/blob/main/docker/docker-compose-db-nginx.yml
