version: '3.9' services: db: image: mongo:5.0.14-focal volumes: - "{{ data_dir }}/mongo:/data/db" networks: - internal deploy: mode: replicated replicas: 1 # placement: # constraints: [node.role == worker] # DBs besser auf Workern lassen wenn möglich otel-collector: image: "clickhouse/clickstack-otel-collector:2" environment: CLICKHOUSE_ENDPOINT: 'tcp://ch-server:9000?dial_timeout=10s' HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE: "default" HYPERDX_LOG_LEVEL: "{{ hyperdx_log_level | default('info') }}" OPAMP_SERVER_URL: 'http://app:{{ hyperdx_opamp_port | default(4320) }}' ports: - "4317:4317" # OTLP gRPC - "4318:4318" # OTLP HTTP # - "8888:8888" # Metrics (optional) networks: - internal - shared-observability - traefik_public deploy: mode: replicated replicas: 3 labels: - "traefik.enable=true" - "traefik.docker.network=traefik_public" - "traefik.http.routers.otel-collector.rule=Host(`{{ otlp_domain }}`)" - "traefik.http.routers.otel-collector.entrypoints=https" - "traefik.http.routers.otel-collector.tls.certresolver=main" - "traefik.http.services.otel-collector.loadbalancer.server.port=4318" app: image: "hyperdx/hyperdx:2" environment: # URLs anpassen für Traefik Erreichbarkeit FRONTEND_URL: "https://{{ hdx_domain }}" HYPERDX_APP_URL: "https://{{ hdx_domain }}" HYPERDX_API_KEY: "{{ hyperdx_api_key }}" HYPERDX_API_PORT: "{{ hyperdx_api_port | default(8000) }}" HYPERDX_APP_PORT: "{{ hyperdx_app_port | default(8080) }}" HYPERDX_LOG_LEVEL: "{{ hyperdx_log_level | default('info') }}" MINER_API_URL: 'http://miner:5123' # Falls miner benötigt wird (in original compose nicht definiert?) MONGO_URI: 'mongodb://db:27017/hyperdx' SERVER_URL: "http://127.0.0.1:{{ hyperdx_api_port | default(8000) }}" OPAMP_PORT: "{{ hyperdx_opamp_port | default(4320) }}" OTEL_EXPORTER_OTLP_ENDPOINT: 'http://otel-collector:4318' OTEL_SERVICE_NAME: 'hdx-oss-app' USAGE_STATS_ENABLED: "{{ usage_stats_enabled | default('false') }}" # Clickhouse Connection String (Default User/Pass from Clickhouse Image) DEFAULT_CONNECTIONS: >- [{"name":"Local ClickHouse","host":"http://ch-server:8123","username":"default","password":""}] DEFAULT_SOURCES: '{{ hyperdx_default_sources | to_json }}' networks: - internal - traefik_public deploy: labels: - "traefik.enable=true" - "traefik.docker.network=traefik_public" - "traefik.http.routers.hyperdx.rule=Host(`{{ subdomain }}.{{ main_domain }}`)" - "traefik.http.routers.hyperdx.entrypoints=https" - "traefik.http.routers.hyperdx.tls.certresolver=main" - "traefik.http.services.hyperdx.loadbalancer.server.port={{ hyperdx_app_port | default(8080) }}" ch-server: image: clickhouse/clickhouse-server:25.6-alpine environment: CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1 volumes: - "{{ data_dir }}/clickhouse/config/config.xml:/etc/clickhouse-server/config.xml" - "{{ data_dir }}/clickhouse/config/users.xml:/etc/clickhouse-server/users.xml" - "{{ data_dir }}/clickhouse/data:/var/lib/clickhouse" - "{{ data_dir }}/clickhouse/logs:/var/log/clickhouse-server" deploy: mode: replicated replicas: 1 # placement: # constraints: [node.role == worker] networks: - internal networks: internal: driver: overlay traefik_public: external: true shared-observability: external: true