编译Caddy并添加腾讯云(DNSPOD)DNS支持,自动签发证书,附编译后镜像文件
Caddy是一款非常好用的HTTP代理应用,其简洁的配置和提供自动签发证书的功能深受喜爱。
不过如果部署Caddy使用非标准端口(80、443),或者在内网部署,Caddy便无法通过HTTP-01以及TLS-ALPN-01签发证书。这时候可以使用DNS-01来签发证书。不过Caddy并没有集成DNS-01模块,需要以插件的形式使用,Caddy使用插件需要通过编译的形式注入。
下面是通过注入 dns.providers.tencentcloud
来实现使用腾讯云(DNSPOD)来完成DNS-01验证。
我们以兼容性最好且最简化的流程来编译Caddy并注入 dns.providers.tencentcloud
1. Dockerfile
自动化构建
本步骤的前提是环境中已经按照docker服务,如果没有docker环境,请按照之前的教程安装docker环境
创建 Dockerfile
文件,并复制以下内容
FROM caddy:2.9.1-builder AS builder
# 设置 GOPROXY 环境变量,由于默认go proxy会被墙
ENV GOPROXY=https://goproxy.cn,direct
# 安装tencentcloud dns插件(其它dns插件类似)
RUN xcaddy build --with github.com/caddy-dns/tencentcloud
FROM caddy:2.7.6
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
- tencentcloud dns 插件地址:https://github.com/caddy-dns/tencentcloud
- 国内访问 github.com/caddy-dns/tencentcloud 不通畅,可以通过代理访问
2. 构建镜像
docker build -t caddy .
在 Dockerfile
所在目录,执行上面命令,构建完成,便可以得到带有tencentcloud DNS-01验证的 caddy docker镜像。
通过以上步骤就完成了caddy的编译,如果通过docker 部署 caddy,直接 docker run caddy 的镜像就可以了。
如果需要单独的caddy文件,可以通过 docker cp caddy_container:/usr/bin/caddy /home/user/caddy
命令复制caddy执行文件,并部署到想要的位置。
如果需要docker镜像在其它设备上部署,可以通过命令 sudo docker save -o caddy.tar caddy
打包。
附完成配置的Caddyfile内容:
{
log {
output file /etc/caddy/caddy.log
}
}
(tls_dns01) {
tls {
dns tencentcloud {
secret_id "secret_id"
secret_key "secret_key"
}
}
}
domain1.cn, domain2.cn {
import tls_dns01
reverse_proxy ip:port
}
domain3.cn {
import tls_dns01
reverse_proxy ip:port
}
评论