# MadBase - Pillar: System # Control Plane API + Observability Stack (VM, Loki, Grafana) services: victoriametrics: image: victoriametrics/victoria-metrics:latest container_name: madbase_vm ports: - "8428:8428" volumes: - madbase_vm_data:/victoria-metrics-data - ./config/prometheus.yml:/etc/prometheus/prometheus.yml command: - "--storageDataPath=/victoria-metrics-data" - "--httpListenAddr=:8428" - "--promscrape.config=/etc/prometheus/prometheus.yml" restart: unless-stopped loki: image: grafana/loki:latest container_name: madbase_loki ports: - "3100:3100" command: -config.file=/etc/loki/local-config.yaml volumes: - madbase_loki_data:/loki restart: unless-stopped grafana: image: grafana/grafana:latest container_name: madbase_grafana ports: - "3030:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-admin} volumes: - madbase_grafana_data:/var/lib/grafana depends_on: - victoriametrics - loki restart: unless-stopped control: build: context: . target: control-runtime image: madbase/control:latest container_name: madbase_control ports: - "8001:8001" environment: - DATABASE_URL=${DATABASE_URL} - HETZNER_API_KEY=${HETZNER_API_KEY} - HETZNER_SSH_KEY_PATH=${HETZNER_SSH_KEY_PATH} restart: unless-stopped volumes: madbase_vm_data: madbase_loki_data: madbase_grafana_data: