Caddy: the web server with automatic HTTPS
Caddy is an open-source web server and reverse proxy written in Go that obtains and renews TLS certificates on its own, with a configuration file short enough to memorize and HTTP/1, 2 and 3 support out of the box.
Drafted with AI from official documentation. Scripts were run in a test environment and repository links verified. Awaiting a human check. Did it work for you? Last edited Outdated?
caddyserver/caddy
- Stars
- 78k
- Forks
- 5.1k
- Language
- Go
- Licence
- Apache-2.0
- Last push
- 14 Oct 2026
On GitHub: Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Open on GitHubcaddyserver/caddy (about 78,000 stars) is a production web server whose defining feature is that HTTPS is on by default: name a domain in the configuration and Caddy gets a certificate from Let’s Encrypt or ZeroSSL, redirects HTTP to HTTPS, staples OCSP responses and renews everything before it expires, with no cron jobs or external tools. It serves static files, acts as a reverse proxy and load balancer, terminates TLS for other services, and speaks HTTP/3. It is a single static binary with no dependencies, released under the Apache 2.0 license.
Use it when you want a small server, a home lab or a side project online over HTTPS in minutes without learning certificate tooling; when you run several apps behind one IP and want a few lines per site; or as the TLS front door in a Docker Compose stack. Its reverse_proxy directive handles WebSockets, forwarded headers, health checks and multiple backends without extra directives. Where Nginx is the right choice for very large deployments with deep tuning and a huge pool of existing examples, Caddy wins on time to a working, secure setup. Its configuration is also available as JSON and through a live REST API, which makes it scriptable.
Install it from the official package repositories for Debian, Ubuntu, Fedora and RHEL as described on the install page, with brew install caddy on macOS, or run the caddy Docker image. Then put a Caddyfile at /etc/caddy/Caddyfile such as example.com { reverse_proxy localhost:3000 } and systemctl reload caddy. For a quick local try, caddy file-server --listen :8080 serves the current folder and caddy reverse-proxy --from localhost:8443 --to localhost:3000 fronts a dev server with a locally trusted certificate. Plugins (DNS providers for wildcard certificates, rate limiting, and more) are compiled in with the xcaddy tool or downloaded prebuilt from the website.
Caddy was created by Matt Holt in 2015 and is maintained by him and a group of core contributors with sponsorship from several companies; the community forum at caddy.community is active and the documentation is unusually clear.
Did this work for you?
No votes yet. Be the first.
If it did not work, the report form below tells the editors what went wrong.
See also
- 0279 What is a reverse proxy? A reverse proxy is a server that sits in front of your apps, receives all requests and forwards them to the right… Beginner · Explains an idea · Any system Article Web servers & reverse proxies 15 Oct 2026
- 0408 What a reverse proxy is and when you need one A reverse proxy is a server that sits in front of your application, accepts requests from the internet and forwards them to… Beginner · Explains an idea · Any system Article Web servers & reverse proxies 15 Oct 2026
- 0409 Nginx as a reverse proxy with HTTPS Put Nginx in front of an app on localhost: a server block that proxies to the port, forwards the client headers, supports… Intermediate · Step by step · Linux Article Deploying sites · Web servers & reverse proxies 15 Oct 2026
- 0410 Caddy: HTTPS reverse proxy in five lines Caddy gets and renews TLS certificates on its own. Install it, write a Caddyfile with your domain and the port your app… Beginner · Step by step · Linux Article Deploying sites · Web servers & reverse proxies 15 Oct 2026
- 0411 CORS explained, and how to fix the browser error The browser blocks a request from one origin to another unless the server allows it with Access-Control headers. Fix it in the… Intermediate · Step by step · Any system, Browser Article Making requests · Web servers & reverse proxies 15 Oct 2026
- 0412 Deploy a static site: from folder to a URL Take a folder of HTML, CSS and JavaScript and publish it at your own domain with HTTPS on a small Linux server… Beginner · Guided project · Linux, macOS Article Deploying sites · Web servers & reverse proxies 15 Oct 2026
History
Every saved edit is kept. The plot on the sleeve draws one line per edit. Open any edit to see exactly what changed.
- Dominik +2,104 chars