The best infrastructure is the kind you forget you installed.
What it does for me
I don't run anything heroic. A few static sites, one or two small services behind a reverse proxy, the occasional weekend toy. Caddy gives me HTTPS without me ever typing the word certbot, a config file that reads like English, and an HTTP/3 endpoint I didn't have to configure on purpose.
The whole config, mostly
ellis-wren.example {
root * /var/www/ellis
file_server
encode zstd gzip
}
notes.example {
reverse_proxy localhost:8081
}
That's the file. There is no second file. I don't have a separate certificate renewal cron. I don't have a separate nginx-to-LE bridge. The thing that used to take me a Saturday afternoon — getting a small site online with a green padlock — now takes a caddy reload.
What I don't love
- The JSON config API is powerful, but I've never needed it; the Caddyfile is enough for my scale and I worry the JSON path will quietly eat the documentation.
- Some niche modules live in third-party builds, which means I sometimes need to remember which binary I'm running.
- Compared to nginx, there's less Stack Overflow to fall into when something is weird — but there's also been less weird, so it evens out.
Boring software is a feature, not a confession.
— something I muttered while another auto-renewal silently succeeded