{ persist_config off servers { protocols h1 h2 } cache { ttl 1h otter storers otter } log { format json exclude admin.api } order goatcounter after tracing metrics { per_host } acme_ca https://acme-api.actalis.com/acme/directory acme_eab { key_id {$EAB_KEY_ID} mac_key {$EAB_MAC_KEY} } storage redis { host redis.alin.ovh username default db 1 password {$REDIS_PASSWORD} encryption_key {$REDIS_ENCRYPTION_KEY} tls_enabled true tls_insecure false } } :9091 { handle_path /metrics { reverse_proxy localhost:2019 { header_up Host {upstream_hostport} } } } (dns01) { tls { dns rfc2136 { key_name caddy key_alg hmac-sha512 key {env.DDNS_TSIG_KEY} server pdns.alin.ovh:53 } } } (cache) { cache header -Server } (rate_limit) { rate_limit { distributed zone global_static { match { query query=* } key static events 100 window 1m } zone host_dynamic { match { query query=* } key {remote_host} events 5 window 10s } } } flynet-butterfly-1123.fly.dev { respond "Hello, world!" } alanpearce.eu, alin.ovh, www.alin.ovh, www.alanpearce.eu { import cache goatcounter { api_host https://stats.alin.ovh site stats.alin.ovh token {$GOATCOUNTER_TOKEN} } reverse_proxy https://homestead-homestead488.danubedata.run { header_up Host {hostport} } } uptime.alin.ovh, status.alin.ovh, status.searchix.ovh { import cache reverse_proxy https://home.alin.ovh { header_up Host {hostport} header_down -Alt-Svc } } searchix.ovh { import cache import rate_limit goatcounter { api_host https://stats.searchix.ovh site stats.searchix.ovh token {$GOATCOUNTER_TOKEN} } reverse_proxy { to https://smrk.alin.ovh https://home.alin.ovh lb_policy first header_up Host {hostport} header_down -Alt-Svc # active health checks (service running) health_uri /health health_headers { Host {hostport} } health_status 2xx health_interval 10s health_timeout 5s health_fails 2 # passive health checks max_fails 5 fail_duration 30s unhealthy_status 5xx } } stable.searchix.ovh { import cache import rate_limit goatcounter { api_host https://stats.stable.searchix.ovh site stats.stable.searchix.ovh token {$GOATCOUNTER_TOKEN} } reverse_proxy { to https://smrk.alin.ovh lb_policy first header_up Host {hostport} header_down -Alt-Svc # active health checks (service running) health_uri /health health_headers { Host {hostport} } health_status 2xx health_interval 10s health_timeout 5s health_fails 2 # passive health checks max_fails 5 fail_duration 30s unhealthy_status 5xx } }