POST /api/publish: rendert SiteSnapshot->HTML in _staging_new/, atomic swap -> live/ (rename, ein Syscall). publicsite-nginx:alpine serviert live/ read-only auf Port 8081. Shared Volume api(rw)/publicsite(ro). Manager bleibt LAN-only. 5 neue Tests (atomic swap, UTF-8, mehrfach), 184/184 gruen. compose config OK. Vhost-Snippet + web-deploy.md (Deutsch) beigelegt; <DOMAIN> wartet auf Julian.
38 lines
1.4 KiB
Plaintext
38 lines
1.4 KiB
Plaintext
# GerbilManager — Externer nginx-Vhost fuer die oeffentliche Webseite (WEB-2)
|
|
# In Julians bestehenden nginx-Reverse-Proxy einfuegen.
|
|
# <DOMAIN> ersetzen sobald der Hostname feststeht (Julian liefert ihn).
|
|
#
|
|
# SICHERHEIT: Dieser Vhost zeigt NUR auf den publicsite-Container (Port 8081).
|
|
# Der Manager (API + Frontend, Port 80) ist NICHT erreichbar von aussen —
|
|
# er hat keine Authentifizierung und muss LAN-only bleiben.
|
|
server {
|
|
listen 80;
|
|
server_name <DOMAIN>;
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8081;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
# Kein Buffering fuer kleine statische HTML-Seiten
|
|
proxy_buffering off;
|
|
}
|
|
}
|
|
|
|
# Fuer HTTPS (empfohlen, z.B. per Let's Encrypt via certbot):
|
|
# server {
|
|
# listen 443 ssl;
|
|
# server_name <DOMAIN>;
|
|
# ssl_certificate /etc/letsencrypt/live/<DOMAIN>/fullchain.pem;
|
|
# ssl_certificate_key /etc/letsencrypt/live/<DOMAIN>/privkey.pem;
|
|
# location / {
|
|
# proxy_pass http://127.0.0.1:8081;
|
|
# proxy_set_header Host $host;
|
|
# proxy_set_header X-Real-IP $remote_addr;
|
|
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
# proxy_set_header X-Forwarded-Proto $scheme;
|
|
# }
|
|
# }
|