用途:创建或更新 DuckDNS 主机名,并让该记录持续指向服务器的当前公网 IP,可选将主机名交给 Caddy 处理 HTTPS。
主要能力:通过 HTTPS 调用 DuckDNS 更新接口同步 IPv4 或 IPv6;用 cron、timer 或 Windows 任务计划程序定期自动更新;用 dig 验证 A/AAAA 记录是否解析到预期公网 IP;提供常见故障排查思路(传播延迟、端口 80/443 被阻断、仅局域网可达、CGNAT 或主机商过滤、IP 频繁漂移)。
使用方式:先做快速检查,如 curl -4 https://api.ipify.org、command -v curl、command -v caddy。缺少子域名和 token 时向用户索取,token 应存入 .env 文件或环境变量,不要写入 shell 历史或进程参数。核心更新命令为 export DUCKDNS_TOKEN='...' 后执行 curl "https://www.duckdns.org/update?domains=SUBNAME&token=$DUCKDNS_TOKEN&ip=";IPv6 使用 ipv6=$IPV6 参数。示例 .env 含 DUCKDNS_TOKEN 与 DUCKDNS_SUBDOMAIN。Windows 可用 powershell -File .\update-duckdns.ps1。验证用 dig +short mybox.duckdns.org A 与 AAAA。若需通配符/DNS-01,资料提到 DuckDNS Caddy DNS 模块是当前官方路径。仓库内提供 scripts/update_duckdns.sh 作为稳定更新路径。
限制与注意:DuckDNS 更新 API 使用子名而非完整 .duckdns.org 后缀;不要记录或公开 token;更新调用优先使用 HTTPS;DNS 正确但服务不可达时需检查防火墙、端口转发、CGNAT 或主机商过滤。清理时移除定时任务、删除或撤销 env 文件,放弃主机名时删除 DuckDNS 记录及相关代理配置。输出应包含主机名、更新或定时命令、当前公网 IP、验证命令、Caddy 交接说明及验证失败时的排查提示。