
mm28ajos/docker-dynamic-dns-netcup-api!Docker Pulls !Docker Build
一个基于PHP的Docker化动态DNS客户端,用于netcup DNS API。 本项目是[***]
适用于netcup域名用户需要动态更新DNS记录的场景,如家庭网络、动态IP环境下的服务器、需要IPv6动态解析的设备等,尤其适合需要分别管理IPv4和IPv6记录、或需在IP变更时自动重启相关服务的用户。
创建docker-compose文件,示例如下。注意:为从本地适配器获取IPv6地址,network_mode必须设为host。调试时,可覆盖默认命令(见示例)。若需在IPv6地址变更时重启其他容器,需将docker socket作为卷挂载到容器。将更新脚本的配置文件和msmtprc(如需邮件通知)作为卷挂载,并通过TZ环境变量设置时区。也可使用环境变量配置脚本设置(见下一节)。
yamlservices: dynamic-dns-netcup-updater: image: mm28ajos/docker-dynamic-dns-netcup-api:latest volumes: - /path/config.ini:/usr/src/dynamic-dns-netcup-api/config.ini # 脚本配置文件 - /path/msmtprc.conf:/root/.msmtprc # 邮件配置(如需) - /var/run/docker.sock:/var/run/docker.sock # 如需重启容器 network_mode: host # 调试时覆盖命令:command: php ./update-docker.php environment: - TZ=Europe/Berlin # 设置时区 restart: unless-stopped
yamlservices: dynamic-dns-netcup-updater: image: mm28ajos/docker-dynamic-dns-netcup-api:latest volumes: - /path/msmtprc.conf:/root/.msmtprc # 邮件配置(如需) - /var/run/docker.sock:/var/run/docker.sock # 如需重启容器 network_mode: host environment: - TZ=Europe/Berlin - CUSTOMERNR=*** # netcup客户编号 - APIKEY=abcdefghijklmnopqrstuvwxyz # API密钥 - APIPASSWORD=abcdefghijklmnopqrstuvwxyz # API密码 - DOMAIN=mydomain.com # 域名 - USE_IPV4=true # 启用IPv4更新 - HOST_IPv4=sub.subdomainA,server1.subdomainC # IPv4子域名(逗号分隔) - USE_FRITZBOX=false # 是否使用FritzBox获取IPv4 - FRITZBOX_IP=fritz.box # FritzBox IP(USE_FRITZBOX=true时需设置) - USE_IPV6=false # 启用IPv6更新 - HOST_IPv6=sub.subdomainB,server1.subdomainB # IPv6子域名(逗号分隔) - IPV6_INTERFACE=eth0 # IPv6网络接口 - NO_IPV6_PRIVACY_EXTENSIONS=true # 仅使用不带隐私扩展的IPv6地址 - CHANGE_TTL=true # 是否将TTL降至300秒 - SEND_MAIL=false # 启用邮件告警 - MAIL_RECIPIENT=*** # 邮件接收地址 - SLEEP_INTERVAL_SEC=5 # 检查间隔(秒) - RESTART_CONTAINERS=true # IP变更时重启容器 - CONTAINERS=containerA,ContainerB # 需重启的容器名(逗号分隔) restart: unless-stopped
挂载至/usr/src/dynamic-dns-netcup-api/config.ini,参数说明如下:
ini; netcup客户编号 CUSTOMERNR = *** ; API密钥和密码(从CCP获取) APIKEY = abcdefghijklmnopqrstuvwxyz APIPASSWORD = abcdefghijklmnopqrstuvwxyz ; 目标域名 DOMAIN = mydomain.com ; 启用IPv4更新 USE_IPV4 = true ; IPv4子域名(逗号分隔,@表示根域名,*表示通配符),不存在时自动创建记录 HOST_IPv4 = sub.subdomainA, server1.subdomainC ; 是否通过FritzBox获取IPv4 USE_FRITZBOX = false ; FritzBox IP(USE_FRITZBOX=true时必填,默认fritz.box) ; FRITZBOX_IP = fritz.box ; 启用IPv6更新(需IPv6网络环境,否则会报错) USE_IPV6 = false ; IPv6子域名(逗号分隔,格式同上) ; HOST_IPv6 = sub.subdomainB, server1.subdomainB ; IPv6网络接口(USE_IPV6=true时必填) ; IPV6_INTERFACE = eth0 ; 是否仅使用不带隐私扩展的IPv6地址(SLAAC) ; NO_IPV6_PRIVACY_EXTENSIONS = true ; 是否将TTL降至300秒(如需要) CHANGE_TTL = true ; 启用邮件告警(需配置msmtp) SEND_MAIL = false ; 邮件接收地址(SEND_MAIL=true时必填) ; MAIL_RECIPIENT = *** ; IP检查间隔(秒) SLEEP_INTERVAL_SEC = 5 ; IP变更时重启容器(需挂载docker socket) RESTART_CONTAINERS = false ; 需重启的容器名(RESTART_CONTAINERS=true时必填,逗号分隔) ; CONTAINERS = containerA,containerB
如需邮件告警,挂载至/root/.msmtprc,示例:
ini# 全局设置 defaults # 认证与TLS配置 auth on tls on tls_starttls off tls_certcheck on # 默认账户设置 account default add_missing_from_header on host "smtp.domain.tld" # SMTP服务器 port 465 # SMTP端口 domain "domain.tld" maildomain "domain.tld" user username # SMTP用户名 password "password" # SMTP密码 from "***" # 发件人地址
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务