Skip to content

Configuration

The Configuration page in the admin dashboard has four tabs: License, Reverse Proxy, Logging, and Terms of Service. When a change requires a server restart, the page shows a banner with a Restart Now button.

View your license status: active-user limits, trial days remaining (if applicable), and activation state. Change the limits here once your trial converts, and open Manage Billing to update payment details or cancel. Already hold a key, for example a renewal? Paste it here to replace or upgrade your license. Buying and starting a trial happen in setup, the first time an admin signs in, not on this tab. See Licensing & Billing.

Broch sits behind a reverse proxy, so every connection arrives from the proxy’s IP. It reads the real client IP from X-Forwarded-For, but only from proxies it trusts. A proxy on the same machine (loopback) is trusted automatically. A proxy on a different host or container needs its range listed here as Trusted Proxy CIDRs, for example 10.0.0.0/8, 172.31.0.0/16.

Most deployments start with the right range already: the deployment sets API__TRUSTEDPROXYCIDRS, which seeds this tab on first boot. A value you save here replaces it, so change it only when the tab warns that the ingress IP isn’t covered.

Platform What to set
Azure and AWS appliances Nothing. The appliance trusts the Docker bridge range (172.16.0.0/12) its Caddy connects from.
Docker Compose with the bundled Caddy Nothing. The compose files trust the Docker bridge range by default (BROCH_TRUSTED_PROXY_CIDRS). With your own proxy on another host, set its range.
DigitalOcean Nothing. The Droplet trusts the Docker bridge range.
Azure Container Apps (beta) The range the tab suggests. The module runs the environment in its own VNet but doesn’t set the trusted range.
AWS ECS Fargate (beta) Nothing. The module trusts the VPC’s CIDR.

The tab shows the ingress IP the server currently sees, its network classification (loopback, private, CGNAT or unknown), and whether your ranges cover it. If they don’t, it suggests a range; Re-detect ingress refreshes it.

Why it matters: until the proxy is trusted, Broch can’t tell the client’s IP from the proxy’s. Share Policy rules with Network (IP/CIDR) conditions then fail closed and deny, the Networks tab stays disabled, and audit logs record the proxy’s IP. Header-based and allow-all policies are unaffected.

Configure where logs are sent.

Logging provider — choose one:

Option Description
None Stdout only (default)
DataDog Ship structured logs to DataDog
Seq Ship structured logs to a Seq server
OpenTelemetry Ship structured logs to any OTLP collector

Log level — Verbose, Debug, Information, Warning, Error, or Fatal.

Console logging — toggle to enable or disable logging to stdout alongside the configured provider.

Provider-specific fields (API keys, connection strings) appear when the relevant provider is selected. Secret values are masked in the UI and are not overwritten if left unchanged.

Changes to logging settings require a server restart.

Enable a required Terms of Service acceptance gate for all users.

  • Required — toggle to enable. When enabled, users must accept before using any feature.
  • Content — Markdown, up to 50,000 characters.
  • Version — read-only, auto-generated timestamp (yyyy-MM-dd-HHmmss). Updating the content automatically increments the version and requires all users to re-accept.

Terms take effect immediately — no restart required.