Caddy
The web server that makes HTTPS easy. Automatic certificates, HTTP/3, declarative configuration — a concrete alternative to and Traefik for agencies and hosters.
Project profile
Caddy
Ultimate Server with Automatic HTTPS
As of: June 1, 2026
GitHub stars
73k
Forks
4.8k
Open issues
249
License
Apache-2.0
Latest version
v2.11.3
Language
Go
Third-party source · Wikidata (CC0)
Wikidata profile
Caddy
License
Apache Software License 2.0
What is Caddy?
Caddy is a web server and , written in Go, open source under Apache-2.0. Comparable to or Apache — with one decisive difference: certificates are fetched automatically, renewed automatically, swapped in automatically. No Certbot, no job, no 90-day alarm clock.
Configuration runs through the declarative Caddyfile syntax — three lines are enough for a working HTTPS site. Plus: HTTP/3, Brotli, Zstd, hot reload, JSON for automation, plugin system via xcaddy. Caddy has existed since 2015, version 2 runs in production at Cloudflare, Stripe and Mercedes-Benz.
Why a web agency uses Caddy
A web agency typically runs 20–50 client domains in parallel — WordPress, Statamic, Next.js, headless CMS, online shops. In that means: 30 server blocks, 30 Certbot paths, 30 renewal hooks, 30 ways for a certificate to silently expire.
Caddy collapses that into one Caddyfile with an import directive. SSL runs in the background, new domains go live with hot reload, no service restart. The agency trades 30 points of potential failure for one point of correct automation — a heavy simplification of operational responsibility.
Client case study
Web agency Pixelhaus
Five employees, 30 active client domains, migrated from + Certbot to Caddy three years ago. Before: regular SSL outages because a job ran, a hook was missing or a renewal hook hit the wrong directory. Now: one Caddyfile, no , no outages.
Auto-SSL for 30 client domains
HTTPS enforcement + www redirect
Reverse proxy to backend containers
Security headers centrally
Compression + HTTP/3
Hot reload without downtime
What now runs in the Caddy setup
Eight productive configuration patterns the agency has used for three years. Each template is its own Caddyfile import, ready to copy for new clients.
WordPress behind PHP-FPM
Next.js SSR via reverse proxy
Static site (file_server)
Headless Strapi on a subdomain
Mailcow web UI subdomain
Uptime Kuma status page
Apex + www + staging
Wildcard DNS + DNS challenge
Core capabilities of Caddy
What makes Caddy distinctive as a web server — and which capabilities actually carry an agency setup.
Automatic HTTPS
HTTP/3 + QUIC out of the box
Caddyfile — declarative, not procedural
Hot reload without downtime
JSON config + admin API
Plugin ecosystem via xcaddy
Honest alternatives
If Caddy is not a fit — what else?
Three web servers on the market, all three production-grade. Each has a reason why people use it — and at least one reason why people avoid it. Honest framing here — no marketing romance.
Market leader
nginx
F5 (formerly NGINX Inc.), BSD-2
- + Established market leader, huge community
- + Extremely performant, well documented
- − Auto-SSL only via Certbot + cron job
- − Lots of config boilerplate, sed magic common
Docker focused
Traefik
Traefik Labs, MIT license
- + Auto-discovery of Docker containers via labels
- + Auto-SSL similar to Caddy
- − Higher configuration complexity
- − Less suited without container orchestration
Classic
Apache httpd
Apache Foundation, Apache-2.0
- + 30+ years established, runs on everything
- + Flexible .htaccess for shared hosting
- − Auto-SSL only via mod_md or Certbot
- − Outdated for modern stack architectures
Rule of thumb: if you already know and only run a handful of domains, there is no pressure to switch. If you run 20+ domains, need auto-SSL and hot reload, or want to live without Certbot dance, you are productive on Caddy after 30 minutes. Traefik is the other strong argument for Docker-centric setups — choice is a matter of taste.
Pricing
Apache-2.0. Clean. No asterisks.
License
Apache-2.0 — an OSI-approved open-source license with no branding clause, no anti-competition clause, no sustainable-use asterisk. Read the source, change it, sell it commercially, all permitted.
Running costs
One VPS that would have run a web server anyway. Caddy replaces nginx or Apache 1:1, no extra license or cloud costs. Hardware requirements identical to nginx.
Effort
First HTTPS site live: 3 minutes (download binary, three lines of Caddyfile, start). Migrating a 30-domain agency from nginx to Caddy: 1 consulting day including snippet library and hot-reload workflow.
Unlike or , Caddy is classic open source — no 'fair-code', no custom license, no branding obligation. Refreshing. A complete Apache-2.0 software, stable for ten years and running in production at Cloudflare, Mercedes-Benz and Stripe.
Site block with security headers and Brotli
example-shop.com, www.example-shop.com {
redir https://example-shop.com{uri} permanent
encode br zstd gzip
header {
Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
X-Frame-Options DENY
X-Content-Type-Options nosniff
Referrer-Policy strict-origin-when-cross-origin
}
root * /var/www/example-shop
php_fastcgi unix//run/php/php8.3-fpm.sock
file_server
log {
output file /var/log/caddy/shop-access.log
format json
}
}Example Caddyfile — 30 client domains in one file
{
email admin@agency.com
}
import sites/*.caddy
# sites/clientA-wordpress.caddy
clientA.com, www.clientA.com {
redir https://clientA.com{uri} permanent
root * /var/www/clientA
php_fastcgi unix//run/php/php8.3-fpm.sock
file_server
}
# sites/clientB-nextjs.caddy
clientB.com {
reverse_proxy localhost:3000
header Strict-Transport-Security "max-age=31536000"
}
# sites/clientC-strapi-api.caddy
api.clientC.io {
reverse_proxy strapi:1337
encode gzip zstd
}Related topics
Caddy is the door — what is behind it?
Caddy is the entry server. Workflows are orchestrated by , monitoring runs on , the stack hangs off the backend. The full picture:
Ready for the next step?
Free intro call, no strings attached. In 30 minutes you'll know whether and how AI can help your business.