Document remote frontend integration

This commit is contained in:
faligam
2026-09-06 16:55:43 +02:00
parent fddb4da1c7
commit 9830acf446
3 changed files with 64 additions and 3 deletions

View File

@@ -183,6 +183,23 @@ curl -s http://localhost:8080/metrics
# ReDoc: http://localhost:8080/redoc # 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 ## 3. PostgreSQL Setup

View File

@@ -91,6 +91,35 @@ curl http://localhost:8080/ready
curl http://localhost:8080/providers 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 ### 4.3 Logs
```bash ```bash

View File

@@ -66,6 +66,21 @@ curl http://localhost:8080/health
Die API ist danach unter `http://localhost:8080` erreichbar. Die API ist danach unter `http://localhost:8080` erreichbar.
`/docs` zeigt die auto-generierte Swagger-Dokumentation (nur bei `NSCT_DEBUG=true`). `/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 ## Projektstruktur
``` ```