从官方下载的caddy不支持namesilo的https证书自动获取,需要自行编译。本文将简单介绍caddy-1.0.5的编译过程。
查看caddy支持的tls插件
caddy -plugins
在 tls
这一项看到,默认情况下只有tls.cluster.file这个选项。所以没有办法支持 namesilo
的 dns
管理。因此需要重新编译。
tls tls.cluster.file
建立工程目录
mkdir caddy
cd caddy
编写 main.go
代码
package main
import (
"github.com/caddyserver/caddy/caddy/caddymain"
// plug in plugins here, for example:
// _ "import/path/here"
_ "github.com/caddyserver/dnsproviders/namesilo"
)
func main() {
// optional: disable telemetry
// caddymain.EnableTelemetry = false
caddymain.Run()
}
初始化go模块
在新建的 main.go
文件中复制上述代码。然后运行:
go mod init caddy
构建
export GOPROXY=https://goproxy.io
go get github.com/caddyserver/caddy/caddy/caddymain
go build
总结
-
如果需要其它的DNS服务,可以查看 https://github.com/caddyserver/dnsproviders 看看有哪些已经被支持
-
go的版本需要 >= go1.13
-
在国内需要设置
GOPROXY
才能正常下载相关代码 -
在运行caddy通过namesilo的DNS获取https证书时,发现总时失败。经查询发现是检查DNS的超时时间设置太短的缘故。通过环境变量延长超时时间即可。
vim /etc/systemd/system/caddy.service
Environment=NAMESILO_PROPAGATION_TIMEOUT=3600 Environment=NAMESILO_POLLING_INTERVAL=120 Environment=NAMESILO_TTL=3600