gandi_dyndns_updater

A simple Dynamic DNS updater specifically for gandi.net

Gandi.net Dynamic DNS Updater

This is a small script I use to update subdomains on my home mac for connecting to while on the road. I have several services that run behind a reverse proxy based on the subdomains. This script runs in cron every so often to make sure the domain always points to the right IP. I already have Crystal installed on the machine and thought this would be a fun way to play with scripting in Crystal. For practical purposes a bash script would work fine as well ; )

This will walk you through setting up this script to work with a domain that you have hosted on gandi.net. I run this on OS X but I think it should work on linux installations as well.

Prerequisites

You'll need a working installation of Crystal. On OS X this can be done via brew:

brew update
brew install crystal

For linux distros and troubleshooting, see the install docs.

Steps

Clone the Repository

git clone git@github.com:jaredsmithse/gandi_dyndns_updater.git
cd gandi_dyndns_updater

Edit dyndns_update.cr

Using your favorite editor, you'll want to add two things: the domain(s) and your gandi.net API key. Those sections are marked with FILL_ME_IN in the file, and some additional comments to help. For your API key, you can see step 1 of this LiveDNS example in gandi.net's docs.

Test Run, Compile, And Move

After filling in the domain/subdomain(s) you want updated, run the following:

  # run it just to be sure it works
  crystal run dyndns_update.cr
    
  # compile the script to an executable
  crystal build dyndns_update.cr
    
  # remove the one you already have if you've done this before and are adding
  # new domain/subdomain now
  rm /usr/local/bin/dyndns_update
    
  # move the one you just built to the location you want cron to call it from.
  # I put mine in `/usr/local/bin/`
  mv dyndns_update /usr/local/bin/dyndns_update
  
  # remove the files from where you just were running these commands from
  rm dyndns_update*

Have cron Run The Script

After you have it where you want it to be called from, add a line to cron to have it run on an interval (I set mine to every 30m). First run crontab -e and add the following on a new line:

*/30 * * * * /bin/bash /usr/local/bin/dyndns_update

If you put your script in a different place, be sure to use that URL instead.

Other Notes

To make sure the URL does not change as often, it would likely make sense to have a static IP address on your router. Because of the large variation between routers, I will not include instructions for that here. You'll also want to setup port forwarding depending on the service you're running, and make sure that the port is forwarded and open on both the router and host computer.

Repository

gandi_dyndns_updater

Owner
Statistic
  • 0
  • 0
  • 0
  • 0
  • 0
  • about 5 years ago
  • March 12, 2020
License

Links
Synced at

Thu, 24 Apr 2025 07:44:58 GMT

Languages