文件
贊助的專案

從原始碼建置

如果您需要自訂建置版本 (例如,包含外掛模組),有多種選項可以建置 Caddy

  • Git:從 Git 儲存庫建置
  • xcaddy:使用 xcaddy 建置
  • Docker:建置自訂 Docker 映像檔

需求條件

  • Go 1.20 或更新版本

套件支援檔案 章節包含給使用 APT 命令在 Debian 衍生系統上安裝 Caddy,但因操作需要自訂建置執行檔的使用者的指示。

Git

需求條件

  • 已安裝 Go (請參閱上方)

複製儲存庫

git clone "https://github.com/caddyserver/caddy.git"

如果您沒有 git,您可以從 GitHub 下載原始碼作為檔案封存檔。每個發行版本也都有原始碼快照。

建置

cd caddy/cmd/caddy/
go build

Go 程式很容易為其他平台編譯。只需設定不同的 GOOSGOARCH 和/或 GOARM 環境變數即可。(詳細資訊請參閱 go 文件。)

例如,要在您不是在 Windows 上時為 Windows 編譯 Caddy

GOOS=windows go build

或者類似地,當您不是在 Linux 或 ARMv6 上時,為 Linux ARMv6 編譯 Caddy

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

如您所見,您可以使用 @ 語法自訂外掛模組的版本。版本可以是標籤名稱、commit SHA 或分支。

使用 xcaddy 進行跨平台編譯的方式與使用 go 命令相同。例如,要為 macOS 進行跨平台編譯

GOOS=darwin xcaddy build

Docker

您可以使用 :builder 映像檔作為捷徑,以使用自訂模組建置新的 Caddy 二進位檔

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 版本以開始。

請注意第二個 FROM 指令 — 這會產生更小的映像檔,方法是簡單地將新建立的二進位檔覆蓋在常規 caddy 映像檔之上。

建置器使用 xcaddy 建置具有所提供模組的 Caddy,類似於上方概述的程序。

若要使用 Docker Compose,請參閱我們建議的 compose.yml 和使用說明。

Debian/Ubuntu/Raspbian 自訂建置的套件支援檔案

此程序旨在簡化執行自訂 caddy 二進位檔,同時保留 caddy 套件中的支援檔案。

此程序允許使用者利用官方套件中的預設設定、systemd 服務檔案和 bash-completion。

需求條件

  • 依照這些指示安裝 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 的建置版本,然後將目前的二進位檔替換為新的二進位檔。