A high-performance web server, reverse proxy, load balancer, API gateway and content cache written in C.
caddyserver/caddy
Caddy is an extensible web server written in Go that serves HTTP/1.1, HTTP/2 and HTTP/3 and enables HTTPS automatically by default.
Open-source alternative to:NGINX
Apache HTTP Server
- Stars
- 78,198
- Forks
- 5,166
- Open issues
- 293
- Last commit
- yesterday
What is it?
Caddy is a web server and reverse proxy written in Go. Its main draw is automatic HTTPS: it obtains and renews TLS certificates from ZeroSSL or Let's Encrypt for public names, and runs a managed local CA for internal names and IP addresses, without manual certificate setup.
Configuration can be written in the human-friendly Caddyfile, in native JSON, or in other formats converted through config adapters such as YAML or NGINX syntax. Changes can be applied at runtime through a JSON API. Caddy is built from modules, so functionality can be added through plugins, and it can be compiled with the xcaddy builder.
Caddy runs as a single binary with no external dependencies and supports HTTP/1.1, HTTP/2 and HTTP/3 by default.
Key features
- 01Automatic HTTPS with certificates from ZeroSSL or Let's Encrypt
- 02Built-in local CA for internal names and IP addresses
- 03Caddyfile, native JSON, and JSON API configuration
- 04Config adapters for YAML, TOML, NGINX and other formats
- 05HTTP/1.1, HTTP/2 and HTTP/3 enabled by default
- 06Modular architecture with plugins built via xcaddy
Use cases
- Serving static sites or web apps with HTTPS handled automatically
- Reverse proxying requests to backend services
- Running HTTPS for internal services with a local certificate authority
- Managing server configuration dynamically through an API
Quick start
- 1
Download Caddy from GitHub Releases and put the executable in your PATH
- 2
Build Caddy with the xcaddy builder
xcaddy build
Things to know
- Building from source requires Go 1.26.0 or newer.
Topics
FAQ
- What is caddy?
- Caddy is an extensible web server written in Go that serves HTTP/1.1, HTTP/2 and HTTP/3 and enables HTTPS automatically by default. Caddy is a web server and reverse proxy written in Go. Its main draw is automatic HTTPS: it obtains and renews TLS certificates from ZeroSSL or Let's Encrypt for public names, and runs a managed local CA for internal names and IP addresses, without manual certificate setup.
- Is caddy free to use? What license does it have?
- caddy is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is caddy still maintained?
- Actively maintained. The last commit to caddy was on Oct 20, 2026.
- What can I use caddy for?
- Serving static sites or web apps with HTTPS handled automatically Reverse proxying requests to backend services Running HTTPS for internal services with a local certificate authority Managing server configuration dynamically through an API
- How do I install caddy?
- Download Caddy from GitHub Releases and put the executable in your PATH Build Caddy with the xcaddy builder: xcaddy build
- Where can I get caddy?
- The source code and installation instructions are on GitHub: https://github.com/caddyserver/caddy
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A tiny authentication and authorization server that works as middleware for Traefik, Nginx and Caddy, or as a standalone SSO login server.
A web-based graphical interface for nginx that lets you manage virtual hosts, proxies, SSL certificates and streams without editing config files by hand.
A self-hosted tunnel written in Go that exposes localhost services to the internet through your own domain and server.
A cloud native HTTP reverse proxy and load balancer that auto-configures routes from Docker, Kubernetes, Consul and other orchestrators.
Open-source authentication and authorization server adding two-factor login and single sign-on to web apps via a portal used with reverse proxies.