- DDNS 动态域名系统,Dynamic DNS
- 服务端在网络不稳定状态下,ip发生变化
- 本服务目的用于周期发布用户服务的 公网IP 给到DNS服务器
- 支持多级域名
- 支持跨平台跨架构运行,x86,arm, *nix, win, mac
- /logs 子域名 页面快速查看最近50条日志 简化日志审查
- 网页中简单配置,可设置用户名账号密码 禁止从公网访问
- 支持接口/网卡获取IP
- 默认设定间隔5分钟同步一次,支持TTL
- 安装在系统中,支持 service 或者 systemctl 管理
- 支持 webhook 通知
- 复刻自 ddns-go
- Alidns 阿里云
- Dnspod 腾讯云
- cloudflare
- 华为云
- webhook
- callback
- 下载https://github.com/alongnice/myddns/releases
- 运行,程序将自行打开浏览器,访问 http://127.0.0.1:12138完成配置修改
- [可选] 支持启动带参数
-l监听地址-f间隔时间(秒)。-c配置文件路径- 如:
./myddns -l 127.0.0.1:9876 -f 300 -c 自定义配置文件路径
- [可选] 服务安装
- Mac/Linux:
./myddns -s uninstall - Win(以管理员打开cmd):
.\myddns.exe -s uninstall
- Mac/Linux:
- [可选] 服务卸载
- Mac/Linux:
./myddns -s uninstall - Win(打开cmd):
.\myddns.exe -s uninstall
- Mac/Linux:
- [可选] 支持启动带参数
-l监听地址-f同步间隔时间(秒)。-c配置文件路径- 如:
./myddns -l 127.0.0.1:9876 -f 600
-
挂载主机目录, 删除容器后配置不会丢失。可替换
/opt/myddns为主机上的任意目录, 配置文件为隐藏文件#host模式 同时支持ipv4/ipv6 linux系统推荐 docker run -d --name myddns --restart=always --net=host -p 9876:9876 -v /opt/myddns:/root alongnice/myddns #host模式 只支持ipv4 mac/windows系统推荐 docker run -d --name myddns --restart=always -p 9876:9876 -v /opt/myddns:/root alongnice/myddns
-
不挂载主机目录, 删除容器同时会删除配置
docker run -d --name myddns --restart=always -p 9876:9876 alongnice/myddns
开发环境 golang 1.23
make build构建本地编译版本的myddns可执行文件。make build_docker_image本地自动化编译、打包 Docker 镜像。
- 前提: 你的环境需要支持 IPV6
- Windows/Mac 系统推荐在 `系统中使用`, windows/mac 桌面的docker不支持主机网络 `--net=host`
- Linux的x86或arm架构,如服务器、群晖(网络中勾选`使用与docker相同的网络`)、xx盒子等等,推荐使用`--net=host`模式
-
- 群晖:
- 套件中心下载docker并打开
- 注册表中搜索`myddns`并下载
- 映像 -> 选择`alongnice/myddns` -> 启动 -> 高级设置 -> 网络中勾选`使用与 Docker Host 相同的网络`,高级设置中勾选`启动自动重新启动`
- 在浏览器中打开`http://群晖IP:9876`,修改你的配置,成功
docker run -d \
--name myddns \
--restart=always \
-v /opt/myddns:/root \
--net=host \
alongnice/myddns- 虚拟机存在可能能获取IPV6,但是无法正常访问
- [可选] 使用IPV6后,建议设置登录用户名和密码
- 支持webhook, 当IP更新成功或者失败, 会回调填写的URL
- 支撑变量
| 变量名 | 说明 |
|---|---|
| #{ipv4Addr} | 新的ipv4地址 |
| #{ipv4Result} | IPv4地址的更新结果:未改变 失败 成功 |
| #{ipv4Domains} | Ipv4的域名,多个域名用逗号分隔 |
| #{ipv6Addr} | 新的ipv6地址 |
| #{ipv6Result} | IPv6地址的更新结果:未改变 失败 成功 |
| #{ipv6Domains} | Ipv6的域名,多个域名用逗号分隔 |
-
RequestBody 为空 GET 请求, 不为空 POST 请求
-
示例
-
例(URL):
https://sc.ftqq.com/[SCKEY].send?text=主人IPv4变了#{ipv4Addr},更新结果:#{ipv4Result} -
例(RequestBody):
{"text":"你的IPv4已变为#{ipv4Addr}","desp":"更新结果: #{ipv4Result}"} -
钉钉:
- 钉钉电脑端 -> 群设置 -> 智能群助手 -> 添加机器人 -> 自定义
- 只勾选
自定义关键词, 输入的关键字必须包含在RequestBody的content中, 如:你的公网IP变了 - URL中输入钉钉给你的
Webhook地址 - RequestBody中输入
{"msgtype": "text","text": {"content": "你的公网IP变了:#{ipv4Addr},域名更新结果:#{ipv4Result}"}}
-
支持自定义回调支持更多第三方DNS供应商
-
支持多行多域名
-
支持如下变量
变量名 说明 #{ip} 新的IPv4/IPv6地址 #{domain} 当前域名 #{recordType} 记录类型 A或AAAA#{ttl} ttl -
RequestBody为空GET请求,不为空POST请求
- 在docker主机上打开http://127.0.0.1:12138,修改你的配置,成功
