- Created comprehensive devigo Ansible role with Podman Quadlet support - Deployed devigo-site container (Hugo + nginx) via systemd - Deployed devigo-decap-oauth OAuth2 proxy for Decap CMS - Integrated with Caddy reverse proxy for HTTPS Services deployed: - devigo.no (apex domain, primary) - www.devigo.no (redirects to apex) - decap.jnss.me (OAuth proxy) Key features: - REGISTRY_AUTH_FILE environment for Podman GHCR authentication - TRUSTED_ORIGINS (plural) for decapcms-oauth2 multi-origin support - JavaScript-based Decap CMS initialization (eliminates YAML MIME dependency) - nginx location block for YAML MIME type (text/yaml) - Automated deployment via GitHub Actions CI/CD - Comprehensive documentation with troubleshooting guide - Architecture decision records Fixes applied during deployment: - OAuth origin trust validation (TRUSTED_ORIGINS vs TRUSTED_ORIGIN) - MIME type handling strategy (location-specific vs server-level types block) - Decap CMS initialization method (JavaScript vs link tag) - Podman authentication for systemd services (REGISTRY_AUTH_FILE) Testing status: - ✅ MIME types verified (HTML, CSS, YAML all correct) - ✅ OAuth authentication working - ✅ Container image pulls from private GHCR - ✅ Automated deployments functional - ✅ Site fully operational at devigo.no
34 lines
866 B
Django/Jinja
34 lines
866 B
Django/Jinja
# Devigo Website - Reverse Proxy to Containerized Site
|
|
# Generated by Ansible - DO NOT EDIT MANUALLY
|
|
|
|
# Redirect www to apex (apex is primary per user preference)
|
|
{{ devigo_www_domain }} {
|
|
redir https://{{ devigo_domain }}{uri} permanent
|
|
}
|
|
|
|
# Primary domain (apex)
|
|
{{ devigo_domain }} {
|
|
reverse_proxy localhost:9080
|
|
|
|
# Security headers
|
|
header {
|
|
X-Frame-Options SAMEORIGIN
|
|
X-Content-Type-Options nosniff
|
|
X-XSS-Protection "1; mode=block"
|
|
Referrer-Policy strict-origin-when-cross-origin
|
|
Permissions-Policy "geolocation=(), microphone=(), camera=()"
|
|
}
|
|
|
|
# Logging
|
|
log {
|
|
output file /var/log/caddy/devigo.log {
|
|
roll_size 100mb
|
|
roll_keep 5
|
|
}
|
|
format json {
|
|
time_format "2006-01-02T15:04:05.000Z07:00"
|
|
}
|
|
level INFO
|
|
}
|
|
}
|