explaingit

caddyserver/caddy

🔥 Hot72,559GoAudience · developerComplexity · 2/5ActiveLicenseSetup · moderate

TLDR

A web server that automatically handles HTTPS certificates and serves websites with zero manual setup. Just declare your domain in a config file and it handles the rest.

Mindmap

mindmap
  root((Caddy))
    What it does
      Auto HTTPS
      Web server
      Reverse proxy
    Configuration
      Caddyfile syntax
      JSON config
      Live API
    Protocols
      HTTP/1.1
      HTTP/2
      HTTP/3 QUIC
    Use cases
      Self-hosted sites
      API servers
      Load balancing
    Deployment
      Single binary
      No dependencies
      Linux macOS Windows

Things people build with this

USE CASE 1

Deploy a personal website or blog with automatic HTTPS in minutes without certificate management.

USE CASE 2

Set up a reverse proxy in front of your Node.js or Python app to handle HTTPS and routing automatically.

USE CASE 3

Run multiple services on one server with load balancing and automatic certificate renewal for each domain.

USE CASE 4

Self-host an API or web application on a VPS with zero manual SSL/TLS configuration.

Tech stack

GoLet's EncryptZeroSSLHTTP/3QUIC

Getting it running

Difficulty · moderate Time to first run · 30min

Requires DNS pointing to server and open ports 80/443 for certificate validation.

Open-source and production-tested; permissive license allowing free use including commercial deployment.

In plain English

Caddy is a web server that makes it easy to serve websites and applications over the internet with automatic HTTPS. The main problem it solves is the tedious setup usually required for SSL/TLS certificates (the technology that makes HTTPS work). Normally you have to manually request certificates from a certificate authority, configure your server to use them, and remember to renew them before they expire. Caddy does all of this automatically using services like Let's Encrypt and ZeroSSL, with no manual steps required. Caddy works by reading a simple configuration file called a Caddyfile, where you declare your domain names, what content or application you want to serve, and any routing rules. It handles certificate issuance and renewal silently in the background. For more complex setups it also supports a JSON-based configuration and a live JSON API that lets you change configuration without restarting the server. It supports HTTP/1.1, HTTP/2, and HTTP/3 (the latest version of the web protocol, based on QUIC). Because it is written in Go, a single binary contains everything needed to run the server with no external dependencies, not even the C runtime library. It can be extended with plugins that add reverse proxying, load balancing, authentication, and other features. You would use Caddy if you are self-hosting a website, API, or application on a server and want HTTPS to just work without manual certificate management. It is popular as a reverse proxy in front of other applications, and as a replacement for Nginx or Apache for simpler setups. The tech stack is Go, and deployment is typically a single downloaded binary. It runs on Linux, macOS, and Windows. The project is open-source and production-tested at large scale.

Copy-paste prompts

Prompt 1
Show me how to set up Caddy to serve a static website with automatic HTTPS using a Caddyfile.
Prompt 2
How do I configure Caddy as a reverse proxy for a Node.js app running on localhost:3000?
Prompt 3
Write a Caddyfile that serves multiple domains with automatic certificate renewal and load balancing.
Prompt 4
How do I use Caddy's JSON API to change configuration without restarting the server?
Prompt 5
What's the simplest way to deploy Caddy on a Linux VPS and keep it running with systemd?
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.