ソースからビルドする
カスタマイズされたビルド(例:プラグインを含む)が必要な場合、Caddyをビルドするための複数のオプションがあります。
要件
- Go 1.20以降
「Debian/Ubuntu/Raspbian向けのカスタムビルドのパッケージサポートファイル」セクションには、Debian派生システムでAPTコマンドを使用してCaddyをインストールしたが、操作にカスタムビルドの実行ファイルが必要なユーザー向けの手順が含まれています。
Git
要件
- Goがインストールされていること(上記参照)
リポジトリのクローンを作成する
git clone "https://github.com/caddyserver/caddy.git"
gitがない場合は、ソースコードをファイルアーカイブとしてGitHubからダウンロードできます。各リリースにはソーススナップショットも含まれています。
ビルド
cd caddy/cmd/caddy/
go build
Goプログラムは、他のプラットフォーム用に簡単にコンパイルできます。異なるGOOS、GOARCH、および/またはGOARM環境変数を設定するだけです。(詳細については、Goのドキュメントを参照してください。)
たとえば、Windows以外の環境でCaddyをWindows用にコンパイルするには
GOOS=windows go build
または、LinuxまたはARMv6以外の環境でLinux ARMv6用にコンパイルするには
GOOS=linux GOARCH=arm GOARM=6 go build
xcaddy
xcaddyコマンドは、バージョン情報やプラグインを含むCaddyをビルドする最も簡単な方法です。
要件
- Goがインストールされていること(上記参照)
xcaddyがPATHにあることを確認してください
Caddyのソースコードをダウンロードする必要は**ありません**(自動的にダウンロードされます)。
Caddyのビルド(バージョン情報を含む)は、次のように簡単です。
xcaddy build
プラグインを使用してビルドするには、--withを使用します
xcaddy build \
--with github.com/caddyserver/nginx-adapter
--with github.com/caddyserver/ntlm-transport@v0.1.1
ご覧のとおり、@構文を使用してプラグインのバージョンをカスタマイズできます。バージョンは、タグ名、コミットSHA、またはブランチです。
xcaddyを使用したクロスプラットフォームコンパイルは、goコマンドと同じように機能します。たとえば、macOS用にクロスコンパイルするには
GOOS=darwin xcaddy build
Docker
カスタムモジュールを使用して新しいCaddyバイナリをビルドするためのショートカットとして、:builderイメージを使用できます。
FROM caddy:<version>-builder AS builder
RUN xcaddy build \
--with github.com/caddyserver/nginx-adapter \
--with github.com/hairyhenderson/caddy-teapot-module@v0.0.3-0
FROM caddy:<version>
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
<version>は、開始するCaddyの最新バージョンに置き換えてください。
2番目のFROM命令に注目してください。これは、新しくビルドされたバイナリを通常のcaddyイメージの上に重ねるだけで、はるかに小さいイメージを作成します。
ビルダーは、上記で概説したプロセスと同様に、xcaddyを使用して提供されたモジュールを使用してCaddyをビルドします。
Docker Composeを使用するには、推奨されるcompose.ymlと使用手順を参照してください。
Debian/Ubuntu/Raspbian向けのカスタムビルドのパッケージサポートファイル
この手順は、caddyパッケージのサポートファイルを保持しながら、カスタムcaddyバイナリの実行を簡素化することを目的としています。
この手順により、ユーザーは公式パッケージのデフォルト設定、systemdサービスファイル、およびbash補完を利用できます。
要件
- これらの手順に従って
caddyパッケージをインストールします - カスタム
caddyバイナリをビルドする(上記のセクションを参照)か、カスタムビルドをダウンロードする - カスタム
caddyバイナリは、現在のディレクトリにある必要があります
手順
sudo dpkg-divert --divert /usr/bin/caddy.default --rename /usr/bin/caddy
sudo mv ./caddy /usr/bin/caddy.custom
sudo update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.default 10
sudo update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.custom 50
sudo systemctl restart caddy
説明
-
dpkg-divertは、/usr/bin/caddyバイナリを/usr/bin/caddy.defaultに移動し、パッケージがこの場所にファイルをインストールしようとした場合に備えて転送を設定します。 -
update-alternativesは、目的のcaddyバイナリから/usr/bin/caddyへのシンボリックリンクを作成します -
systemctl restart caddyは、デフォルトバージョンのCaddyサーバーをシャットダウンし、カスタムバージョンを起動します。
以下を実行し、画面上の情報に従うことで、カスタムとデフォルトのcaddyバイナリを切り替えることができます。次に、Caddyサービスを再起動します。
update-alternatives --config caddy
この後Caddyをアップグレードするには、caddy upgradeを実行します。これは、現在のビルドと同じプラグインを持つCaddyの最新バージョンをダウンロードし、現在のバイナリを新しいバイナリに置き換えようとします。