跳到正文

安装

Caddy 是一个静态编译的 Go 程序,不依赖 glibc 版本、不需要运行时。这意味着下载、解压、运行,三步结束。

推荐用官方仓库,可以自动跟版本:

终端窗口
# Ubuntu / Debian
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
| sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

不用仓库也行,直接下二进制:

终端窗口
curl -o caddy 'https://caddyserver.com/api/download?os=linux&arch=amd64'
sudo install caddy /usr/local/bin/caddy
终端窗口
brew install caddy

Homebrew 会顺便装好 caddy.service,需要常驻就跑:

终端窗口
brew services start caddy
终端窗口
winget install caddyserver.caddy

或者用 scoop:

终端窗口
scoop bucket add main https://github.com/caddy-scoop/scoop-bucket
scoop install caddy
终端窗口
docker run -d \
-p 80:80 \
-p 443:443 \
-p 443:443/udp \
-v /path/to/Caddyfile:/etc/caddy/Caddyfile:ro \
-v caddy_data:/data \
-v caddy_config:/config \
caddy:2

三个挂载点各司其职:

挂载 用途
/etc/caddy 配置文件
/data 证书和密钥,必须持久化,否则每次重建容器都要重新申请证书
/config 自动生成的运行时配置

包管理器安装会自动创建 /etc/systemd/system/caddy.service。手装的需要自己写:

[Unit]
Description=Caddy
After=network.target
[Service]
Type=notify
User=caddy
Group=caddy
ExecStart=/usr/local/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/bin/kill -USR1 $MAINPID
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
终端窗口
sudo systemctl daemon-reload
sudo systemctl enable --now caddy
sudo systemctl reload caddy # 改完配置后热加载
终端窗口
caddy version
caddy list-modules | wc -l # 模块数量,确认编译没被裁剪
sudo caddy validate --config /etc/caddy/Caddyfile