Self-Hosted Hugo: Building a Deployment Pipeline Without CI/CD

Most Hugo tutorials end with “deploy to Netlify” or “push to GitHub Pages.” If you’re running your own infrastructure, neither of those is satisfying. Here’s the pipeline I settled on for deploying this site to a self-hosted Caddy VM.

Architecture

Windows dev machine          Caddy VM (DMZ)
────────────────             ──────────────
hugo --minify ──── SCP ────▶ /opt/caddy/site/
                             Caddy serves static files
                             Cloudflare proxies + caches

No containers. No CI runners. No GitHub. The pipeline is a batch script, a Caddy file_server block, and an SSH key.

[Read More]