镜像名称:certbot/dns-cloudflare(基于Certbot***镜像构建)
维护:Electronic Frontier Foundation (EFF)
核心用途:该镜像为Certbot的Docker镜像,集成了Cloudflare DNS插件,用于通过DNS-01挑战(DNS-01 challenge)自动获取、续期SSL/TLS证书。适用于使用Cloudflare DNS服务的域名,无需暴露服务器80/443端口即可完成域名验证。
*.example.com等通配符域名申请证书(ACME协议要求通配符证书必须通过DNS-01验证)。a.example.com、b.example.com)申请证书。Zone:Read(读取域名区域信息)DNS:Edit(修改DNS记录,用于添加/删除TXT记录)| 环境变量名 | 说明 | 是否必填 |
|---|---|---|
CF_DNS_API_TOKEN | Cloudflare API令牌(推荐),需包含DNS:Edit和Zone:Read权限 | 是 |
CF_ZONE_API_TOKEN | (可选)仅用于指定区域的令牌,优先级高于CF_DNS_API_TOKEN | 否 |
CF_API_EMAIL | Cloudflare账户***(传统API密钥模式使用,与CF_API_KEY配合) | 否 |
CF_API_KEY | Cloudflare全局API密钥(传统模式,不推荐,优先使用API令牌) | 否 |
CERTBOT_EMAIL | 用于接收证书过期通知的***地址 | 是 |
| 参数 | 说明 |
|---|---|
certonly | 仅申请证书(不自动安装到服务器) |
--dns-cloudflare | 指定使用Cloudflare DNS插件 |
--dns-cloudflare-credentials | (可选)指定包含Cloudflare凭据的配置文件路径(替代环境变量) |
--non-interactive | 非交互式模式(适合自动化脚本) |
--agree-tos | 同意ACME服务条款 |
--email | 指定管理员***(同CERTBOT_EMAIL环境变量,命令行参数优先级更高) |
-d | 指定目标域名(支持多个,如-d example.com -d *.example.com) |
docker run获取证书bashdocker run --rm \ -v /etc/letsencrypt:/etc/letsencrypt \ # 挂载证书存储目录(持久化证书) -v /var/lib/letsencrypt:/var/lib/letsencrypt \ # 挂载Certbot工作目录 -e "CF_DNS_API_TOKEN=your_cloudflare_api_token" \ # Cloudflare API令牌 -e "CERTBOT_EMAIL=***" \ # 管理员*** certbot/dns-cloudflare \ certonly \ --dns-cloudflare \ --non-interactive \ --agree-tos \ -d example.com \ -d *.example.com
Certbot默认会检查证书有效期(剩余30天内自动续期),可通过以下命令手动触发续期:
bashdocker run --rm \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/lib/letsencrypt:/var/lib/letsencrypt \ -e "CF_DNS_API_TOKEN=your_cloudflare_api_token" \ certbot/dns-cloudflare \ renew \ --non-interactive
创建docker-compose.yml文件:
yamlversion: '3.8' services: certbot: image: certbot/dns-cloudflare volumes: - ./letsencrypt:/etc/letsencrypt # 本地目录挂载,持久化证书 - ./letsencrypt-lib:/var/lib/letsencrypt # 工作目录 environment: - CF_DNS_API_TOKEN=your_cloudflare_api_token # 替换为实际API令牌 - CERTBOT_EMAIL=*** # 替换为实际*** command: > certonly --dns-cloudflare --non-interactive --agree-tos -d example.com -d *.example.com
启动容器申请证书:
bashdocker-compose up
容器内证书默认存储于/etc/letsencrypt,通过卷挂载到宿主机后,可在宿主机路径(如/etc/letsencrypt)中查看:
/etc/letsencrypt/live/example.com/fullchain.pem/etc/letsencrypt/live/example.com/privkey.pemCertbot证书默认有效期为90天,建议通过定时任务(如crontab)自动续期:
/opt/certbot/renew.sh:bash#!/bin/bash docker run --rm \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/lib/letsencrypt:/var/lib/letsencrypt \ -e "CF_DNS_API_TOKEN=your_cloudflare_api_token" \ certbot/dns-cloudflare renew --non-interactive
bashchmod +x /opt/certbot/renew.sh
bashecho "0 3 * * * /opt/certbot/renew.sh >> /var/log/certbot-renew.log 2>&1" | crontab -
Zone:Read和DNS:Edit权限,避免因权限不足导致验证失败。/etc/letsencrypt目录需持久化存储(通过Docker卷挂载),防止容器删除后证书丢失。docker logs <容器ID>查看证书申请/续期过程中的详细日志,用于排查错误。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429