3 个稳定版本
1.8.0 | 2023 年 2 月 13 日 |
---|---|
1.7.0 | 2023 年 2 月 2 日 |
1.5.0 | 2022 年 11 月 13 日 |
#2 in #gandi
每月 32 次下载
51KB
992 行
Gandi Live Dns Rust
一个程序,可以设置 Gandi 域配置中配置的 DNS 条目的 IP 地址。由于 Gandi 的 LiveDNS API,这创建了一个动态 DNS 系统。
如果您想托管网络服务但没有静态 IP 地址,此工具将允许您将您的域指向正确的 IP 地址。此程序可以更新一个或多个域和子域的 IPv4 和 IPv6 地址。它可以作为一次性的工具,由 systemd 计时器或 cron 管理,或者作为一个长期运行的过程,自己重新安排。
目录
用法
Gandi Live DNS API 每分钟限制 30 个请求。此程序尊重此速率限制:如果您有超过 30 个域需要更新,程序将暂停并等待一分钟,加上随机延迟以确保不会超过速率限制。
系统软件包
某些 Linux 发行版有可用的软件包。
- ArchLinux: gandi-live-dns-rust on AUR
欢迎为其他发行版贡献以发布此软件包!
预构建的二进制文件
gandi-live-dns
提供了与版本一起的预构建二进制文件。查看 版本页面 以获取最新版本。这些二进制文件是静态链接的,并为 Linux 和 Windows 提供支持,包括 Linux 版本的 ARM 架构。
从版本页面下载最新版本,从存档中提取它,并将其放置在您的 $PATH
中以使用它。
- 创建一个名为
gandi.toml
的文件,然后将example.toml
的内容复制并粘贴进去。 - 按照示例配置中的说明获取您的API密钥,并将其放入配置文件中。
- 按照配置文件中的示例设置您想要更新的条目。
- 在包含配置文件的目录中运行
gandi-live-dns
以更新DNS条目。
使用 Docker
使用支持x86_64、arm64、armv6和armv7平台的 seriousbug/gandi-live-dns-rust Docker镜像。按照以下步骤使用这些镜像。
- 创建一个名为
gandi.toml
的文件,然后将example.toml
的内容复制并粘贴进去。 - 按照示例配置中的说明获取您的API密钥,并将其放入配置文件中。
- 按照配置文件中的示例设置您想要更新的条目。
- 运行以下命令:
Docker默认不支持IPv6。如果您需要更新IPv6地址,请查看相关页面以启用IPv6或直接使用预构建的二进制文件。
如果您遇到关于找不到配置文件的错误,请确保命令中包含配置文件的完整路径(
$(pwd)/gandi.toml
部分)。否则,Docker将创建一个目录。
从源代码构建
此包还发布在 crates.io
上,名称为 gandi-live-dns。如果您想从源代码构建并安装,您可以使用 cargo install gandi-live-dns
来构建和安装它。
自动化
作为后台进程运行
gandi-live-dns
可以作为守护进程运行,在后台定期更新IP地址。要这样做,请添加命令行选项 --repeat=<延迟秒数>
。当提供时,此工具在更新IP地址后不会退出,而会继续执行定期更新。
如果您使用Docker,可以在启动时添加此选项。
# This will update your IP now, then repeat every 24 hours
docker run --rm -it -v $(pwd)/gandi.toml:/gandi.toml:ro seriousbug/gandi-live-dns-rust:latest --repeat=86400
或者使用 docker-compose.yml
文件,将其添加到参数中。
gandi-live-dns:
image: seriousbug/gandi-live-dns-rust:latest
restart: always
volumes:
- ./gandi.toml:/gandi.toml:ro
# Repeat the update every day
command: --repeat=86400
跳过的更新
在后台进程模式下,如果自上次更新以来您的IP地址没有更改,工具将避免向Gandi发送更新。只要工具继续运行,它将在重启时发送更新,即使您的IP地址没有更改。您还可以通过在配置文件顶部添加 always_update = true
来覆盖此行为。
使用 Systemd 计时器
“打包”文件夹包含一个Systemd服务和定时器,您可以将其用于自动运行此工具。默认情况下,它将在每次启动后更新IP地址,并且至少每天更新一次。您可以调整定时器以加快速度,但请避免不必要地过载Gandi的服务器。
- 将
gandi-live-dns.timer
和gandi-live-dns.service
放入/etc/systemd/system
- 将
gandi-live-dns
二进制文件放入/usr/bin/
- 您也可以将其放入
/usr/local/bin
或其他目录,只需确保更新服务文件中的路径
- 您也可以将其放入
- 创建文件夹
/etc/gandi-live-dns
,并将您的gandi.toml
放入其中 - 为服务创建用户:
useradd --system gandi-live-dns --home-dir /etc/gandi-live-dns
- 确保只有服务可以访问配置文件:
chown gandi-live-dns: /etc/gandi-live-dns/gandi.toml && chmod 600 /etc/gandi-live-dns/gandi.toml
- 使用
systemctl enable --now gandi-live-dns.timer
启用定时器
开发
本地构建
cargo build
和 cargo build --release
对于开发和发布构建已足够。不需要特殊指令。
发布版本
要创建发布版本,首先设置 cross
和 docker
。确保您使用 docker login
登录到 Docker。然后按照以下步骤操作
- 根据 semver 将
Cargo.toml
中的版本号升级- 提交并推送更改
- 运行
./make-release.sh
这将构建二进制文件,然后将它们打包到归档中,以及构建和上传 Docker 镜像。
- 在 Github 上创建发布版本
- 确保在
master
上创建发布版本的标签 - 将二进制归档上传到 Github 发布
- 确保在
- 更新 AUR 版本
- 运行
cargo publish
以更新 crates.io 版本
替代方案
- laur89 的基于 Bash 的更新器
- Adam Vigneaux 的基于 Bash 的更新器,带有 Docker 镜像
- Yago Riveiro 的基于 Python 的更新器
- Maxime Le Conte des Floris 的基于 Go 的更新器
贡献者
jannikac 💻 |
依赖关系
~11–25MB
~392K SLoC