# Run with # caddy run --envfile ./example.env --config ./Caddyfile.localhost # # This is configured for # - Automatic HTTPS (even for localhost) # - Reverse Proxying to Ollama API Base URL (http://localhost:11434/api) # - CORS # - HTTP Basic Auth API Tokens (uncomment basicauth section) # CORS Preflight (OPTIONS) + Request (GET, POST, PATCH, PUT, DELETE) (cors-api) { @match-cors-api-preflight method OPTIONS handle @match-cors-api-preflight { header { Access-Control-Allow-Origin "{http.request.header.origin}" Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" Access-Control-Allow-Headers "Origin, Accept, Authorization, Content-Type, X-Requested-With" Access-Control-Allow-Credentials "true" Access-Control-Max-Age "3600" defer } respond "" 204 } @match-cors-api-request { not { header Origin "{http.request.scheme}://{http.request.host}" } header Origin "{http.request.header.origin}" } handle @match-cors-api-request { header { Access-Control-Allow-Origin "{http.request.header.origin}" Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" Access-Control-Allow-Headers "Origin, Accept, Authorization, Content-Type, X-Requested-With" Access-Control-Allow-Credentials "true" Access-Control-Max-Age "3600" defer } } } # replace localhost with example.com or whatever localhost { ## HTTP Basic Auth ## (uncomment to enable) # basicauth { # # see .example.env for how to generate tokens # {env.OLLAMA_API_ID} {env.OLLAMA_API_TOKEN_DIGEST} # } handle /api/* { # Comment to disable CORS import cors-api reverse_proxy localhost:11434 } # Same-Origin Static Web Server file_server { root ./build/ } }