6.2 KiB
GoDoxy v0.8 changes:
Breaking changes
-
Removed
redirect_to_https
inconfig.yml
, superseded byredirectHTTP
as 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: discord
Webhook notification fields:
Field Description Required Allowed values name name of the provider Yes provider Yes webhook
url webhook URL Yes Full URL template webhook template No empty, discord
token webhook token No payload webhook payload No (if template
is used)valid json method webhook request method No GET POST PUT
mime_type mime type No color_mode color mode No hex
dec
Available 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_mode
0xff0000
(hex) or16711680
(dec)
Non-breaking changes
-
services health notification now in markdown format like
Uptime Kuma
for 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_patterns
fully 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.1
will only match exactly
app1.domain.tld
match_domains
in config will be ignored for this route -
New: support host matching without a subdomain, i.e.
app1: host: 10.0.0.1
will 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
=request
modifyResponse
=response
-
New: support
$
variables inrequest
andresponse
middlewares (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 likeRealIP
andCloudflareRealIP
)$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: keep
mount logs directory before setting this
Fixes
- duplicated notification after config reload
timeout
was defaulted to0
in some cases causing health check to failredirectHTTP
middleware may not work on non standard http port- various other small bugs
realIP
andcloudflareRealIP
middlewares- prometheus metrics gone after a single route reload