Add LAN-only status UI for caddy-autogen
This commit is contained in:
@@ -8,6 +8,25 @@ Arkitektur:
|
||||
- Endast explicit opt-in exponeras (`LABEL_CADDY_ENABLE=true`).
|
||||
- Caddy config laddas dynamiskt via Caddy Admin API (`POST /load`).
|
||||
- TLS sker med Let's Encrypt DNS-01 via Cloudflare.
|
||||
- Ett enkelt status-UI finns på port `31820` (LAN/private ranges only).
|
||||
|
||||
## Status-UI (v1)
|
||||
|
||||
Status-UI visar:
|
||||
|
||||
- senaste config apply-status,
|
||||
- Cloudflare reachability + token-validitet,
|
||||
- genererade hosts/routes,
|
||||
- om Let's Encrypt-cert verkar finnas för varje host.
|
||||
|
||||
URL (default):
|
||||
|
||||
- `http://<zima-lan-ip>:31820/`
|
||||
|
||||
Obs:
|
||||
|
||||
- "Hosts" i UI betyder **genererade Caddy-routes**, inte att appen skapar A/CNAME-records i Cloudflare-zonen.
|
||||
- Certstatus bygger på Caddys lokala certificate storage och är en praktisk v1-signal.
|
||||
|
||||
## Säkerhetsmodell
|
||||
|
||||
@@ -15,6 +34,7 @@ Arkitektur:
|
||||
- Ingen auto-exponering av alla portar.
|
||||
- Endast HTTP(S)-upstreams stöds i v1.
|
||||
- Docker socket exponeras inte direkt till agenten, endast via `socket-proxy` med begränsade endpoint-flaggor.
|
||||
- Status-UI är LAN-begränsat (`remote_ip private_ranges`).
|
||||
|
||||
## Miljövariabler (appnivå)
|
||||
|
||||
@@ -24,6 +44,9 @@ Arkitektur:
|
||||
- `REQUIRE_CLOUDFLARE` (default `true`)
|
||||
- `ALLOW_INTERNAL_TLS_FALLBACK` (default `false`)
|
||||
- `POLL_SECONDS` (default `15`)
|
||||
- `STATUS_BIND` (default `0.0.0.0:8089`, intern agent endpoint)
|
||||
- `STATUS_UI_PORT` (default `31820`)
|
||||
- `CF_VERIFY_URL` (default Cloudflare token verify endpoint)
|
||||
|
||||
Cloudflare-token bör vara scoped till minsta möjliga rättigheter:
|
||||
|
||||
@@ -97,10 +120,12 @@ Kör lokala integrationstester för discovery-agenten:
|
||||
./Apps/caddy-autogen/tests/run_integration_tests.sh
|
||||
```
|
||||
|
||||
Testerna mockar Docker API-svar och Caddy `/load`-anrop och verifierar:
|
||||
Testerna mockar Docker API-svar och Cloudflare verify och verifierar:
|
||||
|
||||
- opt-in-regler (endast markerade containers exponeras),
|
||||
- säker portselektionslogik (inga media/UDP-portar routas av misstag),
|
||||
- fail-closed beteende när Cloudflare-token saknas.
|
||||
- fail-closed beteende när Cloudflare-token saknas,
|
||||
- status-UI-block i genererad Caddy-konfiguration,
|
||||
- cert-matchning mot lokal Caddy certificate storage.
|
||||
|
||||
För verifiering i riktig ZimaOS-miljö, se `HOW_TO_VERIFY.md` i samma mapp.
|
||||
|
||||
Reference in New Issue
Block a user