From 9830acf446d03357f71dfb666781a6a5872d228f Mon Sep 17 00:00:00 2001 From: faligam Date: Sun, 6 Sep 2026 16:55:43 +0200 Subject: [PATCH] Document remote frontend integration --- ADMIN-Backend.md | 19 ++++++++++++++++++- DEPLOYMENT.md | 31 ++++++++++++++++++++++++++++++- README.md | 17 ++++++++++++++++- 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/ADMIN-Backend.md b/ADMIN-Backend.md index 4d06a93..a0d5edf 100644 --- a/ADMIN-Backend.md +++ b/ADMIN-Backend.md @@ -183,6 +183,23 @@ curl -s http://localhost:8080/metrics # ReDoc: http://localhost:8080/redoc ``` +### 2.7 Getrenntes Frontend-Deployment + +Das NSCT-Frontend darf auf einem anderen Rechner als dieser Backend-Stack laufen. +Es benötigt kein gemeinsames Docker-Netzwerk: Der Frontend-Caddy proxyt `/api/*` +an den in seinem `.env` gesetzten Backend-Host. + +```env +# im Frontend-Repository, ohne URL-Schema und ohne Pfad +NSCT_API_UPSTREAM=backend.example.com:8080 +``` + +Erlaube am Backend-Port 8080 nur die IP bzw. das Netz des Frontend-Rechners und +prüfe die Erreichbarkeit von dort mit `curl http://backend.example.com:8080/health`. +Über nicht vertrauenswürdige Netze ist TLS, ein VPN oder ein zusätzlicher Reverse +Proxy erforderlich. Browser greifen dabei nicht direkt auf das Backend zu; CORS +für die Browser-Origin ist daher nicht erforderlich. + --- ## 3. PostgreSQL Setup @@ -1211,4 +1228,4 @@ docker compose exec postgres pg_restore ... # Monitoring docker stats # Resource Usage docker compose ps # Container Status -``` \ No newline at end of file +``` diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 187a79f..5ecfc2c 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -91,6 +91,35 @@ curl http://localhost:8080/ready curl http://localhost:8080/providers ``` +### 4.3 Frontend auf einem separaten Rechner + +Der Backend-Stack und das NSCT-Frontend benötigen kein gemeinsames Docker- +Netzwerk und können auf unterschiedlichen Rechnern laufen. Das Frontend stellt +Browser-Anfragen an seinen Same-Origin-Pfad `/api/*`; sein Caddy-Proxy leitet +diese an das Backend weiter. + +Auf dem **Frontend-Rechner** wird im Frontend-Repository konfiguriert: + +```env +# Host:Port des Backend-Rechners, ohne http:// und ohne /api +NSCT_API_UPSTREAM=backend.example.com:8080 +``` + +Auf dem **Backend-Rechner** muss die API von diesem Host erreichbar sein: + +```bash +# Vom Frontend-Rechner aus prüfen +curl http://backend.example.com:8080/health +``` + +Die Firewall darf Port 8080 nur für die IP-Adresse oder das private Netz des +Frontend-Rechners erlauben. Eine Freigabe für das gesamte Internet ist nicht +empfohlen. Werden die Rechner über ein öffentliches oder nicht vertrauenswürdiges +Netz verbunden, verwende TLS, ein VPN oder einen abgesicherten Reverse Proxy +zwischen Frontend und Backend. Da der Browser ausschließlich mit der +Frontend-Domain kommuniziert, ist keine CORS-Freigabe des Backends für Browser- +Clients nötig. + ### 4.3 Logs ```bash @@ -221,4 +250,4 @@ docker push your-registry/nsct:latest - [ ] Logging zu externem System (ELK, Grafana, etc.) - [ ] Backup-Policy für PostgreSQL Volume - [ ] Network Policies für Docker -- [ ] Monitoring Alerts (Prometheus + Alertmanager) \ No newline at end of file +- [ ] Monitoring Alerts (Prometheus + Alertmanager) diff --git a/README.md b/README.md index ea453b3..97912d6 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,21 @@ curl http://localhost:8080/health Die API ist danach unter `http://localhost:8080` erreichbar. `/docs` zeigt die auto-generierte Swagger-Dokumentation (nur bei `NSCT_DEBUG=true`). +### Frontend auf einem separaten Rechner + +Das Backend kann unabhängig vom Frontend betrieben werden. Das Frontend leitet +seine Same-Origin-Anfragen an `/api/*` per Caddy an diese API weiter. Auf dem +Frontend-Rechner wird dazu im Frontend-Repository gesetzt: + +```env +NSCT_API_UPSTREAM=backend.example.com:8080 +``` + +Der Backend-Rechner muss Port 8080 ausschließlich für die IP bzw. das Netz des +Frontend-Rechners freigeben. Für öffentliche oder nicht vertrauenswürdige Netze +soll die Verbindung zwischen den Rechnern über TLS, VPN oder einen abgesicherten +Reverse Proxy erfolgen. + ## Projektstruktur ``` @@ -169,4 +184,4 @@ Alle 22 Stages sind abgeschlossen. NSCT ist production-ready: ## Lizenz -MIT \ No newline at end of file +MIT