ドキュメント
a project

ソースからビルドする

カスタマイズされたビルド(例:プラグインを含む)が必要な場合、Caddyをビルドするための複数のオプションがあります。

  • Git:Gitリポジトリからビルドする
  • xcaddyxcaddyを使用してビルドする
  • Docker:カスタムDockerイメージをビルドする

要件

  • 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プログラムは、他のプラットフォーム用に簡単にコンパイルできます。異なるGOOSGOARCH、および/または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がインストールされていること(上記参照)
  • xcaddyPATHにあることを確認してください

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の最新バージョンをダウンロードし、現在のバイナリを新しいバイナリに置き換えようとします。