Files
vantage-docs/docs/reference/environment-variables.md
T
mrhid6 c6cd96cbd1 docs: correct the status page URL for self-hosted, trim to what ships
- The status page URL was given only as `<instance>.vantage.<tld>`, which a
  self-hosted install does not serve. Both deployments are now described.
- The banner is documented as one notice: the editor exposes no level picker
  and the view renders every level identically.
- `pending` added to the component states, which a monitor with no result yet
  renders.
- Delete page documented alongside un-publish.
- `TRUSTED_PROXIES` names the LAN case: with the RFC1918 default, a client on a
  private range reaching the server directly is itself trusted and can spoof
  `X-Forwarded-For` — and now `X-Forwarded-Host`. Narrow it to the proxy.
- CLAUDE.md: scopes are nine resources, not eight; `status-pages` added to the
  REST route table; the host-resolution rules recorded under Status pages.
2026-08-25 09:05:06 +00:00

5.7 KiB

id, title, sidebar_label
id title sidebar_label
environment-variables Environment variables Environment variables

Everything the control plane reads from the environment, and what happens when it is absent.

Server

Name Required Default Notes
GRPC_HOST yes The host:port agents dial. Boot fails without it. There is deliberately no fallback to the web host: that would hand every agent a port that does not speak gRPC
MONGO_URI no mongodb://localhost:27017 The database name is taken from the URI path, falling back to vantage. There is no separate MONGO_DB
REDIS_ADDR no localhost:6379 Where sessions are held. If you run more than one copy of Vantage, they must all point at the same Redis
REDIS_USERNAME no Redis 6+ ACL user. Leave empty against a legacy requirepass instance, which authenticates with the password alone
REDIS_PASSWORD no Leave empty for an unauthenticated Redis. Both of these exist so an install can use a managed Redis rather than the bundled one
KEY_ENCRYPTION_KEY yes in practice 64 hex characters (32 bytes) for AES-256-GCM. Required for private keys, vault secrets, OIDC client secrets and console credentials
GITEA_HOST yes in practice gitea.example.com Host serving agent releases; used to build the install scripts and download URLs. The default is a placeholder that will not resolve, so set it to gitea.hostxtra.co.uk
GUACD_ADDR no guacd:4822 The browser console daemon
PROXY_ADVERTISE_HOST no server The hostname guacd uses to reach the control plane's console relay. Wrong here and every console session fails at connect with guacd unable to resolve the relay
PROXY_LISTEN_HOST no 0.0.0.0 Interface the ephemeral relay listeners bind. Narrow it only if guacd shares a known interface
APP_ROOT_LABEL no vantage The label Vantage expects in its own hostname, used to match a browser session to the right instance
VANTAGE_LICENSE no A licence supplied at startup, so an automated install does not have to paste one in
VANTAGE_TRIVY_DB_REF no ghcr.io/aquasecurity/trivy-db:2 Where the vulnerability database is pulled from. Point it at a mirror for an air-gapped install
VANTAGE_VULNDB_DISABLED no true switches vulnerability scanning off entirely. Findings already stored are still served, and still shown as stale
TRUSTED_PROXIES no 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 Comma-separated CIDRs or addresses of proxies allowed to set X-Forwarded-For. The shipped Docker Compose and Helm chart default to the private RFC1918 ranges, which covers Nginx Proxy Manager on the Docker bridge network and Traefik on a Kubernetes pod CIDR. An operator whose proxy sits on a public address must set this themselves, or every visitor behind it shares one address for rate-limiting purposes. Unset entirely (outside those shipped defaults) trusts none, so the client address is the direct peer. On a LAN-only install, narrow this to your proxy's address. The RFC1918 default trusts every private range, so a client on 192.168.0.0/16 reaching the server directly is itself a "trusted proxy" and can put whatever it likes in X-Forwarded-For — and, on the public status route, in X-Forwarded-Host. Behind a proxy on a public address, or with no proxy at all, that is not reachable; on a flat LAN it is

:::danger KEY_ENCRYPTION_KEY has no recovery path It encrypts SSH private keys, vault secrets, OIDC client secrets and console credentials. Lose it and all of them are unreadable. Back it up separately from the database it protects. :::

:::info A wrong APP_ROOT_LABEL fails quietly It does not error. It simply stops matching, and the host/session guard stops protecting anything. :::

Not configurable

The HTTP port (8080) and the gRPC port (9090) are fixed in the server. The HTTP_PORT and GRPC_PORT entries in the shipped Compose file have no effect. Remap the ports with Docker instead.

Agent

The agent reads no environment variables. Everything is in its config file.