跳转至

ChatDNS 快速开始

本页按“安装 → 配置 profile → 只读检查 → DNS 写入 → 证书申请”的顺序组织。第一次使用时先停在只读检查;确认账号、provider 和目标域名无误后,再执行写操作。

  • 先查看,不修改

listrecordsipcert check 开始。

  • DNS 记录生命周期

set 写入、records 回读、delete 精确删除。

  • 动态地址

ddns 默认只执行一次;确认无误后再启用 --monitor

  • 证书安全路径

staging 使用独立输出目录;生产 leaf 才进入中央证书库。

1. 安装与确认

推荐使用 Python 3.12requires-python >=3.10 只表示最低兼容版本。

安装稳定版:

python -m pip install -U ChatDNS
chatdns --version
chatdns --help

需要 MCP 注册能力时:

python -m pip install -U 'ChatDNS[mcp]'

源码开发:

git clone https://github.com/ChatArch/ChatDNS.git
cd ChatDNS
python -m pip install -e '.[dev,docs]'
python -m pytest -q
mkdocs build --strict

2. 选择 provider 与 ChatEnv profile

ChatDNS 当前支持:

Provider CLI 值 ChatEnv 类型 必需凭据
阿里云 DNS aliyun aliyun ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET
腾讯云 DNSPod tencent tencent TENCENT_SECRET_IDTENCENT_SECRET_KEY

先确认 ChatDNS、Aliyun 和 Tencent 配置由哪些包注册:

chatenv status -t chatdns --detail
chatenv status -t aliyun --detail
chatenv status -t tencent --detail

创建 Tencent named profile

以下示例创建名为 work 的 profile。占位值必须替换为真实凭据,但不要把凭据提交到仓库、文档或日志。

chatenv new -t tencent -I --yes work
printf '%s\n' \
  'TENCENT_SECRET_ID=[REDACTED]' \
  'TENCENT_SECRET_KEY=[REDACTED]' \
  'TENCENT_REGION_ID=ap-guangzhou' \
  | chatenv paste --profile work --stdin --yes -I
chatenv cat -t tencent work

创建 Aliyun named profile

chatenv new -t aliyun -I --yes work
printf '%s\n' \
  'ALIBABA_CLOUD_ACCESS_KEY_ID=[REDACTED]' \
  'ALIBABA_CLOUD_ACCESS_KEY_SECRET=[REDACTED]' \
  'ALIBABA_CLOUD_REGION_ID=cn-hangzhou' \
  | chatenv paste --profile work --stdin --yes -I
chatenv cat -t aliyun work

chatenv cat 默认脱敏敏感字段。公共示例和日常检查不要使用 --no-mask

设置默认 provider

不想每次传 --provider 时,可以初始化 ChatDNS active 配置并设置默认值:

chatenv init -t chatdns -I
chatenv set -I CHATDNS_PROVIDER=tencent
chatenv cat -t chatdns

命令显式 --provider 始终优先于 CHATDNS_PROVIDER。如果使用 named provider profile,继续传 --env work

3. 先做只读检查

以 Tencent work profile 为例:

chatdns --env work list --provider tencent
chatdns --env work records example.com --provider tencent -I
chatdns --env work records www.example.com --type A --provider tencent -I

检查当前 IP:

chatdns ip --type public
chatdns ip --type local --local-ip-cidr 192.168.0.0/16

只读命令仍可能访问 provider API 或公网 IP 服务,但不会修改 DNS 记录。

4. 创建、回读和删除记录

使用文档示例保留地址 192.0.2.10 演示完整闭环:

chatdns --env work set host.example.com \
  --provider tencent \
  --type A \
  --value 192.0.2.10 \
  --ttl 600 \
  -I

chatdns --env work records host.example.com \
  --provider tencent \
  --type A \
  -I

确认目标和值都匹配后,再删除:

chatdns --env work delete host.example.com \
  --provider tencent \
  --type A \
  --value 192.0.2.10 \
  --yes \
  -I

安全约定:

  • set 后必须用 records 回读;
  • delete 尽量同时给出 --type--value,收窄匹配范围;
  • 自动化使用 -I,避免缺参时阻塞;
  • 非交互删除必须显式 --yes

5. DDNS:先单次,再监控

单次更新:

chatdns --env work ddns home.example.com \
  --provider tencent \
  --ip-type public \
  --ttl 600 \
  -I

回读记录确认后,再启动持续监控:

chatdns --env work records home.example.com --provider tencent -I
chatdns --env work ddns home.example.com \
  --provider tencent \
  --ip-type public \
  --monitor \
  --interval 120 \
  --log-file dynamic_ip_updater.log \
  -I

--monitor 是前台长运行模式。本地服务化、进程监督和重启策略不属于 ChatDNS CLI 的当前命令树。

6. 证书:检查、staging、生产

先查看本地是否已有匹配证书:

chatdns cert check '*.example.com' --cert-path default

用独立输出目录验证 staging,不污染正式中央证书库:

chatdns --env work cert apply \
  --domain '*.example.com' \
  --email admin@example.com \
  --provider tencent \
  --staging \
  --cert-dir "$HOME/.cache/chatdns/staging-certs" \
  --cert-path default \
  -I

确认 provider、DNS-01 和 ACME 流程后,再执行生产申请:

chatdns --env work cert apply \
  --domain '*.example.com' \
  --email admin@example.com \
  --provider tencent \
  --cert-path default \
  -I

chatdns cert check '*.example.com' --cert-path default

生产证书默认进入:

$CHATARCH_HOME/certs/<registered-domain>/<cert-path>/

每个 leaf 只允许四个 PEM 文件。完整分配、复用、SAN、wildcard、symlink 和远端部署规则见证书目录与创建规则

7. 查看独立 Infra manifest

cert manifest 只读取 JSON 并渲染表格:

chatdns cert manifest ./manifest.json

它不会扫描中央证书库,也不会通过 SSH 部署证书。服务器 inventory、备份、路径替换、nginx -t、reload、SNI 回读和 rollback 属于 Infra。

下一步