Skip to content

建立 2026-09-15 更新 2026-09-15

當系統服務執行

Linux 上正式跑 Caddy,用 systemd 最省事:開機自啟、日誌進 journald、改設定可以零停機重載。Debian/Ubuntu 官方套件會裝好 caddy.service

官方:Keep Caddy Running

兩個單元檔

單元 用途
caddy.service 用 Caddyfile(或你指定的設定檔)啟動
caddy-api.service 主要靠 Admin API 改設定,啟動時 --resume 讀自動儲存的 JSON

兩個不要同時 enable。從檔案工作流切到 API:

sudo systemctl disable --now caddy
sudo systemctl enable --now caddy-api

套件預設 Caddyfile 在 /etc/caddy/Caddyfile。編輯後:

sudo systemctl reload caddy

不要為了改設定而 stop。停止等於網站中斷;reload 才會在驗證新設定成功後接上。

狀態與日誌

systemctl status caddy
journalctl -u caddy --no-pager | less +G

行程以 caddy 使用者執行,家目錄是 /var/lib/caddy

  • 憑證與 PKI:/var/lib/caddy/.local/share/caddy
  • 自動儲存的 JSON:/var/lib/caddy/.config/caddy

備份這兩個目錄,等於備份憑證與執行中設定。

覆寫單元(drop-in)

不要直接改套件提供的 service 檔,用:

sudo systemctl edit caddy

常見需求是注入 DNS 供應商 token:

[Service]
EnvironmentFile=/etc/caddy/.env

/etc/caddy/.env 權限收緊,內容不要加引號:

CLOUDFLARE_API_TOKEN=your-token-here

改完 sudo systemctl restart caddy(改環境變數通常要 restart,不是 reload)。

靜態二進位自建服務

若你是從 GitHub 放下 binary,官方文件有建立 caddy 系統使用者與單元檔的步驟。重點是:binary 放在 $PATH、Caddyfile 給 caddy 使用者可讀、資料目錄可寫。SELinux 系統還要標對檔案類型,Fedora COPR 套件會處理這件事。

Windows 可用 sc.exe 或 WinSW 註冊服務,重載仍是對 Caddy 下 caddy reload,因為 Windows 服務管理員沒有等同 systemd reload 的設定熱更新。