I’m finally moving my selfhosting experiments from a VPS to a physical machine in my house but, since I don’t have a static IP address, I opted to use the dynamic dns service offered by Cloudflare.
On their official website I’ve seen suggested ddclient but I haven’t find that much information on which labels should I add to set it up. Therefore, I’ve also found this docker image that seems pretty clean and easy to set up, but the video talking about it was of 3 years ago and I’ve seen that the github repository has been archived last year…
Which option (not necessarily among the two above) do you prefer to set up your Dynamic DNS with Cloudflare? (I don’t know if this can be an important information to add or not, but the Linux server I’m using is running NixOS)
I’ve been using this image with different providers for years. I would highly recommend it.
I wrote a bash script this that updates cloudflare using their API if the public has changed, and just have it running with crontab.
It’s been running for 6 years now without issue so I recommend this
I was using that same docker image for a while but somewhat recently migrated to this: https://github.com/favonia/cloudflare-ddns
It handles 5 of my domains all from the single container. Highly recommend it!
You might want to check out their Tunnels product. It might do what you want and is easy.
I’ve seen it mentioned in a bunch of videos and articles, but I didn’t like the idea of Cloudflare scanning all the stuff that is transferred from and to my server. If I opt just for their DNS service and update it through the API they can’t do that, right?
No, then they only handle your DNS setup, which is still okay in my eyes.
Its certainly far away from scanning all HTTP traffic. Not to forget the juicy metadata they get about the users across a big chunk of the internet, perfect tracking machine in a neat package with easy access by the government.
All those do is essentially call the Cloudflare API. They’ll all work reasonably well. The linked Docker image for example is essentially doing the bulk of it in this bash script which they call from a cron and some other container init logic which I imagine is to do the initial update when the container starts.
Pick whatever is easiest and makes most sense for you. Even the archived Docker thing is so simple, I wouldn’t worry about it being unmaintained because it can reasonably be called a finished product. It’ll work until Cloudflare upgrades their API and shuts down the old one, which you’d get months to years of warning because of enterprise customers.
Personally, that’s a trivial enough task I’d probably just custom-write a Python script to call their API. They even have a python library for their API. Probably like 50-100 lines long tops. I have my own DNS server and my DDNS “server” is a 25 lines PHP script, and the client is a curl command in a cronjob.
DDNS is a long solved and done problem. All the development is essentially just adding new providers.