Caddy

devopssecurity

Modern web server and reverse proxy with automatic HTTPS. Caddy provisions and renews TLS certificates without any configuration. Simpler setup than Nginx for most use cases

#reverse-proxy#web-server#https#tls#lets-encrypt#docker#go#self-hosted

Quick Start

docker run -p 80:80 -p 443:443 -v caddy_data:/data caddy caddy reverse-proxy --from your.domain.com --to localhost:8080

Overview

Caddy is a web server and reverse proxy written in Go. The defining feature is automatic HTTPS: point Caddy at a domain and it provisions a TLS certificate from Let’s Encrypt or ZeroSSL, serves the site over HTTPS, and renews the certificate before it expires, all without any extra configuration or Certbot setup.

The Caddyfile configuration format is designed to be readable. A reverse proxy entry with HTTPS typically takes two or three lines. The same configuration in Nginx would require a server block with SSL certificate paths, cipher lists, and protocol settings. For common homelab and small production patterns, Caddy is considerably less configuration to maintain.

Beyond reverse proxying, Caddy handles HTTP/3, automatic HTTP-to-HTTPS redirects, load balancing, static file serving, and request rewriting. A plugin system extends it for more specialised use cases.

The honest trade-off versus Nginx: Caddy is simpler and more opinionated. For teams with existing Nginx configurations or setups that need fine-grained control over every header and proxy parameter, migrating to Caddy may not justify the effort. For new projects or anyone starting from scratch, the automatic certificate management removes a consistent maintenance burden. With 72,900 GitHub stars, it is a mature and well-supported option.

Compared to Nginx Proxy Manager: Caddy is file-based configuration with no GUI; NPM is GUI-based with less flexibility. Choose based on whether you prefer code or clicks.

Use Cases

Specific ways to use Caddy for your workflow.

01
Terminate HTTPS for self-hosted services without managing certificates manually
02
Reverse proxy Docker services with automatic certificate provisioning
03
Serve static sites over HTTPS with a minimal two-line Caddyfile
04
Replace Nginx for projects where automatic certificate renewal matters

Deployment Strategy

Recommended ways to host Caddy in your own environment.

docker
self-hosted
binary