main pico / caddy / Caddyfile.pgs
Eric Bower  ·  2026-09-12
  1{
  2	storage redis {
  3		address {$VALKEY_ADDR}
  4		password "{$VALKEY_PASSWORD}"
  5		timeout 5
  6		key_prefix "caddy"
  7	}
  8	on_demand_tls {
  9		ask http://web:3000/check
 10	}
 11	servers {
 12		metrics
 13		trusted_proxies static 0.0.0.0/0
 14	}
 15}
 16
 17# custom domains
 18:443 {
 19	reverse_proxy web:3000
 20	log {
 21		format append {
 22			server_id {$APP_DOMAIN}
 23		}
 24	}
 25	tls {$APP_EMAIL} {
 26		on_demand
 27	}
 28	encode zstd gzip
 29}
 30
 31# subdomains and root pgs domain
 32*.{$APP_DOMAIN}, {$APP_DOMAIN} {
 33	reverse_proxy web:3000
 34	log {
 35		format append {
 36			server_id {$APP_DOMAIN}
 37		}
 38	}
 39	tls {$APP_EMAIL} {
 40		dns cloudflare {$CF_API_TOKEN}
 41		resolvers 1.1.1.1
 42	}
 43
 44	encode zstd gzip
 45
 46	header {
 47		# disable FLoC tracking
 48		?Permissions-Policy interest-cohort=()
 49
 50		# enable HSTS
 51		?Strict-Transport-Security max-age=31536000;
 52
 53		# disable clients from sniffing the media type
 54		?X-Content-Type-Options nosniff
 55
 56		# clickjacking protection
 57		?X-Frame-Options DENY
 58
 59		# keep referrer data off of HTTP connections
 60		?Referrer-Policy no-referrer-when-downgrade
 61
 62		?X-XSS-Protection "1; mode=block"
 63	}
 64
 65	@caddymetrics {
 66		host {$APP_DOMAIN} *.{$APP_DOMAIN}
 67		path /_caddy/metrics
 68	}
 69
 70	metrics @caddymetrics {
 71		disable_openmetrics
 72	}
 73
 74	@sshmetrics {
 75		host {$APP_DOMAIN} *.{$APP_DOMAIN}
 76		path /_ssh/metrics
 77	}
 78
 79	handle @sshmetrics {
 80		rewrite * /metrics
 81		reverse_proxy ssh:9222
 82	}
 83
 84	@webmetrics {
 85		host {$APP_DOMAIN} *.{$APP_DOMAIN}
 86		path /_web/metrics
 87	}
 88
 89	handle @webmetrics {
 90		rewrite * /_metrics
 91		reverse_proxy web:3000 {
 92			header_up Host {$APP_DOMAIN}
 93		}
 94	}
 95
 96	@imgproxymetrics {
 97		host {$APP_DOMAIN} *.{$APP_DOMAIN}
 98		path /_imgproxy/metrics
 99	}
100
101	handle @imgproxymetrics {
102		rewrite * /metrics
103		reverse_proxy imgproxy:8081
104	}
105}