SkillAgentSearch skills...

DDNS

🌐自动更新域名解析到本机IP(支持dnspod,阿里DNS,CloudFlare,华为云,DNSCOM...)

Install / Use

/learn @NewFuture/DDNS
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<img src="docs/public/img/ddns.svg" width="32px" height="32px"/> DDNS

自动更新 DNS 解析到本机 IP 地址,支持 IPv4/IPv6,内网/公网 IP,自动创建 DNS 记录

GitHub Build Publish Release PyPI Python Version Docker Docker image size

主要特性

🚀 多平台支持

  • Docker: 推荐方式,支持 amd64arm64arm/v7 等多架构 (使用文档)
  • 二进制文件: 单文件运行,支持 Windows/Linux/macOS (下载地址)
  • pip 安装: pip install ddns
  • 源码运行: 无依赖,仅需 Python 环境

⚙️ 灵活配置

  • 命令行参数: ddns --dns=dnspod --id=xxx --token=xxx (配置文档)
  • JSON 配置文件: 支持多域名、多服务商配置,支持远程URL配置 (配置文档)
  • 环境变量: Docker 友好的配置方式 (配置文档)

🌍 DNS 服务商支持

支持 15+ 主流 DNS 服务商,包括:

⚡ 表示支持 HMAC-SHA256 企业级安全认证 | 查看所有服务商

🔧 高级功能

  • 多域名和多级域名解析
  • IPv4/IPv6 双栈支持
  • 自动创建 DNS 记录
  • 内网/公网 IP 自动检测
  • HTTP 代理和多代理切换
  • 本地缓存减少 API 调用
  • 定时任务和日志管理

使用

① 安装

根据需要选择一种方式:一键脚本二进制版、pip版、源码运行,或者 Docker

推荐 Docker 版,兼容性最佳,体积小,性能优化。

  • Docker(推荐)

    详细说明和高级用法请查看 Docker 使用文档

    <details> <summary markdown="span">支持命令行,配置文件,和环境变量传参</summary>
    • 命令行cli

      docker run newfuture/ddns -h
      
    • 使用配置文件(docker 工作目录 /ddns/,默认配置位置 /ddns/config.json):

      docker run -d -v /host/config/:/ddns/ --network host newfuture/ddns
      
    • 使用环境变量:

      docker run -d \
        -e DDNS_DNS=dnspod \
        -e DDNS_ID=12345 \
        -e DDNS_TOKEN=mytokenkey \
        -e DDNS_IPV4=ddns.newfuture.cc \
        --network host \
        newfuture/ddns
      
    </details>
  • 二进制版(单文件,无需 python)

    前往release下载对应版本

    也可使用一键安装脚本自动下载并安装对应平台的二进制:

    curl -#fSL https://ddns.newfuture.cc/install.sh | sh
    

    提示:安装到系统目录(如 /usr/local/bin)可能需要 root 或 sudo 权限;若权限不足,可改为 sudo sh 运行。

    详细说明请查看 一键安装文档

  • pip 安装(需要 pip 或 easy_install)

    1. 安装 ddns: pip install ddnseasy_install ddns
    2. 运行: ddns -h 或者 python -m ddns
  • 源码运行(无任何依赖,需 python 环境)

    1. clone 或者 下载此仓库 并解压
    2. 运行 python -m ddns

② 快速配置

  1. 申请 api token,填写到对应的 idtoken 字段:

  2. 修改配置文件,ipv4ipv6 字段,为待更新的域名,详细参照配置说明

详细配置

所有字段可通过三种方式进行配置,优先级为:命令行参数 > JSON配置文件 > 环境变量

  1. 命令行参数 ddns --key=valueddns -h 查看详情),优先级最高
  2. JSON 配置文件(值为 null 认为是有效值,会覆盖环境变量的设置,如果没有对应的 key 则会尝试使用环境变量)
  3. 环境变量 DDNS_ 前缀加上 key (${ddns_id}${DDNS_ID}${DDNS_LOG_LEVEL}

配置优先级和字段覆盖关系

如果同一个配置项在多个地方设置,将按照以下优先级规则生效:

  • 命令行参数:优先级最高,会覆盖其他所有设置
  • JSON配置文件:介于命令行和环境变量之间,会覆盖环境变量中的设置
  • 环境变量:优先级最低,当其他方式未设置时使用

高级用法

  • JSON配置中明确设为null的值会覆盖环境变量设置
  • debug参数只在命令行中有效,JSON配置文件中的同名设置无效
  • 多值参数(如ipv4ipv6等)在命令行中使用方式为重复使用参数,如--ipv4 domain1 --ipv4 domain2

各配置方式的详细说明请查看对应文档:命令行JSON配置环境变量服务商配置

📖 环境变量详细配置: 查看 环境变量配置文档 了解所有环境变量的详细用法和示例

<details open> <summary markdown="span">config.json 配置文件</summary>
  • 首次运行会自动生成一个模板配置文件
  • 可以使用 -c 使用指定的配置文件(默认读取当前目录的 config.json)
  • 推荐使用 vscode 等支持 JsonSchema 的编辑器编辑配置文件
  • 查看 JSON配置文件详细文档 了解完整的配置选项和示例
ddns -c path/to/config.json
# 或者python运行
python -m ddns -c /path/to/config.json
# 远程配置文件
ddns -c https://ddns.newfuture.cc/tests/config/debug.json

配置参数表

| key | type | required | default | description | tips | | :----: | :----------------: | :------: | :---------: | :----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | id | string | √ | 无 | api 访问 ID | Cloudflare 为邮箱(使用 Token 时留空)<br>HE.net 可留空<br>华为云为 Access Key ID (AK) | | token | string | √ | 无 | api 授权 token | 部分平台叫 secret key,反馈粘贴时删除 | | dns | string | No | "dnspod" | dns 服务商 | 阿里 DNS 为 alidns,阿里ESA为 aliesa,Cloudflare 为 cloudflare,dns.com 为 dnscom,DNSPOD 国内为 dnspod,DNSPOD 国际为 dnspod_com,HE.net 为 he,华为云为 huaweidns,NameSilo 为 namesilo,腾讯云为 tencentcloud,腾讯云EdgeOne为 edgeone,No-IP 为 noip,自定义回调为 callback。部分服务商有详细配置文档 | | ipv4 | array | No | [] | ipv4 域名列表 | 为 [] 时,不会获取和更新 IPv4 地址 | | ipv6 | array | No | [] | ipv6 域名列表 | 为 [] 时,不会获取和更新 IPv6 地址 | | index4 | string|int|array | No | "default" | ipv4 获取方式 | 可设置 网卡内网公网正则 等方式 | | index6 | string|int|array | No | "default" | ipv6 获取方式 | 可设置 网卡内网公网正则 等方式 | | ttl | number | No | null | DNS 解析 TTL 时间 | 不设置采用 DNS 默认策略 | | proxy | string|array | No | 无 | HTTP 代理格式:http://host:port | 多代理逐个尝试直到成功,DIRECT 为直连 | | ssl | string|boolean | No | "auto" | SSL证书验证方式 | true(强制验证)、false(禁用验证)、"auto"(自动降级)或自定义CA证书文件路径 | | debug | bool | No | false | 是否开启调试 | 调试模式,仅命令行参数--debug有效

View on GitHub
GitHub Stars4.7k
CategoryDevelopment
Updated10h ago
Forks681

Languages

Python

Security Score

100/100

Audited on Mar 28, 2026

No findings