Skip to content

EDOS deployment quickref (agents)

Audience: Agent

Use this page for fast implementation/deploy tasks. For full rationale and edge cases, read DEPLOYMENT.md.

Objective

Ship a service that can be deployed on the existing production Docker host with:

docker compose pull
docker compose up -d

Required shape

  1. Repo root contains docker-compose.yaml (or .yml).
  2. Service joins external traefik network.
  3. Traefik labels follow existing pattern (websecure, letsencrypt, http-redirectscheme).
  4. image: points to pullable registry image (pinned tag preferred).
  5. loadbalancer.server.port equals the container's internal listen port.

Label pattern (copy and adapt)

services:
  SERVICE_KEY:
    image: registry.gitlab.com/elite-dangerous1/PROJECT_NAME:IMAGE_TAG
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.ROUTER_NAME.rule=Host(`HOST_FQDN`)"
      - "traefik.http.routers.ROUTER_NAME.entrypoints=websecure"
      - "traefik.http.services.BACKEND_SERVICE_NAME.loadbalancer.server.port=CONTAINER_PORT"
      - "traefik.http.routers.ROUTER_NAME.tls=true"
      - "traefik.http.routers.ROUTER_NAME.tls.certresolver=letsencrypt"
      - "traefik.http.middlewares.http-redirectscheme.redirectscheme.scheme=https"
      - "traefik.http.middlewares.http-redirectscheme.redirectscheme.permanent=true"
    networks:
      - traefik

networks:
  traefik:
    external: true

Existing production references

  • elite-dangerous-surface-map/docker-compose.yaml
  • elite-dangerous-remote-journal-reader/docker-compose.yaml
  • api-cache-server/docker-compose.yml
  • docs-deploy/docker-compose.yaml (docs host)

Minimal rollout steps

  1. Copy compose file to server directory (for example /home/root/projects/PROJECT_DIR/docker-compose.yaml).
  2. Run:
  3. docker compose pull
  4. docker compose up -d --remove-orphans
  5. Verify:
  6. docker compose ps
  7. docker compose logs --tail=200
  8. open https://HOST_FQDN

Agent checklist

  • Do not introduce direct community API calls from browsers (use cache/proxy pattern).
  • Keep IPC origin allowlists explicit if your app uses postMessage.
  • Record unknowns as TODO: Verify with concrete next step.