Caddy自编译

转载自我的个人博客: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 文件

一般来说,如果你是直接替换官方的二进制文件,那其实没有必要修改文件,直接用原来的就可以了,但是你要是自己整了活,那就只能自己重新写了

但是我比较菜,这里就不写参考的配置文件了