- Add Hermes (Nous Research LLM agent) with Telegram gateway, Ansible provisioning, and Makefile targets - Self-host JetBrains Mono and Spectral fonts (remove Google Fonts) - Add "An Experiment in Self-Hosting" blog post - Update CLAUDE.md with high-level server overview Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
76 lines
1.5 KiB
Caddyfile
76 lines
1.5 KiB
Caddyfile
monotrope.au {
|
|
root * /var/www/monotrope
|
|
file_server
|
|
|
|
# Security headers
|
|
header {
|
|
X-Content-Type-Options "nosniff"
|
|
X-Frame-Options "DENY"
|
|
Referrer-Policy "strict-origin-when-cross-origin"
|
|
Permissions-Policy "camera=(), microphone=(), geolocation=()"
|
|
}
|
|
|
|
# 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
|
|
|
|
header {
|
|
X-Content-Type-Options "nosniff"
|
|
X-Frame-Options "DENY"
|
|
Referrer-Policy "strict-origin-when-cross-origin"
|
|
Permissions-Policy "camera=(), microphone=(), geolocation=()"
|
|
}
|
|
|
|
encode zstd gzip
|
|
}
|
|
|
|
# Gitea
|
|
git.monotrope.au {
|
|
reverse_proxy localhost:3000
|
|
|
|
header {
|
|
X-Content-Type-Options "nosniff"
|
|
Referrer-Policy "strict-origin-when-cross-origin"
|
|
Permissions-Policy "camera=(), microphone=(), geolocation=()"
|
|
}
|
|
|
|
encode zstd gzip
|
|
}
|
|
|
|
# GoatCounter analytics
|
|
stats.monotrope.au {
|
|
reverse_proxy localhost:8081
|
|
|
|
header {
|
|
X-Content-Type-Options "nosniff"
|
|
X-Frame-Options "DENY"
|
|
Referrer-Policy "strict-origin-when-cross-origin"
|
|
Permissions-Policy "camera=(), microphone=(), geolocation=()"
|
|
}
|
|
|
|
encode zstd gzip
|
|
}
|