version: '3.7' x-common-variables: &common-variables HOST: ${HOST} HTTP_PROTOCOL: ${HTTP_PROTOCOL} OTEL_COLLECTOR_HOST: ${OTEL_COLLECTOR_HOST} FLUENTD_HOST: ${FLUENTD_HOST} NODE_ENV: ${ENVIRONMENT} BILLING_ENABLED: ${BILLING_ENABLED} BILLING_PUBLIC_KEY: ${BILLING_PUBLIC_KEY} SUBSCRIPTION_PLAN_BASIC: ${SUBSCRIPTION_PLAN_BASIC} SUBSCRIPTION_PLAN_GROWTH: ${SUBSCRIPTION_PLAN_GROWTH} SUBSCRIPTION_PLAN_SCALE: ${SUBSCRIPTION_PLAN_SCALE} SUBSCRIPTION_PLAN_ENTERPRISE: ${SUBSCRIPTION_PLAN_ENTERPRISE} ANALYTICS_KEY: ${ANALYTICS_KEY} ANALYTICS_HOST: ${ANALYTICS_HOST} SERVER_ACCOUNTS_HOSTNAME: accounts SERVER_REALTIME_HOSTNAME: realtime SERVER_APP_HOSTNAME: app SERVER_ALERT_HOSTNAME: alert SERVER_INGESTOR_HOSTNAME: ingestor SERVER_TEST_SERVER_HOSTNAME: test-server SERVER_STATUS_PAGE_HOSTNAME: status-page SERVER_DASHBOARD_HOSTNAME: dashboard SERVER_ADMIN_DASHBOARD_HOSTNAME: admin-dashboard SERVER_OTEL_COLLECTOR_HOSTNAME: otel-collector #Ports. Usually they don't need to change. APP_PORT: ${APP_PORT} INGESTOR_PORT: ${INGESTOR_PORT} PROBE_PORT: ${PROBE_PORT} TEST_SERVER_PORT: ${TEST_SERVER_PORT} ACCOUNTS_PORT: ${ACCOUNTS_PORT} STATUS_PAGE_PORT: ${STATUS_PAGE_PORT} DASHBOARD_PORT: ${DASHBOARD_PORT} ADMIN_DASHBOARD_PORT: ${ADMIN_DASHBOARD_PORT} x-common-ui-variables: &common-ui-variables <<: *common-variables IS_SERVER: "false" STATUS_PAGE_CNAME_RECORD: ${STATUS_PAGE_CNAME_RECORD} x-common-server-variables: &common-server-variables <<: *common-variables ONEUPTIME_SECRET: ${ONEUPTIME_SECRET} DATABASE_PORT: ${DATABASE_PORT} DATABASE_USERNAME: ${DATABASE_USERNAME} DATABASE_PASSWORD: ${DATABASE_PASSWORD} DATABASE_NAME: ${DATABASE_NAME} DATABASE_HOST: ${DATABASE_HOST} DATABASE_SSL_CA: ${DATABASE_SSL_CA} DATABASE_SSL_KEY: ${DATABASE_SSL_KEY} DATABASE_SSL_CERT: ${DATABASE_SSL_CERT} DATABASE_SSL_REJECT_UNAUTHORIZED: ${DATABASE_SSL_REJECT_UNAUTHORIZED} REDIS_USERNAME: ${REDIS_USERNAME} REDIS_PASSWORD: ${REDIS_PASSWORD} REDIS_HOST: ${REDIS_HOST} REDIS_PORT: ${REDIS_PORT} REDIS_DB: ${REDIS_DB} REDIS_TLS_CA: ${REDIS_TLS_CA} REDIS_TLS_SENTINEL_MODE: ${REDIS_TLS_SENTINEL_MODE} ENCRYPTION_SECRET: ${ENCRYPTION_SECRET} BILLING_PRIVATE_KEY: ${BILLING_PRIVATE_KEY} BILLING_PUBLIC_KEY: ${BILLING_PUBLIC_KEY} BILLING_ENABLED: ${BILLING_ENABLED} CLICKHOUSE_USER: ${CLICKHOUSE_USER} CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} CLICKHOUSE_DATABASE: ${CLICKHOUSE_DATABASE} CLICKHOUSE_HOST: ${CLICKHOUSE_HOST} CLICKHOUSE_PORT: ${CLICKHOUSE_PORT} IS_SERVER: "true" DISABLE_AUTOMATIC_INCIDENT_CREATION: ${DISABLE_AUTOMATIC_INCIDENT_CREATION} services: haraka: networks: - oneuptime image: oneuptime/haraka:${APP_TAG} restart: always environment: SMTP_PASSWORD: ${INTERNAL_SMTP_PASSWORD} SMTP_EMAIL: ${INTERNAL_SMTP_EMAIL} DKIM_SELECTOR: oneuptime DOMAIN: ${INTERNAL_SMTP_SENDING_DOMAIN} DKIM_PRIVATE_KEY: ${INTERNAL_SMTP_DKIM_PRIVATE_KEY_AS_BASE64} DKIM_PUBLIC_KEY: ${INTERNAL_SMTP_DKIM_PUBLIC_KEY_AS_BASE64} logging: driver: "local" options: max-size: "1000m" redis: image: redis:7.0.12 restart: always networks: - oneuptime command: redis-server --requirepass "${REDIS_PASSWORD}" --save "" --appendonly no environment: REDIS_PASSWORD: ${REDIS_PASSWORD} logging: driver: "local" options: max-size: "1000m" clickhouse: image: clickhouse/clickhouse-server:23.7 restart: always environment: CLICKHOUSE_USER: ${CLICKHOUSE_USER} CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} CLICKHOUSE_DB: ${CLICKHOUSE_DATABASE} CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1 networks: - oneuptime volumes: - clickhouse:/var/lib/clickhouse/ logging: driver: "local" options: max-size: "1000m" postgres: image: postgres:15 restart: always environment: POSTGRES_USER: ${DATABASE_USERNAME} POSTGRES_PASSWORD: ${DATABASE_PASSWORD} POSTGRES_DB: ${DATABASE_NAME} networks: - oneuptime volumes: - postgres:/var/lib/postgresql/data logging: driver: "local" options: max-size: "1000m" accounts: networks: - oneuptime restart: always environment: <<: *common-ui-variables PORT: ${ACCOUNTS_PORT} OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT: ${CLIENT_OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT} OPENTELEMETRY_EXPORTER_OTLP_HEADERS: ${ACCOUNTS_OPENTELEMETRY_EXPORTER_OTLP_HEADERS} logging: driver: "local" options: max-size: "1000m" admin-dashboard: networks: - oneuptime restart: always environment: <<: *common-ui-variables PORT: ${ADMIN_DASHBOARD_PORT} OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT: ${CLIENT_OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT} OPENTELEMETRY_EXPORTER_OTLP_HEADERS: ${ADMIN_DASHBOARD_OPENTELEMETRY_EXPORTER_OTLP_HEADERS} logging: driver: "local" options: max-size: "1000m" dashboard: networks: - oneuptime restart: always environment: <<: *common-ui-variables PORT: ${DASHBOARD_PORT} OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT: ${CLIENT_OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT} OPENTELEMETRY_EXPORTER_OTLP_HEADERS: ${DASHBOARD_OPENTELEMETRY_EXPORTER_OTLP_HEADERS} logging: driver: "local" options: max-size: "1000m" status-page: networks: - oneuptime restart: always environment: <<: *common-ui-variables PORT: ${STATUS_PAGE_PORT} OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT: ${CLIENT_OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT} OPENTELEMETRY_EXPORTER_OTLP_HEADERS: ${STATUS_PAGE_OPENTELEMETRY_EXPORTER_OTLP_HEADERS} logging: driver: "local" options: max-size: "1000m" test-server: networks: - oneuptime restart: always environment: <<: *common-server-variables PORT: ${TEST_SERVER_PORT} logging: driver: "local" options: max-size: "1000m" app: networks: - oneuptime restart: always environment: <<: *common-server-variables PORT: ${APP_PORT} SMS_DEFAULT_COST_IN_CENTS: ${SMS_DEFAULT_COST_IN_CENTS} CALL_DEFAULT_COST_IN_CENTS_PER_MINUTE: ${CALL_DEFAULT_COST_IN_CENTS_PER_MINUTE} SMS_HIGH_RISK_COST_IN_CENTS: ${SMS_HIGH_RISK_COST_IN_CENTS} CALL_HIGH_RISK_COST_IN_CENTS_PER_MINUTE: ${CALL_HIGH_RISK_COST_IN_CENTS_PER_MINUTE} INTERNAL_SMTP_EMAIL: ${INTERNAL_SMTP_EMAIL} INTERNAL_SMTP_FROM_NAME: ${INTERNAL_SMTP_FROM_NAME} INTERNAL_SMTP_PASSWORD: ${INTERNAL_SMTP_PASSWORD} OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT: ${SERVER_OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT} OPENTELEMETRY_EXPORTER_OTLP_HEADERS: ${APP_OPENTELEMETRY_EXPORTER_OTLP_HEADERS} logging: driver: "local" options: max-size: "1000m" probe-1: networks: - oneuptime restart: always environment: <<: *common-server-variables PORT: ${PROBE_PORT} PROBE_NAME: ${GLOBAL_PROBE_1_NAME} PROBE_DESCRIPTION: ${GLOBAL_PROBE_1_DESCRIPTION} PROBE_MONITORING_WORKERS: ${GLOBAL_PROBE_1_MONITORING_WORKERS} PROBE_KEY: ${GLOBAL_PROBE_1_KEY} ONEUPTIME_URL: ${GLOBAL_PROBE_1_ONEUPTIME_URL} PROBE_MONITOR_FETCH_LIMIT: ${GLOBAL_PROBE_1_MONITOR_FETCH_LIMIT} OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT: ${SERVER_OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT} OPENTELEMETRY_EXPORTER_OTLP_HEADERS: ${PROBE_OPENTELEMETRY_EXPORTER_OTLP_HEADERS} logging: driver: "local" options: max-size: "1000m" probe-2: networks: - oneuptime restart: always environment: <<: *common-server-variables PORT: ${PROBE_PORT} PROBE_NAME: ${GLOBAL_PROBE_2_NAME} PROBE_DESCRIPTION: ${GLOBAL_PROBE_2_DESCRIPTION} PROBE_MONITORING_WORKERS: ${GLOBAL_PROBE_2_MONITORING_WORKERS} PROBE_KEY: ${GLOBAL_PROBE_2_KEY} ONEUPTIME_URL: ${GLOBAL_PROBE_2_ONEUPTIME_URL} PROBE_MONITOR_FETCH_LIMIT: ${GLOBAL_PROBE_2_MONITOR_FETCH_LIMIT} OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT: ${SERVER_OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT} OPENTELEMETRY_EXPORTER_OTLP_HEADERS: ${PROBE_OPENTELEMETRY_EXPORTER_OTLP_HEADERS} logging: driver: "local" options: max-size: "1000m" otel-collector: networks: - oneuptime environment: <<: *common-variables restart: always logging: driver: "local" options: max-size: "1000m" fluentd: networks: - oneuptime restart: always logging: driver: "local" options: max-size: "1000m" ingestor: networks: - oneuptime restart: always environment: <<: *common-server-variables PORT: ${INGESTOR_PORT} logging: driver: "local" options: max-size: "1000m" ingress: restart: always networks: - oneuptime environment: <<: *common-server-variables ports: - '${ONEUPTIME_HTTP_PORT}:80' - '${ONEUPTIME_HTTPS_PORT}:443' logging: driver: "local" options: max-size: "1000m" volumes: postgres: clickhouse: networks: oneuptime: driver: bridge