12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- # 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/
- }
- }
|