ソースからビルドする
カスタマイズされたビルド(例:プラグインを含む)が必要な場合、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の最新バージョンをダウンロードし、現在のバイナリを新しいバイナリに置き換えようとします。