同步操作将从 gngpp/vertx-ddns 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
基于Vert.x
事件驱动的DNS解析服务,支持DDNS,自动获取设备公网 IPv4
或 IPv6
地址或使用自定义的IP
地址,并解析到对应的域名服务。
linux/amd64
,linux/arm64/v8
,linux/arm/v7
,linux/ppc64le
,linux/s390x
Alidns(阿里云)
Dnspod(腾讯云)
Cloudflare
华为云
登录用户名和密码
/ 禁止从公网访问
程序提供了
Alidns(阿里云)
Dnspod(腾讯云)
Cloudflare
华为云
DNS服务平台的域名API操作。实现域名IP解析记录的远程增删查改操作,也就是说不需要每次都登录各平台的控制面板去操作域名解析了。 如果你有需求。拥有家用服务器或NAS,需要动态域名解析,或者你不想每次登录DNS服务商的控制台(即你不一定要把域名解析到本机的IP),就达到新增、更新和删除IP解析记录的目的。那么该项目很适合你。
使用前提
程序获取IP方式有三种,网卡
、第三方API
、自定义IP
,默认使用网卡或第三方API获取的IP
自定义IP优先级高于从网卡、第三方API获取的IP,也就是说,假如你设置了自定义IP,域名最终解析到是你自定义的IP
更新域名,在没有设置自定义IP情况下,最终域名会解析到选择从网卡、第三方API获取到的IP
域名记录查询策略
以下
泛查询
,姑且认为就是输入主域名或子域名可以查询到所属主域名的所有域名解析记录,包括主域名的解析记录
Alidns
DNS支持准确查询(完整域名)、支持泛查询Dnspod
DNS支持准确查询(完整域名)、支持泛查询Cloudflare
DNS只支持泛查询华为云
DNS只支持泛查询域名记录删除策略
域名记录更新策略
域名记录新增策略
环境要求(这里只展示Linux系统安装部署)
为了在使用过程中不出现意外的事故,给出下列推荐的配置
无需安装Java运行环境,若存在运行环境也不影响
# 下载最新的安装包,{{version}} 为版本号、{{runtime-version}}为运行时安装包版本。更多下载地址请访问 https://github.com/gngpp/vertx-ddns/releases
wget https://github.com/gngpp/vertx-ddns/releases/download/{{version}}/{{runtime-version}}.zip
# 例如选择版本v1.0.4、runtime-17-temurin-linux运行时版本
wget https://github.com/gngpp/vertx-ddns/releases/download/v1.0.4/runtime-17-temurin-linux.zip
# 没有梯子的话加速可以使用加速镜像
wget https://github.91chifun.workers.dev/https://github.com//gngpp/vertx-ddns/releases/download/{{version}}/{{runtime-version}}.zip
# 解压安装包
unzip ddns-runtime.zip
# 安装
cd ddns-runtime
chmod +x ./install.sh
sudo ./install.sh
# 卸载
cd ddns-runtime
chmod +x ./uninstall.sh
sudo ./uninstall.sh
若已经存在 Java 运行环境的可略过这一步。
# 导入 AdoptOpenJDK GPG key
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
# 导入 DEB Repository
sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
# 若 terminal 提示 Command not found, 运行
apt-get install -y software-properties-common
# 安装目标 OpenJDK 版本
sudo apt-get install adoptopenjdk-16-hotspot
当然,这只是其中一种比较简单的安装方式,你也可以用其他方式,并不是强制要求使用这种方式安装。
运行vertx-ddns
vertx-ddns 的整个应用程序只有一个 Jar 包,且不包含用户的任何配置,它放在任何目录都是可行的。vertx-ddns 所有配置文件都存放在
~/.vertx_ddns
目录下。你完全不需要担心安装包的安危,它仅仅是个服务而已。
# 下载最新的Jar包,{{version}} 为版本号,更多下载地址请访问 https://github.com/gngpp/vertx-ddns/releases
wget https://github.com/gngpp/vertx-ddns/releases/download/{{version}}/{{jar_name}}.jar -O vertx-ddns-latest.jar
# 启动测试
java -jar vertx-ddns-latest.jar
# 默认使用8080端口,如果需要更换端口
java -jar vertx-ddns-latest.jar 8888
如看到以下日志输出,则代表启动成功.
2021-09-15 11:45:17.656 [vert.x-eventloop-thread-2] INFO [AbstractWebServerVerticle] - Initialize project working directory:/Users/ant/.vertx_ddns
2021-09-15 11:45:17.658 [vert.x-eventloop-thread-2] INFO [AbstractWebServerVerticle] - Initialize DNS configuration file:/Users/ant/.vertx_ddns/dns_config.json
2021-09-15 11:45:17.659 [vert.x-eventloop-thread-2] INFO [AbstractWebServerVerticle] - Initialize secure configuration file:/Users/ant/.vertx_ddns/secure_config.json
2021-09-15 11:45:17.659 [vert.x-eventloop-thread-2] INFO [AbstractWebServerVerticle] - Initialize webhook configuration file:/Users/ant/.vertx_ddns/webhook_config.json
2021-09-15 11:45:17.659 [vert.x-eventloop-thread-2] INFO [AbstractWebServerVerticle] - Initialize rsa key configuration file:/Users/ant/.vertx_ddns/rsa_key.json
2021-09-15 11:45:17.659 [vert.x-eventloop-thread-2] INFO [AbstractWebServerVerticle] - Initialize aes key configuration file:/Users/ant/.vertx_ddns/aes_key.json
2021-09-15 11:45:17.660 [vert.x-eventloop-thread-2] INFO [AbstractWebServerVerticle] - RSA key has been initialized
2021-09-15 11:45:17.660 [vert.x-eventloop-thread-2] INFO [AbstractWebServerVerticle] - AES key has been initialized
2021-09-15 11:45:17.763 [vert.x-eventloop-thread-2] INFO [WebServerVerticle] - Vertx web server initialized with port(s):8080(http)
2021-09-15 11:45:17.764 [vert.x-eventloop-thread-2] INFO [WebServerVerticle] - Vertx-DDNS is running at http://localhost:8080
2021-09-15 11:45:17.786 [vert.x-eventloop-thread-2] INFO [WebServerVerticle] - PeriodicVerticle deploy complete!
以上的启动仅仅为测试 vertx-ddns 是否可以正常运行,如果我们关闭 ssh 连接,vertx-ddns 也将被关闭。要想一直处于运行状态,请继续看下面的教程。
进阶配置
[Unit]
Description=Vertx-DDNS Service
Documentation=https://github.com/gngpp/vertx-ddns/edit/main/README.md
After=network-online.target
Wants=network-online.target
[Service]
User=USER
Type=simple
ExecStart=/usr/bin/java -server -Xms128m -Xmx256m -jar YOUR_JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
StandError=inherit
[Install]
WantedBy=multi-user.target
-Xms256m:为 JVM 启动时分配的内存,请按照服务器的内存做适当调整,512 M 内存的服务器推荐设置为 128,1G 内存的服务器推荐设置为 256,默认为 256。
-Xmx256m:为 JVM 运行过程中分配的最大内存,配置同上。
YOUR_JAR_PATH:vertx-ddns 安装包的绝对路径,例如 /www/wwwroot/vertx-ddns-latest.jar。
USER:运行 vertx-ddns 的系统用户,修改为你的用户名称即可。使用默认用户请删除 User=USER。
# 将上面模版内容复制到文件内
sudo vim /etc/systemd/system/vertx-ddns.service
# 修改 service 文件之后需要刷新 Systemd
sudo systemctl daemon-reload
# 使 vertx-ddns 开机自启
sudo systemctl enable vertx-ddns
# 启动 vertx-ddns
sudo service vertx-ddns start
# 重启 vertx-ddns
sudo service vertx-ddns restart
# 停止 vertx-ddns
sudo service vertx-ddns stop
# 查看 vertx-ddns 的运行状态
sudo service vertx-ddns status
docker镜像支持平台架构:linux/amd64
,linux/arm64/v8
,linux/arm/v7
,linux/ppc64le
,linux/s390x
。
latest
,debian
,ubuntu
,alpine
。
ubuntu --- OpenJ9-16
,debian:buster-slim --- OpenJ9-16
,alpine --- OpenJDK-17
,三种基础镜像系统所对应JRE Runtime
的程序镜像, 并且都经过jlink
极简化,大幅减少了镜像体积, 使用OpenJ9能有效减少运行内存占用(官网)。 四种tag
镜像大小:alpine
<debian
<ubuntu
<latest
,实际使用效果:17版本的runtime内存控制的最好,并且会归还内存于操作系统
支持host模式,并且不需要再做端口映射(同时支持IPv4/IPv6)
若不挂载主机目录, 删除容器同时会删除配置
在浏览器中打开http://ip:8081
,登录并修改你的配置(默认账号密码:vertx
)
拉取镜像运行,并随系统重启
docker run -d -p 8081:8080 --name vertx-ddns --restart=always zf1976/vertx-ddns:latest
[可选] 挂载主机目录, 删除容器后配置不会丢失。可替换 /root/.vertx_ddns
默认用户权限root, 配置文件为隐藏文件
docker run -d -p 8081:8080 --name vertx-ddns --restart=always -v /your_path:/root/.vertx_ddns zf1976/vertx-ddns:latest
若需要挂载日志文件到主机,加上参数-v /your_path:/vertx-ddns/logs
确保拥有有JDK16+版本开发环境环境(项目使用Gradle7.x版本,若安装有其他版本,不强制使用相同版本)
# 进入项目根目录
cd vertx-ddns
# Linux/Unix
./gradlew shadowJar
# Windows,使用PowerShell,若使用cmd终端则把'/'替换为'\'
./gradlew.bat shadowJar
目前暂时支持,飞书(Lark)、钉钉、Server酱三种Webhook服务
解析记录日志状态发生变化(成功失败、错误),回调提供的Webhook API
消息内容支持模版变量,若消息内容为空或系统发送错误,则默认发送解析日志内容
变量名 | 描述 |
---|---|
#provider | DNS服务商 (DNS Provider) |
#sourceIp | 原IP (Raw IP) |
#targetIp | 变化IP (Update IP) |
#time | 解析时间 (The resolution time) |
#status | 解析状态:未改变 失败 成功 错误 (Status) |
#domain | 域名 (Domain) |
示例
DNS Provider:#provider,Status:#status
-----parser---->DNS Provider:ALIYUN, Status:2021-08-28 15:14:01
vertx
Windows
、macOS
系统下Docker
不支持host
模式$HOME/.vertx_ddns/secure_config.json
文件中notAllowWanAccess
字段值为false
,并重启服务
vertx-ddns
项目一直以来都是在 JetBrains 公司旗下的 IntelliJ IDEA Ultimate 集成开发环境中进行开发,基于 free JetBrains Open Source license(s) 正版免费授权,在此表达我的谢意。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。