Caddy自动申请HTTPS

用Docker部署Caddy

Docker 仓库里的2.0版本的caddy没有包含使用 dns-01 方式申请证书的 tls dns cloudflare 模块,需要自己使用 官方的构建镜像 caddy:builder 构建包含域名模块的 caddy docker 镜像。2.0版本的 DNS provider 模块地址 https://github.com/caddy-dns

docker pull caddy:builder

构建镜像的Dockerfile文件如下,添加 cloudflare 模块。如果使用国内域名解析服务请添加lego-deprecated 模块

FROM caddy:2.0.0-builder AS builder

RUN caddy-builder \
    github.com/caddy-dns/cloudflare
    github.com/caddy-dns/lego-deprecated #更多的dns provider

FROM caddy:2.0.0

COPY --from=builder /usr/bin/caddy /usr/bin/caddy

国内使用docker 构建镜像因为网络问题,需要使用代理

export https_proxy="socks5://serverip:port"

构建镜像

docker build --network host --build-arg https_proxy -t quadword/caddy:1.0 .

caddy docker 镜像构建完成后就可以使用了

docker run -d --name caddy -p 80:80 -p 443:443 -p 2019:2019 quadword/caddy

Caddyfile 配置

cloudflare tls 的 token 可以直接写在 caddyfile 里

tls {
  dns cloudflare {env.CLOUDFLARE_API_TOKEN}
  dns lego_deprecated dnspod #DNSPOD 的写法
}

在docker-compose.yml 文件里添加环境变量

environment:
  DNSPOD_API_KEY: "id,token" # 值为 ID,TOKEN 注意这个值的格式
  DNSPOD_HTTP_TIMEOUT: 10000 #单位毫秒,10秒 避免timeout错误网络条件好可以不用设置

最后更新于

这有帮助吗?