Self-host

Deploy to a container platform

The image is a single stateless process on $PORT, it runs anywhere containers do. Here is what every target needs.

The Routeplane image is a single stateless process listening on $PORT, no database, no sidecar, no shared disk. That means it runs anywhere containers do: Kubernetes, ECS, Cloud Run, Fly, Nomad, or a plain Docker host. The observability buffer is intentionally in-memory, so horizontal replicas need no coordination.

What every target needs

ConcernWhat to wire
Ingress / portRoute external traffic to the container's $PORT (default 8080) over TLS terminated at your edge or load balancer.
Health probeGET /healthz for liveness and readiness. It needs no auth and no provider call.
SecretsProvider keys via the platform's secret store, injected as env vars (OPENAI_API_KEY, …). Never in the image.
ConfigMount configs/keys.json, or pass it inline via RP_KEYS_JSON when the platform only injects env vars.
ScaleStateless, scale horizontally on CPU or request concurrency. ROUTEPLANE_MAX_REPLICAS bounds the upper end where the platform honours it.

Reference: Azure Container Apps

The project's own reference deployment runs on Azure Container Apps with scale-to-zero, the gateway costs nothing while idle and cold-starts on the first request. The shape:

  • Image. Reference the published image ghcr.io/routeplane-core/routeplane directly, or import it into your own registry (az acr import) for a private, in-cloud pull path.
  • Ingress. External ingress on target port 8080; ACA terminates TLS and gives you an HTTPS FQDN.
  • Scaling. Min replicas 0 (scale-to-zero) with a concurrency- or HTTP-based KEDA scale rule; max bounded to control cost.
  • Secrets. Provider keys as Container Apps secrets, surfaced to the container as env vars.
  • Health. A liveness/readiness probe on GET /healthz.
Infrastructure as code. For anything beyond a demo, manage the deployment as code, a Terraform topology (reusable modules + per-environment wiring, OIDC-federated CI with no static cloud credentials) provisions exactly this. The step-by-step walkthrough is the Azure Container Apps tutorial.

Or let us run it

Self-hosting puts the whole data path on your infrastructure. If you'd rather have it run for you, multi-region for sovereign routing, with the tamper-evident audit ledger and a managed key console, that's Routeplane Cloud.