{
	# Mailadresse fuer Let's Encrypt (Ablaufwarnungen). Ueberschreibbar per .env
	email {$ACME_EMAIL:business.djnizz@gmail.com}
}

# --- Weiterleitung www -> Apex ----------------------------------------------
# Setzt einen DNS-A-Record fuer www.djnizz.at voraus. Wenn es den nicht gibt,
# diesen Block auskommentieren, sonst versucht Caddy dauerhaft erfolglos ein
# Zertifikat dafuer zu holen.
www.{$DOMAIN:djnizz.at} {
	redir https://{$DOMAIN:djnizz.at}{uri} permanent
}

# --- Hauptseite -------------------------------------------------------------
{$DOMAIN:djnizz.at} {
	encode zstd gzip

	header {
		Strict-Transport-Security "max-age=31536000; includeSubDomains"
		X-Content-Type-Options "nosniff"
		X-Frame-Options "SAMEORIGIN"
		Referrer-Policy "strict-origin-when-cross-origin"
		Permissions-Policy "geolocation=(), microphone=(), camera=(), payment=()"
		Cross-Origin-Opener-Policy "same-origin"
		-Server
	}

	# Astro haengt einen Content-Hash an alle Assets unter /_astro/ -
	# die duerfen daher unbegrenzt gecacht werden.
	# ">" ersetzt den Header, statt einen zweiten danebenzustellen -
	# der Node-Adapter setzt fuer gehashte Assets bereits ein Cache-Control.
	@immutable path /_astro/*
	header @immutable >Cache-Control "public, max-age=31536000, immutable"

	reverse_proxy web:4321

	log {
		output file /var/log/caddy/access.log {
			roll_size 10MiB
			roll_keep 4
			roll_keep_for 336h
		}
		# Client-IPs werden gekuerzt und Cookies/Auth-Header nicht mitgeloggt.
		# Muss zur Datenschutzerklaerung passen.
		format filter {
			wrap json
			fields {
				request>remote_ip ip_mask {
					ipv4 24
					ipv6 32
				}
				request>headers>Cookie delete
				request>headers>Authorization delete
			}
		}
	}
}
