# ============================================================================= # TELEMETRY OFFLINE - AIR-GAPPED OBSERVABILITY # ============================================================================= # Offline-compatible telemetry stack for air-gapped deployments. # Does not require external connectivity. # # Usage: # docker compose -f docker-compose.telemetry-offline.yml up -d # # For online deployments, use docker-compose.telemetry.yml instead. # ============================================================================= services: loki: image: grafana/loki:3.0.1 container_name: stellaops-loki-offline command: ["-config.file=/etc/loki/local-config.yaml"] volumes: - loki-data:/loki - ../offline/airgap/observability/loki-config.yaml:/etc/loki/local-config.yaml:ro ports: - "${LOKI_PORT:-3100}:3100" networks: - sealed restart: unless-stopped promtail: image: grafana/promtail:3.0.1 container_name: stellaops-promtail-offline command: ["-config.file=/etc/promtail/config.yml"] volumes: - promtail-data:/var/log - ../offline/airgap/promtail-config.yaml:/etc/promtail/config.yml:ro networks: - sealed restart: unless-stopped otel-collector: image: otel/opentelemetry-collector-contrib:0.97.0 container_name: stellaops-otel-offline command: ["--config=/etc/otel/config.yaml"] volumes: - ../offline/airgap/otel-offline.yaml:/etc/otel/config.yaml:ro - otel-data:/var/otel ports: - "${OTEL_GRPC_PORT:-4317}:4317" - "${OTEL_HTTP_PORT:-4318}:4318" networks: - sealed restart: unless-stopped tempo: image: grafana/tempo:2.4.1 container_name: stellaops-tempo-offline command: ["-config.file=/etc/tempo/config.yaml"] volumes: - tempo-data:/var/tempo - ../offline/airgap/observability/tempo-config.yaml:/etc/tempo/config.yaml:ro ports: - "${TEMPO_PORT:-3200}:3200" networks: - sealed restart: unless-stopped prometheus: image: prom/prometheus:v2.51.0 container_name: stellaops-prometheus-offline command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--storage.tsdb.retention.time=15d' volumes: - prometheus-data:/prometheus - ../offline/airgap/observability/prometheus.yml:/etc/prometheus/prometheus.yml:ro ports: - "${PROMETHEUS_PORT:-9090}:9090" networks: - sealed restart: unless-stopped networks: sealed: driver: bridge volumes: loki-data: promtail-data: otel-data: tempo-data: prometheus-data: