
takalele/ddns-servertakalele/ddns-server 是一款基于 Flask 框架和 dns-lexicon 库构建的自建动态域名系统(DDNS)服务器镜像。该镜像旨在通过简单配置实现 DNS 记录的动态更新,支持多域名管理及多种 DNS 服务提供商,适用于需要动态解析 IP 地址的网络环境。
auto 模式自动适配不同提供商。bashdocker run -d \ --name ddns-server \ --network web-apps \ -p 5000:5000 \ -v /path/to/lexicon.yml:/app/lexicon.yml:ro \ -e LEXICON_EASYNAME_AUTH_USERNAME=your_email \ -e LEXICON_EASYNAME_AUTH_PASSWORD=your_password \ --restart unless-stopped \ takalele/ddns-server:latest
推荐使用 docker-compose 管理部署,配置示例如下:
yamlversion: "2.4" networks: web-apps: name: web-apps driver: bridge services: ddns-server: image: takalele/ddns-server:latest container_name: web-apps-ddns-server volumes: # 挂载本地配置文件到容器内,ro 权限防止容器修改 - /dps/web-apps/ddns-server/lexicon.yml:/app/lexicon.yml:ro environment: # 根据 DNS 提供商设置对应的认证环境变量 - LEXICON_EASYNAME_AUTH_USERNAME=your_email # 替换为实际*** - LEXICON_EASYNAME_AUTH_PASSWORD=your_password # 替换为实际密码 ports: - "5000:5000" # 映射 Web 服务端口 networks: - web-apps restart: unless-stopped # 容器退出时自动重启
核心配置文件为 lexicon.yml,用于定义 DNS 提供商、域名及记录信息,需挂载到容器内 /app/lexicon.yml 路径(只读模式)。
需根据使用的 DNS 提供商,设置对应的认证环境变量。变量格式通常为 LEXICON_{PROVIDER}_AUTH_{PARAM},例如:
LEXICON_EASYNAME_AUTH_USERNAME:easyname 提供商的登录***LEXICON_EASYNAME_AUTH_PASSWORD:easyname 提供商的登录密码配置文件包含 provider_name 和 domain 两个核心节点:
指定 DNS 服务提供商模式,支持两种取值:
easyname):所有域名使用同一提供商。定义需管理的域名及记录详情,每个域名对应一个子节点(如 somehost1.domain.tld),包含以下参数:
domain:主域名(如 domain.tld)。name:子域名前缀(如 somehost1)。identifier:提供商特定标识符(部分提供商需配置,如 easyname)。uid:用户 ID(提供商认证所需)。secret:认证密钥或密码。type:DNS 记录类型(如 A 记录)。详见上文「Docker 部署」中的 docker-compose 配置。
yamlprovider_name: provider_name: easyname # 所有域名使用 easyname 提供商 domain: somehost1.domain.tld: # 子域名 1 domain: domain.tld # 主域名 name: somehost1 # 子域名前缀 identifier: "408333" # easyname 提供商特定标识符 uid: "5711092" # 用户 ID secret: verysecret # 认证密钥 type: A # DNS 记录类型 somehost2.other-domain.tld: # 子域名 2 domain: other-domain.tld # 主域名 name: somehost2 # 子域名前缀 identifier: "4022938" # easyname 提供商特定标识符 uid: "6718227" # 用户 ID secret: ultrasecret # 认证密钥 type: A # DNS 记录类型
yamlprovider_name: provider_name: auto # 自动适配不同提供商 domain: somehost1.domain.tld: # 示例:使用 OVH 提供商 domain: domain.tld name: somehost1 identifier: "" # OVH 无需此参数 uid: "5711092" secret: verysecret type: A somehost2.other-domain.tld: # 示例:使用 easyname 提供商 domain: other-domain.tld name: somehost2 identifier: "4022938" # easyname 需此参数 uid: "6718227" secret: ultrasecret type: A
auto 提供商模式时,需将对应 DNS 提供商的登录凭证通过环境变量注入容器,避免明文写入配置文件。lexicon.yml 时建议设置为只读模式(:ro),防止容器内误修改。lexicon.yml 及环境变量配置。restart: unless-stopped,确保服务异常退出后自动恢复。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务