Caddy
Open SourceThe web server that automates your HTTPS.
Published 27 September 2026
Scores
Popularity3/5
It's a well-known, growing choice in the self-hosted community specifically for its automatic-HTTPS pitch, but its adoption and star count remain well behind NGINX's decades-long dominance.
Learning Curve1/5
A working reverse proxy with HTTPS is typically a few lines of Caddyfile, and automatic certificate provisioning removes the TLS setup step entirely, making it one of the easiest reverse proxies to get running for the first time.
Flexibility3/5
The Caddyfile and JSON config cover most reverse-proxy and static-serving needs well, but its plugin ecosystem and edge-case module coverage are considerably smaller than NGINX's after two decades of third-party modules.
Performance4/5
Built in Go with a modern, concurrent architecture and native HTTP/3 support, it performs well for typical self-hosted and small-to-mid traffic workloads, though it hasn't accumulated NGINX's extreme-scale benchmark track record.
Portability5/5
Apache 2.0 licensed, distributed as a single static binary with an official Docker image, and runs identically on any VPS or OS with zero vendor lock-in.
About Caddy
Caddy is an open-source web server and reverse proxy that made automatic HTTPS its headline feature: point it at a domain and it obtains and renews a Let's Encrypt (or ZeroSSL) certificate on its own, with no separate Certbot step required. This is the main reason it's become a popular default for self-hosted Docker Compose stacks, where minimizing manual TLS setup matters more than the fine-grained control NGINX offers.
Its configuration format, the Caddyfile, is deliberately terse compared to NGINX's directive syntax — a working reverse proxy with HTTPS is often a handful of lines. Caddy also supports JSON config and a native HTTP API for dynamic reconfiguration. Written in Go, it's distributed as a single static binary with no external dependencies, and ships an official Docker image, making it straightforward to drop into any self-hosted stack.
Caddy is fully open source (Apache 2.0 license) with no paid tier or commercial edition — unlike NGINX Plus or Traefik Enterprise, there is no upsell path; the entire feature set is free. It trades some of NGINX's raw performance ceiling and Traefik's native container-orchestrator service discovery for simplicity: there's no built-in Docker label-based auto-configuration, so routes are still defined in the Caddyfile rather than discovered automatically.
Key Features
- Automatic HTTPS — obtains and renews Let's Encrypt/ZeroSSL certificates with zero manual steps
- Caddyfile — a minimal, human-readable config format
- Single static binary with no external dependencies
- Built-in reverse proxy, static file server, and load balancer
- JSON config API for dynamic runtime reconfiguration
- HTTP/2 and HTTP/3 support out of the box
Pros
- Automatic HTTPS removes an entire category of manual TLS/Certbot setup work
- Caddyfile syntax is dramatically simpler to read and write than NGINX config
- 100% open source with no paid tier or feature gating
- Single binary, easy to run in any Docker Compose self-hosted stack
Cons
- Smaller plugin/module ecosystem than NGINX's decades-old library
- No native Docker label-based service discovery — routes are still defined manually in the Caddyfile, unlike Traefik
- Less battle-tested at extreme scale than NGINX in very high-traffic production environments
- Fewer Stack Overflow answers and tutorials than NGINX, since it's a newer, smaller project
Caddy Pricing
Open SourceTech Stacks with Caddy
n8n Self-Hosted
InfrastructureSelf-host n8n on your own VPS, cloud instance, or hardware for complete data ownership and no per-execution pricing. Docker keeps the deployment reproducible on any host; PostgreSQL, SQLite, or managed Neon can store workflows and execution history, and a reverse proxy you configure or a self-hosted PaaS handles routing and TLS.
Ghost Self-Hosted
InfrastructureRun Ghost on your own server instead of paying Ghost(Pro) as your audience grows. Ghost publishes, manages members and paid subscriptions, and sends newsletters, with MySQL storing content and members and Docker keeping installs and upgrades to a few commands.
Plausible Self-Hosted
InfrastructureRun Plausible Community Edition on your own server for cookie-free analytics with no pageview caps. ClickHouse stores the events and answers dashboard queries fast at high volume, PostgreSQL holds accounts and site settings, and the official Docker Compose file brings up all three containers together.
Tools Related to Caddy
Works well with Caddy(3)
Hetzner VPS instances are a common host for self-hosted Caddy deployments, valued for combining low cost with Caddy's automatic HTTPS.
Caddy is commonly placed behind Cloudflare Tunnel in self-hosted setups — the tunnel handles secure ingress with no open ports, Caddy handles routing and automatic HTTPS between the actual local services.
Caddy is commonly placed behind ngrok when the tunnel needs to reach more than one local service — ngrok handles the public URL, Caddy routes to the actual backend services.
Alternatives to Caddy(2)
Caddy and Traefik both offer automatic HTTPS with minimal config, but Traefik is built specifically around container orchestrator service discovery while Caddy uses a flat Caddyfile.
Caddy and NGINX solve the same reverse-proxy/web-server job, but NGINX offers a much larger module ecosystem and higher performance ceiling at the cost of manual TLS setup and a steeper config language.
Learning Resources
No resources yet — check back soon.