Crates.io | gandi-live-dns |
lib.rs | gandi-live-dns |
version | 1.8.0 |
source | src |
created_at | 2022-11-13 21:19:04.198677 |
updated_at | 2023-02-13 06:17:59.57203 |
description | Automatically updates your IP address in Gandi's Live DNS. Makes it possible to use Gandi as a dynamic DNS system. |
homepage | |
repository | https://github.com/SeriousBug/gandi-live-dns-rust |
max_upload_size | |
id | 714516 |
size | 115,131 |
A program that can set the IP addresses for configured DNS entries in Gandi's domain configuration. Thanks to Gandi's LiveDNS API, this creates a dynamic DNS system.
If you want to host web services but you don't have a static IP address, this tool will allow you to keep your domains pointed at the right IP address. This program can update both IPv4 and IPv6 addresses for one or more domains and subdomains. It can be used as a one-shot tool managed with a systemd timer or cron, or a long-running process that reschedules itself.
The Gandi Live DNS API is rate limited at 30 requests per minute. This program respects this rate limit: if you have more than 30 domains to update, the program will pause and wait for a minute, plus a random delay to ensure it doesn't hit the rate limit.
Packages are available for some linux distributions.
Contributions to release this for other distributions are welcome!
gandi-live-dns
provides pre-built binaries with the releases. See the
releases page to
get the latest version. These binaries are statically linked, and provided for
both Linux and Windows, including ARM architectures for the Linux version.
Download the latest version from the releases page, extract it from the archive, and place it somewhere in your $PATH
to use it.
gandi.toml
, then copy and paste the contents of example.toml
gandi-live-dns
inside the directory with the configration to update your DNS entriesUse the seriousbug/gandi-live-dns-rust Docker images, which are available for x86_64, arm64, armv6, and armv7 platforms. Follow the steps below to use these images.
gandi.toml
, then copy and paste the contents of example.toml
docker run --rm -it -v $(pwd)/gandi.toml:/gandi.toml:ro seriousbug/gandi-live-dns-rust:latest
Docker doesn't support IPv6 out of the box. If you need to update IPv6 addresses, check the linked page to enable IPv6 or use the prebuilt binaries directly.
If you get errors about not finding the config file, make sure your command has a full path to the config file (
$(pwd)/gandi.toml
part). Otherwise Docker will create a directory.
This package is also published on crates.io
as
gandi-live-dns. If you would like to
build it from source and you have a working rust install, you can use cargo install gandi-live-dns
to build and install it.
gandi-live-dns
can run as a daemon, a background process, periodically perform
the IP address updates. To do so, add the --repeat=<delay-in-seconds>
command
line option. When given, this tool will not quit after updating your IP address
and instead will continue to perform periodic updates.
If you are using Docker, you can add this option when starting it:
# 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
Or with a docker-compose.yml
file, add it in the arguments:
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
In background process mode, the tool will avoid sending an update to Gandi if
your IP address has not changed since the last update. This only works so long
as the tool continues to run, it will send an update when restarted even if your
IP address has not changed. You can also override this behavior by adding
always_update = true
to the top of your config file.
The Packaging
folder contains a Systemd service and timer, which you can use
to automatically run this tool. By default it will update the IP addresses after
every boot up, and at least once a day. You can adjust the timer to speed this
up, but avoid unnecessarily overloading Gandi's servers.
gandi-live-dns.timer
and gandi-live-dns.service
into /etc/systemd/system
gandi-live-dns
binary into /usr/bin/
/usr/local/bin
or some other directory, just make sure to update the path in the service file/etc/gandi-live-dns
, and place your gandi.toml
into ituseradd --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
and cargo build --release
are sufficient for development and release builds.
No special instructions are needed.
To make a release, first set up cross
and docker
. Make sure you log into
Docker with docker login
. Then follow these steps:
Cargo.toml
according to semver
./make-release.sh
This will build binaries, then package them into archives, as well as build and upload docker images.
master
cargo publish
to update the crates.io versionjannikac 💻 |