
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
acme-dns是一款简化的DNS服务器,提供RESTful HTTP API,旨在为ACME DNS挑战提供简单的自动化解决方案。许多DNS服务器要么不提供API支持ACME DNS挑战自动化,要么提供的API权限过大,存在安全风险。acme-dns专注于TXT记录更新,通过与ACME的“_acme-challenge”子域CNAME记录配合使用,即使API密钥泄露,影响也仅限于特定子域的TXT记录,从而在可访问性和安全性之间取得平衡。
适用于需要通过ACME协议(如Let's Encrypt)自动化申请SSL/TLS证书的场景,尤其适合:
使用acme-dns需完成以下步骤(假设已部署服务器):
https://auth.acme-dns.io/register)_acme-challenge子域指向注册得到的唯一子域(如_acme-challenge.domain.tld. CNAME a097455b-52cc-4569-90c8-7a4b97c6eba8.auth.example.org)注册端点
用于获取新的唯一子域和更新凭证。支持通过POST请求指定允许访问/update端点的CIDR范围。
请求:POST /register
可选请求体示例:
json{ "allowfrom": [ "192.168.100.1/24", "1.2.3.4/32", "2002:c0a8:2a00::0/40" ] }
响应:Status: 201 Created
json{ "allowfrom": [ "192.168.100.1/24", "1.2.3.4/32", "2002:c0a8:2a00::0/40" ], "fulldomain": "8e5700ea-a4bf-41c7-8a77-e990661dcc6a.auth.acme-dns.io", "password": "htB9mR9DYgcu9bX_afHF62erXaH2TS7bg9KW3F7Z", "subdomain": "8e5700ea-a4bf-41c7-8a77-e990661dcc6a", "username": "c36f50e8-4632-44f0-83fe-e070fef28a10" }
更新端点
用于更新唯一子域的TXT记录内容,通常由ACME客户端自动调用。
请求:POST /update
必需请求头:
| 头名称 | 描述 | 示例 |
|---|---|---|
| X-Api-User | 注册时获取的UUIDv4用户名 | X-Api-User: c36f50e8-4632-44f0-83fe-e070fef28a10 |
| X-Api-Key | 注册时获取的密码 | X-Api-Key: htB9mR9DYgcu9bX_afHF62erXaH2TS7bg9KW3F7Z |
请求体示例:
json{ "subdomain": "8e5700ea-a4bf-41c7-8a77-e990661dcc6a", "txt": "___validation_token_received_from_the_ca___" }
响应:Status: 200 OK
json{ "txt": "___validation_token_received_from_the_ca___" }
健康检查端点
用于检查服务器就绪状态和存活状态,成功时返回200状态码。
请求:GET /health
推荐自行部署acme-dns实例,以确保对DNS挑战响应的控制权。以下是Docker部署方法:
Docker部署
拉取镜像:
bashdocker pull DeviaVir/acme-dns
创建目录:
bashmkdir -p /path/to/config /path/to/data
下载配置模板并修改:
bashcurl -o /path/to/config/config.cfg https://raw.githubusercontent.com/DeviaVir/acme-dns/master/config.cfg # 编辑配置文件以适应环境
运行容器:
bashdocker run --rm --name acmedns \ -p 53:53 \ -p 53:53/udp \ -p 80:80 \ -v /path/to/config:/etc/acme-dns:ro \ -v /path/to/data:/var/lib/acme-dns \ -d DeviaVir/acme-dns
Docker Compose部署
创建目录并下载配置模板:
bashmkdir -p /path/to/config /path/to/data curl -o /path/to/config/config.cfg https://raw.githubusercontent.com/DeviaVir/acme-dns/master/config.cfg
创建docker-compose.yml(可从项目获取或自定义):
yamlversion: '3' services: acmedns: image: DeviaVir/acme-dns ports: - "53:53" - "53:53/udp" - "80:80" volumes: - /path/to/config:/etc/acme-dns:ro - /path/to/data:/var/lib/acme-dns restart: unless-stopped
启动服务:
bashdocker-compose up -d
假设acme-dns服务器主机名为auth.example.org,公网IP为198.51.100.1,需在常规DNS服务器添加以下记录:
auth.example.org. NS auth.example.org.(指定auth.example.org为*.auth.example.org的权威DNS服务器)auth.example.org. A 198.51.100.1(A记录指向服务器IP)auth.example.org. AAAA <IPv6地址>(IPv6地址记录)_acme-challenge CNAME记录,指向注册得到的唯一子域验证DNS解析:
bashdig auth.example.org
注册测试子域:
bashcurl -X POST https://auth.example.org/register
更新TXT记录:
bashcurl -X POST \ -H "X-Api-User: <注册得到的username>" \ -H "X-Api-Key: <注册得到的password>" \ -d '{"subdomain": "<注册得到的subdomain>", "txt": "___validation_token_received_from_the_ca___"}' \ https://auth.example.org/update
验证TXT记录:
bashdig -t txt @auth.example.org <注册得到的fulldomain>
配置文件示例(config.cfg):
ini[general] # DNS监听接口,格式"ip:port" listen = "127.0.0.1:53" # 协议:"both", "both4", "both6", "udp", "udp4", "udp6", "tcp", "tcp4", "tcp6" protocol = "both" # 服务域名 domain = "auth.example.org" # 区域名称服务器 nsname = "auth.example.org" # 管理员邮箱(@替换为.) nsadmin = "admin.example.org" # 预定义记录 records = [ "auth.example.org. A 198.51.100.1", "auth.example.org. NS auth.example.org.", ] # 调试模式 debug = false [database] # 数据库引擎:sqlite3或postgres engine = "sqlite3" # 连接字符串,sqlite3为文件路径,postgres为"postgres://user:password@host/dbname" connection = "/var/lib/acme-dns/acme-dns.db" [api] # API监听IP ip = "0.0.0.0" # 禁用注册端点 disable_registration = false # API监听端口 port = "443" # TLS模式:"letsencrypt", "letsencryptstaging", "cert", "none" tls = "letsencryptstaging" # tls="cert"时的证书路径 tls_cert_privkey = "/etc/tls/example.org/privkey.pem" tls_cert_fullchain = "/etc/tls/example.org/fullchain.pem" # tls="letsencrypt"时的证书缓存目录 acme_cache_dir = "api-certs" # Let's Encrypt通知邮箱 notification_email = "" # CORS允许源 corsorigins = ["*"] # 使用HTTP头获取客户端IP use_header = false # 获取IP的头名称 header_name = "X-Forwarded-For" [logconfig] # 日志级别:"error", "warning", "info", "debug" loglevel = "debug" # 日志类型:"stdout" logtype = "stdout" # 日志格式:"json"或"text" logformat = "text"
acme-dns API支持两种HTTPS配置方式:
tls = "letsencrypt"或"letsencryptstaging",由acme-dns自动通过Let's Encrypt获取证书(推荐)tls = "cert",并通过tls_cert_privkey和tls_cert_fullchain指定私钥和证书链路径警告:使用手动证书时需确保证书不会过期,否则可能导致证书更新失败(依赖acme-dns API更新TXT记录时无法连接)
客户端
认证钩子
库
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




来自真实用户的反馈,见证轩辕镜像的优质服务