
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像为EFF(电子前哨基金会)官方构建的Certbot Docker镜像,集成了NS1 DNS插件。Certbot是一款免费开源的SSL/TLS证书管理工具,可自动获取和续期Let's Encrypt等证书颁发机构的证书。NS1 DNS插件允许Certbot通过DNS-01挑战验证域名所有权,适用于域名DNS由NS1托管的场景。
主要用途:通过NS1 DNS服务执行DNS-01挑战,为域名自动获取、续期SSL/TLS证书,无需开放HTTP/HTTPS端口(80/443)。
*.example.com)或多个域名批量获取证书(DNS-01挑战支持通配符证书)。/etc/letsencrypt)。1. 首次获取证书
通过docker run命令直接运行容器,指定NS1 API密钥、目标域名及证书存储路径:
bashdocker run -it --rm \ -v /etc/letsencrypt:/etc/letsencrypt \ # 挂载本地目录持久化证书和配置 -e NS1_API_KEY="your_ns1_api_key" \ # 注入NS1 API密钥(替换为实际密钥) certbot/dns-ns1 \ # 镜像名称(根据实际镜像标签调整,如:v1.7.0) certonly \ # Certbot子命令:获取证书 --dns-ns1 \ # 指定使用NS1 DNS插件 --non-interactive \ # 非交互式模式(自动化必备) --agree-tos \ # 同意Let's Encrypt服务条款 --email "admin@example.com" \ # 管理员邮箱(用于证书通知) --domains "example.com,*.example.com" # 目标域名(支持多个域名或通配符)
2. 证书续期
Certbot默认支持自动续期(证书到期前30天触发),可通过renew子命令手动触发:
bashdocker run -it --rm \ -v /etc/letsencrypt:/etc/letsencrypt \ -e NS1_API_KEY="your_ns1_api_key" \ certbot/dns-ns1 \ renew \ # Certbot续期子命令 --dns-ns1 \ --non-interactive \ --force-renewal # 强制续期(测试用,生产环境建议省略)
创建docker-compose.yml文件,集成证书持久化和自动续期:
yamlversion: '3.8' services: certbot-ns1: image: certbot/dns-ns1:v1.7.0 # 指定镜像版本(推荐固定版本而非latest) container_name: certbot-ns1 environment: - NS1_API_KEY=your_ns1_api_key # 替换为实际NS1 API密钥 volumes: - ./letsencrypt:/etc/letsencrypt # 本地目录挂载,持久化证书和配置 - ./certbot-logs:/var/log/letsencrypt # 可选:挂载日志目录 command: certonly --dns-ns1 --non-interactive --agree-tos --email admin@example.com --domains example.com,*.example.com restart: "no" # 证书获取为一次性任务,无需常驻(续期通过cron或Certbot定时器实现)
方法1:使用Certbot内置定时器(推荐)
Certbot镜像内置certbot renew命令,可通过系统crontab或Docker Compose定时任务触发:
系统crontab示例(每天凌晨3点执行续期检查):
bash0 3 * * * docker run --rm -v /path/to/letsencrypt:/etc/letsencrypt -e NS1_API_KEY=your_key certbot/dns-ns1 renew
方法2:Docker Compose与外部定时工具(如cron容器)
通过ofelia等定时任务容器触发Certbot续期:
yaml# docker-compose.yml 补充内容 services: ofelia: image: mcuadros/ofelia:latest volumes: - /var/run/docker.sock:/var/run/docker.sock command: daemon --config /etc/ofelia/config.ini configs: - source: ofelia-config target: /etc/ofelia/config.ini configs: ofelia-config: content: | [job-exec "certbot-renew"] schedule = 0 3 * * * container = certbot-ns1 command = certbot renew --dns-ns1 --non-interactive
| 环境变量名 | 说明 | 是否必填 | 示例值 |
|---|---|---|---|
NS1_API_KEY | NS1 API密钥,用于鉴权并修改DNS记录 | 是 | k1234567890abcdef... |
| 参数 | 说明 | 适用场景 |
|---|---|---|
certonly | 仅获取证书(不安装到服务器) | 所有证书获取场景 |
renew | 续期所有即将到期的证书(默认30天内) | 证书续期 |
--dns-ns1 | 指定使用NS1 DNS插件执行DNS-01挑战 | 必须配合NS1插件使用 |
--non-interactive | 非交互式运行(自动化必备,无手动确认) | 脚本或容器化环境 |
--agree-tos | 自动同意Let's Encrypt服务条款 | 非交互式模式必须 |
--email <email> | 管理员***(用于证书到期通知) | 必须(Let's Encrypt要求) |
--domains <domain1,domain2> | 目标域名列表(支持通配符,逗号分隔) | 指定证书覆盖的域名 |
--force-renewal | 强制续期(忽略证书剩余有效期) | 测试或证书损坏修复 |
--dry-run | 模拟操作(不实际申请/续期证书) | 配置测试 |
| 容器内路径 | 用途 | 建议挂载方式 |
|---|---|---|
/etc/letsencrypt | 存储证书、私钥、配置文件 | 本地目录挂载(如./letsencrypt:/etc/letsencrypt) |
/var/log/letsencrypt | 存储Certbot操作日志 | 可选挂载(调试或审计用) |
v1.7.0),避免因latest标签自动更新导致兼容性问题。/etc/letsencrypt目录包含所有证书和私钥,建议定期备份,防止数据丢失。/var/log/letsencrypt),及时发现续期失败等问题(如API密钥过期、DNS解析延迟)。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务