Use Gandi LiveDNS API to update DNS records with a dynamic IP.
- Generate a Gandi Personal Access Token (PAT) via either https://account.gandi.net/en/users/USER/security (where USER is your username), or Gandi Dashboard > Organizations > Manage > Create a token :
- Choose a mandatory duration (Gandi allows one year max)
- Give access at least to the resource
DNS configuration
- Python 3.x
I recommend creating a repeating alarm in a calendar to be sure to renew the PAT before it is revoked.
- Download and extract the latest release.
- Open a terminal to the extracted directory.
$ curl --location https://github.com/Danamir/dyn-gandi/archive/master.zip --output dyn-gandi-master.zip
$ unzip dyn-gandi-master.zip
$ mv dyn-gandi-master/ dyn-gandi
$ cd dyn-gandi
(Optional) Configure Python virtual environment :
$ python -m venv .env
$ . .env/bin/activate (Linux)
-or-
$ .env\Scripts\activate.bat (Windows)
Install :
$ python setup.py develop
$ copy config.ini-dist config.ini
$ dyn_gandi --help
-or-
$ python dyn_gandi.py --help
Complete the config.ini
file, in particular check the lines :
[api]
key =
[dns]
domain =
records = @,www
Note: dyn_gandi
can be substituted with python dyn_gandi.py
if the former doesn't work.
Display help :
$ dyn_gandi --help
Dry run (without modifications) :
$ dyn_gandi --dry-run
Normal launch:
$ dyn_gandi
The log line will end by [OK]
if no update was needed, [UPDATE]
on successful update, and [ERROR]
on error.
On success, the automatic backup snapshot is deleted ; on error the snapshot uuid is displayed in the log
for you to restore if needed.
Either create a scheduled task on windows, or add a crontab line. ie:
$ crontab -e
* */2 * * * dyn_gandi --log /var/log/dyn-gandi.log
NB: If you used a Python virtual environment, replace the script by <dyn-gandi-path>/.env/bin/dyn_gandi
.
- Gandi LiveDNS documentation
- Thanks Gandyn for the inspiration (and many years of use)
- Ensure that your domain is correctly handled by Gandi LiveDNS API by following this guide.