all repos — flynet @ 68c2de53d1c7c998cc5f7951458cfe74eedd103f

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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
{
	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
	}
}

stable.searchix.ovh {
	import cache
	import dns01

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

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

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