{ # TLS wird durch Pangolin/Traefik auf dem VPS terminiert – hier kein HTTPS nötig auto_https off servers { metrics } } :4000 { # Root-Verzeichnis für statische Assets root * /usr/share/caddy # Logging (strukturiert, JSON) log { output stdout format json } # Sicherheits-Header für SharedArrayBuffer (benötigt für SQLite WASM) header { # Erlaubt das Laden von Cross-Origin-Ressourcen, aber nur wenn diese es explizit erlauben Cross-Origin-Embedder-Policy "require-corp" # Isoliert den Kontext, um Sicherheitsrisiken zu minimieren Cross-Origin-Opener-Policy "same-origin" } # Komprimierung encode gzip zstd # Caddy-Template-Engine: ersetzt {{.Env.VAR}} in index.html UND config.json templates file_server # API-Proxy (höchste Priorität – vor dem SPA-Fallback) handle /api/* { reverse_proxy api-gateway:8081 } # Health-Check-Endpunkt (für Pangolin Health-Check konfigurieren: GET /health) handle /health { respond "healthy" 200 } # SPA-Fallback: existierende Dateien direkt ausliefern, sonst index.html handle { try_files {path} /index.html } }