You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/development/architecture.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -699,6 +699,7 @@ Brokers deployed with runtime auth or protected admin on non-loopback binds must
699
699
- Set `FITZ_ASSUME_EXTERNAL_TLS=true` in TLS-terminated deployments. Fitz fails startup when runtime auth or protected admin is enabled on a non-loopback bind without this explicit assertion
700
700
- Configure exact public `FITZ_WS_ALLOWED_ORIGINS` for browser WebSocket clients; Fitz defaults only to loopback local-development origins
701
701
- HTTP headers, request bodies, WebSocket frames, and total HTTP connection lifetimes are bounded at ingress so unauthenticated clients cannot retain unlimited parser or connection resources
702
+
- Repo-owned local Compose examples set `FITZ_ASSUME_LOCAL_LOOPBACK_EDGE=true` because Fitz binds inside a container while Docker publishes only to host loopback. The assertion requires loopback browser origins, does not enable HSTS, and is not valid for production
702
703
2.**TCP traffic:**
703
704
- Use a TLS-capable load balancer, sidecar, or private trusted network for raw TCP
704
705
- Disable raw TCP with `FITZ_TCP_ENABLED=false` when only browser traffic is needed
Copy file name to clipboardExpand all lines: docs/user-guides/vars.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,6 +12,7 @@ This page is the central reference for environment variables supported by Fitz r
12
12
| FITZ_TCP_PORT | u16 port | 4091 | Raw TCP listener port. |
13
13
| FITZ_BIND_ADDR | IP or hostname | 0.0.0.0 | Bind address for listeners. |
14
14
| FITZ_ASSUME_EXTERNAL_TLS | true or false | false | Confirms that a trusted external edge terminates TLS and enables TLS-dependent browser behavior such as HSTS. Fitz refuses to start with runtime auth or protected admin on a non-loopback bind unless this is true. Loopback development can leave it unset. |
15
+
| FITZ_ASSUME_LOCAL_LOOPBACK_EDGE | true or false | false | Confirms that a trusted local container edge publishes Fitz listeners only on host loopback. This allows authenticated local Compose without asserting TLS or enabling HSTS, and requires loopback WebSocket and admin origins. Never enable it outside local development. |
15
16
| FITZ_WS_ALLOWED_ORIGINS | Comma-separated exact browser origins, e.g. https://app.example.com| Local loopback origins for ports 3000 and 4090 | Browser WebSocket Origin allowlist. Values are HTTP origins, not wss URLs, and must not include a path, query, fragment, or trailing slash. Public browser deployments should set this to their exact SPA origins. |
16
17
| FITZ_DRAIN_GRACE_SECONDS | Positive integer seconds | 25 | Planned redeploy drain grace. During drain, `/healthz` and `/readyz` fail and new TCP/WebSocket sessions are rejected before active sessions are closed on shutdown. Set lower than the external termination grace. |
17
18
| FITZ_DRAIN_CLOSE_REASON | Non-empty string | broker draining for redeploy | Server close reason recorded when planned drain shutdown closes active sessions. |
@@ -71,6 +72,7 @@ The repo compose files are local-development examples only:
71
72
-`compose.yml`, `compose.cloud.yml`, and `compose.sqrzl.yml` publish only to loopback and are not production deployment manifests.
72
73
-`compose.yml` and `compose.cloud.yml` keep `fitz-auth` on `FITZ_JWT_HMAC_SECRET` by default so `docker compose up` stays the shortest successful path.
73
74
- Those same compose files keep `FITZ_ADMIN_AUTH_MODE=open` because the admin surface is loopback-only and meant for local inspection.
75
+
- Those same compose files set `FITZ_ASSUME_LOCAL_LOOPBACK_EDGE=true` because Fitz binds inside its container while Docker publishes the listeners only on host loopback. This does not assert TLS or enable HSTS.
74
76
- The built-in loopback defaults for `FITZ_WS_ALLOWED_ORIGINS` are only for local development.
75
77
76
78
To exercise issuer/JWKS plumbing locally instead of the default HMAC flow:
@@ -88,6 +90,7 @@ For authenticated browser or API deployments outside local development:
88
90
- Set `FITZ_AUTH_REQUIRED=true`.
89
91
- Configure runtime JWT verification with `FITZ_JWT_JWKS_MAP`. Do not rely on `FITZ_JWT_HMAC_SECRET` in production.
90
92
- Set `FITZ_ASSUME_EXTERNAL_TLS=true` when TLS terminates outside Fitz.
93
+
- Do not set `FITZ_ASSUME_LOCAL_LOOPBACK_EDGE`; it is only for host-loopback local container publishing.
91
94
- Set `FITZ_WS_ALLOWED_ORIGINS` to the exact public SPA origins allowed to open browser WebSockets.
92
95
- Set `FITZ_ADMIN_AUTH_MODE=protected`, `FITZ_ADMIN_PUBLIC_ORIGIN=https://admin.example.com`, and keep `FITZ_ADMIN_COOKIE_SECURE=true`.
93
96
- Expect protected-admin session cookies to expire on broker restart because the signing key is generated in memory per process.
Copy file name to clipboardExpand all lines: public/openapi.yml
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -3332,7 +3332,7 @@ components:
3332
3332
type: array
3333
3333
items:
3334
3334
type: string
3335
-
description: Public bootstrap Route Family grants. Empty in protected mode; use the authenticated session endpoint for admin grants after login.
3335
+
description: Provisioned Route Families available to public bootstrap in open mode. Empty in protected mode; use the authenticated session endpoint for admin grants after login.
3336
3336
route_families_wildcard:
3337
3337
type: boolean
3338
3338
description: True only when public bootstrap runs with wildcard Route Family access, such as open admin mode.
0 commit comments