
caddy v2.11.7
高速かつ拡張可能なマルチプラットフォームHTTP/1-2-3ウェブサーバー(自動HTTPS対応)
のプロジェクト
すべてのサイトを HTTPS に
Caddy は、デフォルトで TLS を使用する拡張可能なサーバープラットフォームです。
メニュー
機能
- Caddyfile による簡単な設定
- ネイティブ JSON 設定 による強力な設定
- JSON API による動的な設定
- JSON が好みでない場合は設定アダプター
- デフォルトで自動 HTTPS
- パブリック名には ZeroSSL と Let's Encrypt
- 内部名と IP 用の完全管理されたローカル CA
- クラスタ内の他の Caddy インスタンスと連携可能
- マルチ発行者フォールバック
- Encrypted ClientHello (ECH) サポート
- TLS/OCSP/証明書関連の問題で他のサーバーがダウンしても稼働し続ける
- 数兆件のリクエストを処理し、数百万の TLS 証明書を管理してきた実運用に耐える実績
- 実運用で証明された数十万サイトへのスケール
- HTTP/1.1、HTTP/2、HTTP/3 をすべてデフォルトでサポート
- 高い拡張性を持つモジュラーアーキテクチャにより、肥大化せずに何でも実現
- どこでも動作し、外部依存関係なし(libc さえも不要)
- 他のサーバーよりも高いメモリ安全性の保証を持つ Go 言語で記述
- 実際に使っていて楽しい
- さらに発見できることがたくさん
インストール
最も簡単でクロスプラットフォームな始め方は、GitHub Releases から Caddy をダウンロードし、実行ファイルを PATH に配置することです。
その他のインストール手順については、オンラインドキュメントをご覧ください。
ソースからのビルド
要件:
開発用
注: これらの手順では適切なバージョン情報が埋め込まれません。そのためには、次のセクションの手順に従ってください。
$ git clone "https://github.com/caddyserver/caddy.git"
$ cd caddy/cmd/caddy/
$ go build
Caddy を実行すると、設定で特に指定しない限り、低いポートにバインドしようとすることがあります。OS がこれに昇格した権限を要求する場合、新しいバイナリにその権限を与える必要があります。Linux では、次のように簡単に実行できます: sudo setcap cap_net_bind_service=+ep ./caddy
一時的なバイナリのみを作成する go run を使いたい場合でも、付属の setcap.sh を使って次のように実行できます:
$ go run -exec ./setcap.sh main.go
setcap のためにパスワードを入力したくない場合は、sudo visudo を使って sudoers ファイルを編集し、ユーザーアカウントがパスワードなしでそのコマンドを実行できるようにします。例えば:
username ALL=(ALL:ALL) NOPASSWD: /usr/sbin/setcap
username を実際のユーザー名に置き換えてください。十分注意し、何をしているのか理解している場合にのみこれを行ってください! 私たちは Caddy の使い方を文書化する資格はありますが、Go ツールやあなたのコンピュータについてはそうではありません。これらの手順は便宜のために提供しているだけです。ご自身の責任でご自身のコンピュータの使い方を学び、必要な調整を行ってください。
その後、すべてのモジュールまたは特定のモジュールでテストを実行できます:
$ go test ./...
$ go test ./modules/caddyhttp/tracing/
バージョン情報やプラグインを含める場合
ビルダーツール xcaddy を使用すると...
$ xcaddy build
...以下の手順が自動化されます:
- 新しいフォルダを作成:
mkdir caddy - そのフォルダに移動:
cd caddy - Caddy の main.go を空のフォルダにコピーします。追加したいカスタムプラグインのインポートを追加します。
- Go モジュールを初期化:
go mod init caddy - (オプション) Caddy のバージョンを固定:
go get github.com/caddyserver/caddy/v2@versionのversionを git タグ、コミット、またはブランチ名に置き換えます。 - (オプション) プラグインのインポートを追加してプラグインを追加:
_ "import/path/here" - コンパイル:
go build -tags=nobadger,nomysql,nopgx
クイックスタート
Caddy のウェブサイトには、チュートリアル、クイックスタートガイド、リファレンスなどを含むドキュメントがあります。
経験レベルに関係なく、すべてのユーザーが Getting Started ガイドを読んで Caddy の使い方に慣れることをお勧めします。
時間が少ししかない場合は、ウェブサイトにいくつかのクイックスタートチュートリアルがありますので、そこから選んでください! ただし、クイックスタートチュートリアルを終えた後は、ソフトウェアの仕組みを理解するために、さらにドキュメントを読んでください。🙂
概要
Caddy は HTTPS サーバーとして最もよく使われますが、長時間実行される任意の Go プログラムに適しています。何よりもまず、Go アプリケーションを実行するためのプラットフォームです。Caddy の「アプリ」は、Caddy モジュールとして実装された単なる Go プログラムです。tls と http の 2 つのアプリが Caddy に標準で同梱されています。
Caddy アプリは、自動ドキュメント、API 経由のオンラインでの優雅な設定変更、および他の Caddy アプリとの統合の恩恵を即座に受けられます。
JSON は Caddy のネイティブな設定言語ですが、Caddy は設定アダプターからの入力も受け付けることができ、基本的に任意の設定形式を JSON に変換できます: Caddyfile、JSON 5、YAML、TOML、NGINX 設定など。
Caddy を設定する主な方法はその API を通じてですが、設定ファイルを好む場合は、コマンドラインインターフェースもそれらをサポートしています。
Caddy は、既存のどのウェブサーバーと比較しても前例のないレベルの制御を提供します。Caddy では、通常、HTTP ハンドラーや TLS ハンドシェイクからストレージ媒体まで、すべてを支えるメモリ内の初期化された型の実際の値を設定します。Caddy はまた、他のウェブサーバーに対して多大な改善をもたらす強力なプラグインシステムを備え、非常によく拡張できます。
この設計の力を活用するには、設定ドキュメントがどのように構造化されているかを知る必要があります。詳細については、Caddy の設定構造についてのドキュメントサイトをご覧ください。
Caddy の設定のほぼすべては、他のウェブサーバーのように CLI フラグや環境変数、設定ファイルに散在するのではなく、単一の設定ドキュメントに含まれています。これにより、サーバー設定の管理がより簡単になり、隠れた変数や要因が減少します。
完全なドキュメント
私たちのウェブサイトには完全なドキュメントがあります: