转载自我的个人博客:Caddy自编译
配置 Golang 环境
需要先配置 Golang 环境:Download and install - The Go Programming Language
bash
wget https://go.dev/dl/go1.24.4.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.24.4.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
最后检查一下是否安装成功:
bash
go version
安装 xcaddy
如果你是在国内环境下编译的话,需要配置镜像,在这里我使用阿里云的:
bash
export GOPROXY=https://mirrors.aliyun.com/goproxy/
bash
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
安装完成之后需要查找 xcaddy 的安装位置,一般来说 go 会将其安装到 $HOME/go/bin
目录下,你可以检查:

使用临时路径运行 xcaddy:
bash
$HOME/go/bin/xcaddy build --with github.com/caddy-dns/alidns
这里的 --with
后面就需要你找可以编译的 Caddy 插件,我这里编译一个支持阿里云 DNS-01 的 DNS 解析的插件
编译完成之后会自己检查对应的版本

替换原版 Caddy
先停掉原本原版的 Caddy:
bash
systemctl stop caddy
随后,建议让 Caddy 服务不自动重启/不再开机启动(避免替换过程中被意外重启):
bash
sudo systemctl disable caddy
寻找原本 Caddy 的二进制位置:
bash
which caddy
一般来说会在 /usr/bin/caddy
位置下
假设查到官方二进制在 /usr/bin/caddy
,那就进行备份:
bash
mv /usr/bin/caddy /usr/bin/caddy.backup-official
之后将新编译的二进制文件移动到原来的位置
bash
sudo cp ./caddy /usr/bin/caddy
最好重新设置一下权限,避免出现问题:
bash
sudo chown root:root /usr/bin/caddy
sudo chmod 755 /usr/bin/caddy
最后检查一下是否更新成功:
bash
caddy version
还可以检查一下插件列表,看看是不是有你编译的插件:
bash
caddy list-modules

是否需要修改 systemd Service 文件
一般来说,如果你是直接替换官方的二进制文件,那其实没有必要修改文件,直接用原来的就可以了,但是你要是自己整了活,那就只能自己重新写了
但是我比较菜,这里就不写参考的配置文件了