- Add self-hosted GoatCounter via systemd binary service (stats.monotrope.au) - Add Miniflux RSS reader via Docker Compose (reader.monotrope.au) - Extend Ansible playbook with goatcounter and miniflux tags; all provisioning is idempotent - Add Caddy reverse proxy blocks for both new services - Inject GoatCounter script in baseof.html (production builds only) - Add goatcounter and miniflux Makefile targets - Rewrite CLAUDE.md to reflect actual project state Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
39 lines
731 B
Caddyfile
39 lines
731 B
Caddyfile
monotrope.au {
|
|
root * /var/www/monotrope
|
|
file_server
|
|
|
|
# Compression
|
|
encode zstd gzip
|
|
|
|
# Cache headers for static assets
|
|
@static {
|
|
path *.css *.js *.ico *.gif *.jpg *.jpeg *.png *.webp *.svg *.woff *.woff2 *.ttf *.eot
|
|
}
|
|
header @static Cache-Control "public, max-age=31536000, immutable"
|
|
|
|
# HTML and RSS — revalidate each time
|
|
@html {
|
|
path *.html / /posts/ /posts/*
|
|
}
|
|
header @html Cache-Control "public, max-age=0, must-revalidate"
|
|
}
|
|
|
|
# Redirect www to apex
|
|
www.monotrope.au {
|
|
redir https://monotrope.au{uri} permanent
|
|
}
|
|
|
|
# Miniflux RSS reader
|
|
reader.monotrope.au {
|
|
reverse_proxy localhost:8080
|
|
|
|
encode zstd gzip
|
|
}
|
|
|
|
# GoatCounter analytics
|
|
stats.monotrope.au {
|
|
reverse_proxy localhost:8081
|
|
|
|
encode zstd gzip
|
|
}
|