version: '3.9'
services:
    nango-db:
        image: postgres:16.0-alpine
        container_name: nango-db
        environment:
            POSTGRES_PASSWORD: nango
            POSTGRES_USER: nango
            POSTGRES_DB: nango
        ports:
            - '${NANGO_DB_PORT:-5432}:5432'
        volumes:
            - ./nango-data:/var/lib/postgresql/data
        networks:
            - nango

    nango-server:
        # It's recommended to pin the version using the commit hash tag or a version tag
        # https://hub.docker.com/r/nangohq/nango-server/tags
        image: nangohq/nango-server:hosted
        container_name: nango-server
        platform: linux/amd64
        environment:
            - NANGO_ENCRYPTION_KEY
            - NANGO_DB_USER
            - NANGO_DB_PASSWORD
            - NANGO_DB_HOST=${NANGO_DB_HOST:-nango-db}
            - NANGO_DB_NAME
            - NANGO_DB_SSL
            - NANGO_DB_ADDITIONAL_SCHEMAS
            - NANGO_DB_POOL_MIN
            - NANGO_DB_POOL_MAX
            - RECORDS_DATABASE_URL=${RECORDS_DATABASE_URL:-postgresql://nango:nango@nango-db:5432/nango}
            - SERVER_PORT
            - CSP_REPORT_ONLY=true
            - NANGO_SERVER_URL=${NANGO_SERVER_URL:-http://localhost:3003}
            - NANGO_PUBLIC_SERVER_URL=${NANGO_PUBLIC_SERVER_URL:-http://localhost:3000}
            - FLAG_AUTH_ENABLED
            - NANGO_DASHBOARD_USERNAME
            - NANGO_DASHBOARD_PASSWORD
            - LOG_LEVEL=${LOG_LEVEL:-info}
            - NANGO_SERVER_WEBSOCKETS_PATH
            - NANGO_LOGS_ENABLED=${NANGO_LOGS_ENABLED:-false}
            - NANGO_LOGS_PROVIDER=${NANGO_LOGS_PROVIDER:-elasticsearch}
            - NANGO_LOGS_ES_URL=${NANGO_LOGS_ES_URL:-http://nango-elasticsearch:9200}
            - NANGO_LOGS_ES_USER
            - NANGO_LOGS_ES_PWD
            - FLAG_SERVE_CONNECT_UI=${FLAG_SERVE_CONNECT_UI:-true}
            - NANGO_PUBLIC_CONNECT_URL
        volumes:
            - './packages/providers/providers.yaml:/app/nango/packages/providers/providers.yaml'
        restart: always
        ports:
            - '${SERVER_PORT:-3003}:${SERVER_PORT:-3003}'
            - '${CONNECT_UI_PORT:-3009}:${CONNECT_UI_PORT:-3009}'
        depends_on:
            - nango-db
            # - nango-elasticsearch
        networks:
            - nango

    nango-redis:
        image: redis:7.2.4
        container_name: nango-redis
        ports:
            - '6379:6379'
        networks:
            - nango
    #
    # Optional dependency
    # To load elasticsearch, set NANGO_LOGS_ENABLED=true in nango-server and uncomment this dependency
    # nango-elasticsearch:
    #     image: elasticsearch:8.13.0
    #     container_name: nango-elasticsearch
    #     ulimits:
    #         memlock:
    #             soft: -1
    #             hard: -1
    #     volumes:
    #         - elasticsearch-data1:/usr/share/elasticsearch/data
    #     ports:
    #         - 9500:9200
    #         - 9600:9300
    #     environment:
    #         - discovery.type=single-node
    #         - xpack.security.enabled=false
    #     networks:
    #         - nango

networks:
    nango:

volumes:
    elasticsearch-data1:
        driver: local