Nginx-Proxy-Manager hinzugefügt

2026-06-26 09:37:43 +02:00
parent 9ec12ba531
commit bf778aba58
+85
@@ -0,0 +1,85 @@
# Nginx Proxy Manager
## Warum NPM für den Token?
Eine Angular-App ist eine reine Client-Side-Anwendung. Alles in `environment.prod.ts` landet nach `ng build` als Klartext in den JS-Bundles — wer DevTools öffnet, sieht den Token.
**Lösung:** Der Angular-Build spricht nie direkt Directus an. NPM leitet `/api`-Requests weiter und injiziert den Token serverseitig.
```
Browser NPM Directus
│ │ │
│ GET /api/... │ │
│────────────────►│ GET /items/... │
│ │ Authorization: Bearer │
│ │────────────────────────►│
│ │ 200 JSON │
│◄────────────────│◄───────────────────────│
│ (kein Token │
│ sichtbar)
```
## Proxy Host einrichten
### Details-Tab
```
Domain Names: home.neugasse.lan
Scheme: http
Forward Hostname/IP: 10.0.0.x (NAS-IP)
Forward Port: 9999
Cache Assets: ✓
Block Common Exploits: ✓
```
### Advanced-Tab — Custom Nginx Configuration
```nginx
# Directus API — Items
location /api/items/landingpage {
proxy_pass http://directus.neugasse.lan/items/landingpage;
proxy_set_header Authorization "Bearer <DIRECTUS_TOKEN>";
proxy_set_header Host directus.neugasse.lan;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# Directus Assets — Bilder
location /api/assets/ {
proxy_pass http://directus.neugasse.lan/assets/;
proxy_set_header Authorization "Bearer <DIRECTUS_TOKEN>";
proxy_set_header Host directus.neugasse.lan;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
```
`<DIRECTUS_TOKEN>` durch den echten Token ersetzen.
## Token rotieren
Wenn der Token kompromittiert ist oder erneuert werden muss:
1. Directus Admin-UI → **Settings****Access Tokens**
2. Alten Token löschen
3. Neuen Token erstellen
4. NPM → Proxy Host → **Advanced** → Token ersetzen → **Save**
5. Testen:
```bash
curl http://home.neugasse.lan/api/items/landingpage | head -c 100
# Erwartet: JSON mit Items
```
## Konfiguration testen
```bash
# Über NPM — Token wird injiziert
curl http://home.neugasse.lan/api/items/landingpage | python3 -m json.tool | head -20
# Direkt an Directus ohne Token — muss 403 zurückgeben
curl http://directus.neugasse.lan/items/landingpage
# {"errors":[{"message":"You don't have permission..."}]}
```
Wenn Schritt 1 `200` und Schritt 2 `403` liefert, ist der Proxy korrekt konfiguriert.