Skip to main content
Rootprint reads its configuration from environment variables at startup. For Docker deployments, set these under the environment key of the rootprint service. See Docker Compose for a full file.

Required

Rootprint refuses to start if any required variable is missing or empty, or if ORIGIN or QUICKWIT_URL is not an http:// or https:// URL.

Optional

A wrong TRACE_INDEX_ID fails silently. Rootprint treats a missing span store as an empty trace, so a typo looks like “no spans” rather than a misconfiguration.

Rate limiting

Both limiters are per process, so a horizontally scaled deployment multiplies the effective limit by the replica count. Put the authoritative limit at your reverse proxy if you need a cluster-wide one.
Set TRUST_PROXY_HOPS to your real proxy count — 1 for a single nginx or Caddy, 2 for a CDN in front of a load balancer. Setting it higher than the actual number lets a client prepend X-Forwarded-For entries and pick which IP the auth limiter counts against, defeating it.
Rootprint does not rate-limit the ingest endpoints (/api/ingest/ndjson, /v1/logs, /v1/traces). A 429 from them comes from Quickwit.