diff --git a/config/docker/caddy/web-app/Caddyfile b/config/docker/caddy/web-app/Caddyfile index d356e47f..26977670 100644 --- a/config/docker/caddy/web-app/Caddyfile +++ b/config/docker/caddy/web-app/Caddyfile @@ -1,49 +1,35 @@ { -# TLS wird durch Pangolin/Traefik auf dem VPS terminiert – hier kein HTTPS nötig auto_https off - servers { - metrics - } + metrics + } } :4000 { -# Root-Verzeichnis für statische Assets root * /usr/share/caddy - -# Logging (strukturiert, JSON) log { - output stdout - format json - } + 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 - } + reverse_proxy api-gateway:8081 + } -# Health-Check-Endpunkt (für Pangolin Health-Check konfigurieren: GET /health) handle /health { - respond "healthy" 200 - } + respond "healthy" 200 + } -# SPA-Fallback: existierende Dateien direkt ausliefern, sonst index.html handle { - try_files {path} /index.html - } + try_files {path} /index.html + file_server + } } diff --git a/frontend/shells/meldestelle-portal/src/jsMain/resources/index.html b/frontend/shells/meldestelle-portal/src/jsMain/resources/index.html index f65e9afb..92156e46 100644 --- a/frontend/shells/meldestelle-portal/src/jsMain/resources/index.html +++ b/frontend/shells/meldestelle-portal/src/jsMain/resources/index.html @@ -21,7 +21,7 @@ const params = new URLSearchParams(window.location.search); // Caddy injiziert: {{.Env.API_BASE_URL}} → z.B. "https://app.mo-code.at" - const apiFromCaddy = '{{.Env.API_BASE_URL}}'; + const apiFromCaddy = `{{.Env.API_BASE_URL}}`; const apiOverride = params.get('apiBaseUrl'); globalThis.API_BASE_URL = apiOverride ? apiOverride.replace(/\/$/, '') @@ -30,7 +30,7 @@ : 'http://' + window.location.origin.replace(/\/$/, '')); // Caddy injiziert: {{.Env.KEYCLOAK_URL}} → z.B. "https://auth.mo-code.at" - const kcFromCaddy = '{{.Env.KEYCLOAK_URL}}'; + const kcFromCaddy = `{{.Env.KEYCLOAK_URL}}`; const kcOverride = params.get('keycloakUrl'); globalThis.KEYCLOAK_URL = kcOverride ? kcOverride.replace(/\/$/, '')