bgenc.net/content/posts/2022.12.29.hosting-websites-without-static-IP-Gandi.md
Kaan Barmore-Genç 95a12710a4
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Add gandi-live-dns-rust
2022-12-29 23:09:51 -05:00

2.3 KiB

title date toc images tags
Hosting websites without a static IP with Gandi LiveDNS 2022-12-29T18:11:42-05:00 false
web
homelab

I've been hosting this website at home now for a few years. My ISP doesn't offer a static IP address however, which means my IP address occasionally changes. This is sort of a dealbreaker, because your domain will be left pointing to the wrong address whenever your IP address changes. Luckily you can solve this by using a dynamic DNS solution, like DynDNS, but these can be pretty pricy.

Which is why I was very excited when I saw gandi.net has a system they call "LiveDNS" which allows you to update the IP address your domain points to very quickly. Their website advertises that updates are propagated in under 250ms which is amazing. Although other DNS servers may cache results and not update for significantly longer, that's not a massive issue for me. My IP address doesn't change that often, and my personal blog having a short downtime is not a big deal.

Gandi provides this service at no additional cost, all you need to do is to register your domain with them (or transfer it over). I've been using them for years and have had great service, and the LiveDNS is the cherry on top.

Updating your IP

Unlike some other dynamic DNS providers, Gandi does not provide a program that you can use to update your IP address. But being an open API, there are many programs and scripts you can use to update your IP. One of these is a program I made, gandi-live-dns-rust.

After installing gandi-live-dns on my home server (I used the ArchLinux package, but there are other options available), I copied over the example configuration

in the repository. I just added my domain, obtained an API key and set it up, then I just added the subdomains I want.

fqdn = "bgenc.net"
api_key = "key goes here"

[[entry]]
name = "@"
types = ["A"]

[[entry]]
name = "gitea"
types = ["A"]

[[entry]]
fqdn = "kaangenc.me"
name = "@"
types = ["A"]

The configuration file is a bit trimmed, but it shows the gist of everything. I'm updating bgenc.net, along with gitea.bgenc.net. I also update kaangenc.me, which is an old domain I was using.