Update June 2019
The patch described below may no longer be necessary. CloudFlare instructions here. Perl module
JSON::Any may still be required, however, see comments.
Dyn's free dynamic DNS service will be ending on Wednesday, May 7th, 2014.
CloudFlare, however, has a little known feature that will allow you to update your DNS records via API or a command line script called ddclient. This will give you the same result, and it's also free.
Unfortunately, ddclient does not work with CloudFlare out of the box. There is a patch available and here is how to hack it up on Mac OS X.
Homebrew, basic command line skills, and a domain name that you own.
Sign up to CloudFlare and add your domain name. Follow the instructions, the default values it gives should be fine.
You'll be letting CloudFlare host your domain so you need to adjust the settings at your registrar.
If you'd like to use a subdomain, add an 'A' record for it. Any IP address will do for now.
Let's get to business...
$ brew install ddclient
$ sudo cpan install JSON::Any $ curl -O http://blog.peter-r.co.uk/uploads/ddclient-3.8.0-cloudflare-26-09-2013.patch $ patch /usr/local/opt/ddclient/sbin/ddclient < ddclient-3.8.0-cloudflare-26-09-2013.patch
$ cp /usr/local/opt/ddclient/share/doc/ddclient/sample-etc_ddclient.conf /usr/local/etc/ddclient/ddclient.conf $ vim /usr/local/etc/ddclient/ddclient.conf
## ### CloudFlare (cloudflare.com) ### ssl=yes use=web, web=dyndns protocol=cloudflare, \ server=www.cloudflare.com, \ zone=domain.com, \ firstname.lastname@example.org, \ password=api-key \ host.domain.com
Your api-key comes from the account page
ssl=yes might already be in that file
use=web, web=dyndns will use dyndns to check IP (useful for NAT)
Start at boot
$ sudo cp -fv /usr/local/opt/ddclient/*.plist /Library/LaunchDaemons $ sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.ddclient.plist
 Don't do this in front of your boss.