# FleetOps — static analytics SPA served by Caddy. # Traefik (via Coolify) terminates TLS, so Caddy is a plain :80 file server. # The only moving part is runtime API-base injection: Caddy's `templates` # directive evaluates {{env "API_BASE"}} inside /env.js at request time, so the # SAME image serves staging (fleetapi.fivetitude.com) and prod # (fleetapi.rahamafresh.com) — set API_BASE per Coolify app. :80 { root * /srv encode zstd gzip # Health endpoint for Coolify / Traefik probes. handle /healthz { respond "ok" 200 } # Runtime config: Caddy renders {{env "API_BASE"}} into env.js. Never cache it. handle /env.js { templates header Cache-Control "no-store" file_server } # SPA: never cache the shell, fall back to index.html for client routes. handle { header /index.html Cache-Control "no-store" try_files {path} /index.html file_server } }