all repos — flynet @ b96bb3bae7fb45e2476389c98661fc35ea02d889

ersatz CDN on fly.io

Caddyfile (view raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
{
	persist_config off

	servers {
		protocols h1 h2
	}

	cache {
		ttl 1h
		nuts {
			path /data/
		}
	}
	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
}

flynet-butterfly-1123.fly.dev {
	respond "Hello, world!"
}

alanpearce.eu, alin.ovh {
	import cache
	import dns01
	reverse_proxy https://homestead-homestead488.danubedata.run {
		header_up Host {hostport}
	}
}

status.alin.ovh {
	import cache
	import dns01
	reverse_proxy https://home.alin.ovh {
		header_up Host {hostport}
		header_down -Alt-Svc
	}
}

searchix.ovh {
	import cache
	import dns01

	goatcounter {
		api_host {$GOATCOUNTER_API_HOST}
		token "{$GOATCOUNTER_TOKEN}"
		site stats.searchix.ovh
	}

	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 2s
		health_fails 2

		# passive health checks
		max_fails 5
		fail_duration 30s
		unhealthy_status 5xx
	}
}