Configure backend proxy for remote deployment
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
# URL des NSCT Backend API
|
# Erreichbarer Host:Port des Backend-Rechners, ohne URL-Schema.
|
||||||
NSCT_API_BASE_URL=http://localhost:8080
|
# Lokal auf demselben Docker-Host: host.docker.internal:8080
|
||||||
|
NSCT_API_UPSTREAM=backend.example.com:8080
|
||||||
|
|
||||||
# Optional: Caddy Domain für externen Zugriff
|
# Optional: Caddy Domain für externen Zugriff
|
||||||
CADDY_DOMAIN=
|
CADDY_DOMAIN=
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ cp .env.example .env
|
|||||||
Minimale `.env`-Konfiguration:
|
Minimale `.env`-Konfiguration:
|
||||||
|
|
||||||
```env
|
```env
|
||||||
# URL des NSCT Backend API (Docker-Netzwerk)
|
# Erreichbarer Host:Port des Backend-Rechners (kein Docker-Netzwerk nötig)
|
||||||
NSCT_API_BASE_URL=http://nsct-api:8080
|
NSCT_API_UPSTREAM=backend.example.com:8080
|
||||||
|
|
||||||
# Optional: Domain für HTTPS-Zugriff über Caddy
|
# Optional: Domain für HTTPS-Zugriff über Caddy
|
||||||
CADDY_DOMAIN=nsct.example.com
|
CADDY_DOMAIN=nsct.example.com
|
||||||
@@ -172,11 +172,7 @@ Port 80 und 443 müssen im Firewall-Regelwerk freigeschaltet sein.
|
|||||||
|
|
||||||
| Variable | Beschreibung | Default | Beispiel |
|
| Variable | Beschreibung | Default | Beispiel |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| `NSCT_API_BASE_URL` | URL des NSCT-Backend-API | `http://nsct-api:8080` | `http://nsct-api:8080` |
|
| `PORT` | Port des statischen Webservers | `3000` | (fest im Caddyfile) |
|
||||||
| `DEFAULT_THEME` | Start-Theme | `dark` | `light` |
|
|
||||||
| `NODE_ENV` | Laufzeit-Modus | `production` | (fest im Dockerfile) |
|
|
||||||
| `HOST` | Bind-Adresse | `0.0.0.0` | (fest im Dockerfile) |
|
|
||||||
| `PORT` | Port | `3000` | (fest im Dockerfile) |
|
|
||||||
|
|
||||||
### Caddy-Container (`caddy` service)
|
### Caddy-Container (`caddy` service)
|
||||||
|
|
||||||
@@ -184,13 +180,14 @@ Port 80 und 443 müssen im Firewall-Regelwerk freigeschaltet sein.
|
|||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| `CADDY_DOMAIN` | Domain für HTTPS / Zertifikat | leer | `nsct.example.com` |
|
| `CADDY_DOMAIN` | Domain für HTTPS / Zertifikat | leer | `nsct.example.com` |
|
||||||
| `NSCT_RATE_LIMIT` | Rate-Limiting (optional) | leer | `100/second` |
|
| `NSCT_RATE_LIMIT` | Rate-Limiting (optional) | leer | `100/second` |
|
||||||
|
| `NSCT_API_UPSTREAM` | Host:Port des Backend-Rechners | `host.docker.internal:8080` | `backend.example.com:8080` |
|
||||||
|
|
||||||
### Konfiguration am Beispiel
|
### Konfiguration am Beispiel
|
||||||
|
|
||||||
#### Lokale Entwicklung (HTTP only)
|
#### Lokale Entwicklung (HTTP only)
|
||||||
|
|
||||||
```env
|
```env
|
||||||
NSCT_API_BASE_URL=http://host.docker.internal:8080
|
NSCT_API_UPSTREAM=host.docker.internal:8080
|
||||||
CADDY_DOMAIN=
|
CADDY_DOMAIN=
|
||||||
DEFAULT_THEME=dark
|
DEFAULT_THEME=dark
|
||||||
```
|
```
|
||||||
@@ -198,7 +195,7 @@ DEFAULT_THEME=dark
|
|||||||
#### Produktionsumgebung (HTTPS)
|
#### Produktionsumgebung (HTTPS)
|
||||||
|
|
||||||
```env
|
```env
|
||||||
NSCT_API_BASE_URL=http://nsct-api:8080
|
NSCT_API_UPSTREAM=backend.example.com:8080
|
||||||
CADDY_DOMAIN=nsct.example.com
|
CADDY_DOMAIN=nsct.example.com
|
||||||
DEFAULT_THEME=dark
|
DEFAULT_THEME=dark
|
||||||
```
|
```
|
||||||
@@ -206,7 +203,7 @@ DEFAULT_THEME=dark
|
|||||||
#### Light-Mode (z.B. für bestimmte Nutzergruppen)
|
#### Light-Mode (z.B. für bestimmte Nutzergruppen)
|
||||||
|
|
||||||
```env
|
```env
|
||||||
NSCT_API_BASE_URL=http://nsct-api:8080
|
NSCT_API_UPSTREAM=backend.example.com:8080
|
||||||
CADDY_DOMAIN=nsct.example.com
|
CADDY_DOMAIN=nsct.example.com
|
||||||
DEFAULT_THEME=light
|
DEFAULT_THEME=light
|
||||||
```
|
```
|
||||||
@@ -520,7 +517,7 @@ NSCT_RATE_LIMIT=100/second
|
|||||||
|
|
||||||
### CORS
|
### CORS
|
||||||
|
|
||||||
Das Frontend stellt keine Cross-Origin-Anfragen. Alle API-Calls gehen direkt an `NSCT_API_BASE_URL` (gleicher Container/Netzwerk). CORS ist kein Problem, da keine fremden Domains angesprochen werden.
|
Das Frontend stellt keine Cross-Origin-Anfragen. Alle API-Calls gehen an den Same-Origin-Pfad `/api`; Caddy leitet ihn an `NSCT_API_UPSTREAM` weiter. Frontend und Backend können daher auf getrennten Rechnern laufen, ohne dass der Browser CORS zum Backend benötigt.
|
||||||
|
|
||||||
### API-Key-Speicherung
|
### API-Key-Speicherung
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
:443 {
|
:443 {
|
||||||
handle_path /api/* {
|
handle_path /api/* {
|
||||||
reverse_proxy {$NSCT_API_UPSTREAM}
|
reverse_proxy {$NSCT_API_UPSTREAM}
|
||||||
}
|
}
|
||||||
|
|
||||||
reverse_proxy web:3000
|
reverse_proxy web:3000
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
:80 {
|
:80 {
|
||||||
handle_path /api/* {
|
handle_path /api/* {
|
||||||
reverse_proxy {$NSCT_API_UPSTREAM}
|
reverse_proxy {$NSCT_API_UPSTREAM}
|
||||||
}
|
}
|
||||||
|
|
||||||
reverse_proxy web:3000
|
reverse_proxy web:3000
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,6 @@ services:
|
|||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
container_name: nsct-web
|
container_name: nsct-web
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
|
||||||
- NSCT_API_BASE_URL=http://nsct-api:8080
|
|
||||||
- DEFAULT_THEME=dark
|
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- "3000:3000"
|
||||||
networks:
|
networks:
|
||||||
@@ -41,6 +38,9 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- CADDY_DOMAIN=${CADDY_DOMAIN:-}
|
- CADDY_DOMAIN=${CADDY_DOMAIN:-}
|
||||||
- NSCT_RATE_LIMIT=${NSCT_RATE_LIMIT:-}
|
- NSCT_RATE_LIMIT=${NSCT_RATE_LIMIT:-}
|
||||||
|
- NSCT_API_UPSTREAM=${NSCT_API_UPSTREAM:-host.docker.internal:8080}
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
networks:
|
networks:
|
||||||
- nsct-network
|
- nsct-network
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
Reference in New Issue
Block a user