65 lines
1.7 KiB
Caddyfile
65 lines
1.7 KiB
Caddyfile
# 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/
|
|
}
|
|
}
|