Skip to main content
Run the gateway on a single host with Docker Compose. Save the compose file as compose.yml, put a .env beside it, then run:
docker compose up -d
The gateway listens on port 8080. Check that it is healthy:
curl http://localhost:8080/status
Pick the mode that matches your deployment. Get LICENSE_KEY (and, in connected mode, EDGEE_SIGNATURE_KEY) from the Edgee Console under Org settings → On-Premise → Reveal deployment secrets.
The gateway fetches its configuration from Edgee on startup and keeps it in sync, and reports telemetry to your own OTLP collector.
compose.yml
services:
  gateway:
    image: ghcr.io/edgee-ai/gateway:latest
    ports:
      - "8080:8080"
    environment:
      ENV: prod
      # Identifies your org and authorizes the gateway to pull its config from Edgee.
      LICENSE_KEY: ${LICENSE_KEY}
      EDGEE_SIGNATURE_KEY: ${EDGEE_SIGNATURE_KEY}
      # Telemetry: export usage to Edgee for the team dashboard.
      TELEMETRY_ENABLED: "true"
      OTEL_EXPORTER_OTLP_ENDPOINT: https://onprem-logs.edgee.ai/v1/logs
    restart: unless-stopped
.env
LICENSE_KEY=<reveal in console>
EDGEE_SIGNATURE_KEY=<reveal in console>
In connected mode the gateway also exports usage metering to Edgee at https://onprem-logs.edgee.ai/v1/logs, authenticated with your LICENSE_KEY, so usage shows up in the team dashboard. Override the destination with USAGE_OTLP_ENDPOINT (and USAGE_OTLP_HEADERS) to send it to your own collector instead.
Keep LICENSE_KEY and EDGEE_SIGNATURE_KEY out of version control. Store them in the .env file (add it to .gitignore) or inject them from your secret manager.
For production, pin the image to a released tag (for example ghcr.io/edgee-ai/gateway:1.9.0) instead of latest, so upgrades are deliberate.