I got a homelab, at the moment I am only running some local stuff and tailscale to reach my stuff remotely.
I can use tailscales ddns, but I would like a real domain. Is there a domain registrator that works with dynamic ips? Or do I need to use a CNAME instead of A record?
Emphasis on “a bit,” it truly is a simple task to automate. I don’t think that anyone who has need for dynamic DNS should realistically have much trouble tackling that problem.
For anyone who might attempt this and isn’t sure how, here’s what you need. You need a service controlling your domain with API support for updating your DNS records - some have been mentioned here, I just use gandi.net. You need to enable the API for your account/domain. Figure out how to run the command you need against the API from a scripting language of your choice - there should be documentation for the API, and it should be a single API call. Figure out how to determine your server IP from within the same scripting language. Then, write your simple script that determines the right IP and updates the record if it doesn’t match.
All you need to do then is automate running the script - on Linux, a cron job or a systemd service and timer.
My go to way to figure out my public IP address is
curl ip.me
. Very handy and easy to remember.My router actually has a UPnP API that I can request and get my external IP, which I like so I can poll it every few seconds and not worry about rate limiting or something.
Meanwhile, my ISP would often rotate their customer behind their CGNAT, so the IP address from the routers upnp would often return 10.x.x.x . One of the main reason I gave up using dynamic DNS and use Tailscale instead.
Port forwarding wouldn’t work anyway with CGNAT, so I don’t think that’s much of an issue.