diff --git a/Nginx-Proxy-Manager.-.md b/Nginx-Proxy-Manager.-.md new file mode 100644 index 0000000..e6b81d0 --- /dev/null +++ b/Nginx-Proxy-Manager.-.md @@ -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 "; + 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 "; + 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; +} +``` + +`` 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. \ No newline at end of file