TL;DR

Go で書かれたオープンソースの Web サーバ。TLS をデフォルトで使い、証明書の取得と更新を自動で行う。

なぜ必要か

HTTPS のサイトを立てるには、普通は証明書の取得、配置、更新を自分で管理する必要がある。Caddy は公開ドメインの証明書を Let’s Encrypt や ZeroSSL から自動で取得するので、この手間がない。ローカル環境でも、内蔵の CA で証明書を作って HTTPS で配信する。

仕組み

Caddy は HTTP/1.1、HTTP/2、HTTP/3 にデフォルトで対応している。外部への依存がない単一のバイナリなので、どの環境でも動く。

設定は Caddyfile か JSON で書く。Caddyfile は手で書きやすい形式で、JSON はより細かく制御できる。動作中の設定は管理用の API で変更でき、公式はこの API を主な設定方法としている。YAML、TOML、NGINX の設定も、アダプタで JSON に変換して使える。

機能はモジュールの組み合わせでできていて、xcaddy でプラグインを足したバイナリをビルドできる。

例

localhost で固定の文字列を返す Caddyfile は次のとおり。

localhost {
	respond "Hello, world!"
}

Caddyfile のあるディレクトリで caddy start を実行すると、https://localhost で配信が始まる。設定を変えたら caddy reload、止めるときは caddy stop を使う。初回はローカル CA のルート証明書をシステムの信頼ストアに追加するので、パスワードを求められる。

出典