
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
镜像名称: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记录)4.2.1 环境变量(Cloudflare插件专用)
| 环境变量名 | 说明 | 是否必填 |
|---|---|---|
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 | 用于接收证书过期通知的***地址 | 是 |
4.2.2 Certbot通用参数
| 参数 | 说明 |
|---|---|
certonly | 仅申请证书(不自动安装到服务器) |
--dns-cloudflare | 指定使用Cloudflare DNS插件 |
--dns-cloudflare-credentials | (可选)指定包含Cloudflare凭据的配置文件路径(替代环境变量) |
--non-interactive | 非交互式模式(适合自动化脚本) |
--agree-tos | 同意ACME服务条款 |
--email | 指定管理员***(同CERTBOT_EMAIL环境变量,命令行参数优先级更高) |
-d | 指定目标域名(支持多个,如-d example.com -d *.example.com) |
4.3.1 使用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=admin@example.com" \ # 管理员邮箱 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
4.3.2 Docker Compose配置示例
创建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=admin@example.com # 替换为实际邮箱 command: > certonly --dns-cloudflare --non-interactive --agree-tos -d example.com -d *.example.com
启动容器申请证书:
bashdocker-compose up
4.4.1 证书存储路径
容器内证书默认存储于/etc/letsencrypt,通过卷挂载到宿主机后,可在宿主机路径(如/etc/letsencrypt)中查看:
/etc/letsencrypt/live/example.com/fullchain.pem/etc/letsencrypt/live/example.com/privkey.pem4.4.2 自动续期配置
Certbot证书默认有效期为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>查看证书申请/续期过程中的详细日志,用于排查错误。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务