This is a small node application that periodically checks to see if your external IP address has changed, and if so, updates a DNS record on DigitalOcean. DynDNS services are stupid expensive for what they do. DigitalOcean's domain service is free (for now) and fairly painless to use.
This application uses the ipify.org API to fetch external IP addresses. They say you can use it as much as you like, but please be kind and refrain from pummelling it.
Also, be aware of DigitalOcean's API rate-limiting. This application will make a single query for every domain passed in DO_CHECK_DOMAINS
per cron cycle. If your external IP address and the address at DigitalOcean do not match, it will make another query to update the record.
Clone this repository, then:
cd do-dyndns
pnpm i
pnpm start:prod
Deploy with image jblyberg/do-dyndns:latest
and configure with the variables below
DO_CRON_EXPRESSION
Optional. Default:0 */30 * * * *
(30 minutes) Cron expression for how often to check.DO_CHECK_DOMAINS
List of domains to check. Should be space-separated domain/record ID pairs. Example:mydomain1.com:63546274 mydomain2.com:54726483
DO_API_TOKEN
Digitalocean API token. Needs to have write access.