6.2 KiB
GoDoxy v0.8 changes:
Breaking changes
-
Removed
redirect_to_httpsinconfig.yml, superseded byredirectHTTPas an entrypoint middleware -
New notification config format, support webhook notification, support multiple notification providers
old
providers: notification: gotify: url: ... token: ...new
providers: notification: - name: gotify provider: gotify url: ... token: ... - name: discord provider: webhook url: https://discord.com/api/webhooks/... template: discordWebhook notification fields:
Field Description Required Allowed values name name of the provider Yes provider Yes webhookurl webhook URL Yes Full URL template webhook template No empty, discordtoken webhook token No payload webhook payload No (if templateis used)valid json method webhook request method No GET POST PUTmime_type mime type No color_mode color mode No hexdecAvailable payload variables:
Variable Description Format $title message title json string $message message in markdown format json string $fields extra fields in json format json object $color embed color by color_mode0xff0000(hex) or16711680(dec)
Non-breaking changes
-
services health notification now in markdown format like
Uptime Kumafor both webhook and Gotify -
docker services now use docker health check if possible, fallback to GoDoxy health check on failure / no docker health check
-
proxy.<alias>.path_patternsfully support http.ServeMux patterns[METHOD ][HOST]/[PATH](See https://pkg.go.dev/net/http#hdr-Patterns-ServeMux) -
caching ACME private key in order to reuse ACME account, to prevent from ACME rate limit
-
New: support entrypoint middlewares (applied to routes, before route middlewares)
entrypoint: middlewares: - use: CIDRWhitelist allow: - "127.0.0.1" - "10.0.0.0/8" - "192.168.0.0/16" status: 403 message: "Forbidden" -
New: support exact host matching, i.e.
app1.domain.tld: host: 10.0.0.1will only match exactly
app1.domain.tldmatch_domainsin config will be ignored for this route -
New: support host matching without a subdomain, i.e.
app1: host: 10.0.0.1will now also match
app1.tld -
New: support
x-properties(like in docker compose), example usagex-proxy: &proxy scheme: https healthcheck: disable: true middlewares: hideXForwarded: modifyRequest: setHeaders: Host: $req_host api.openai.com: <<: *proxy host: api.openai.com api.groq.com: <<: *proxy host: api.groq.com -
new middleware name aliases:
modifyRequest=requestmodifyResponse=response
-
New: support
$variables inrequestandresponsemiddlewares (like nginx config)$req_method: request http method$req_scheme: request URL scheme (http/https)$req_host: request host without port$req_port: request port$req_addr: request host with port (if present)$req_path: request URL path$req_query: raw query string$req_url: full request URL$req_uri: request URI (encoded path?query)$req_content_type: request Content-Type header$req_content_length: length of request body (if present)$remote_addr: client's remote address (may changed by middlewares likeRealIPandCloudflareRealIP)$remote_host: client's remote ip parse from$remote_addr$remote_port: client's remote port parse from$remote_addr(may be empty)$resp_content_type: response Content-Type header$resp_content_length: length response body$status_code: response status code$upstream_name: upstream server name (alias)$upstream_scheme: upstream server scheme$upstream_host: upstream server host$upstream_port: upstream server port$upstream_addr: upstream server address with port (if present)$upstream_url: full upstream server URL$header(name): get request header by name$resp_header(name): get response header by name$arg(name): get URL query parameter by name
-
New: Access Logging (entrypoint and per route), i.e.
# config.yml entrypoint: access_log: format: json # common, combined, json path: /app/logs/access.json.log filters: cidr: negative: true # no log for local requests values: - 127.0.0.1/32 - 172.0.0.0/8 - 192.168.0.0/16 - 10.0.0.0/16 fields: headers: default: drop # drop app headers in log config: # keep only these X-Real-Ip: keep CF-Connecting-Ip: keep X-Forwarded-For: keepmount logs directory before setting this
Fixes
- duplicated notification after config reload
timeoutwas defaulted to0in some cases causing health check to failredirectHTTPmiddleware may not work on non standard http port- various other small bugs
realIPandcloudflareRealIPmiddlewares- prometheus metrics gone after a single route reload