Recent firmware on the USG (tested on 4.5.3dev, but should work on recent 4.4x also) allows for native configuration of CloudFlare DDNS without a third party service (like the ever popular DNS-O-Matic).
The only catch [for now], is you have to use config.gateway.json (this file is on/needs to be created on the controller in the applicable site) to accomplish this (as of Controller 5.9.4).
If you need further information please see UniFi Advanced USG Configuration for help about where to create the config.gateway.json.
PLEASE NOTE:
Below is an example of the config.gateway.json needed to make this work:
Note: Do not include the < > when adding the data, only add the information between the " " (quotes).
{ "service": { "dns": { "dynamic": { "interface": { "<WAN interface eg eth0>": { "service": { "cloudflare": { "host-name": [ "<insert A record name here eg. usg.example.com>" ], "login": "<CloudFlare E-Mail>", "options": [ "zone=<DNS Zone eg. example.com>" ], "password": "<CloudFlare Global API Key>", "protocol": "cloudflare", "server": "www.cloudflare.com" } } } } } } } }
Note: To obtain your Cloudflare Global API Key, visit the https://www.cloudflare.com/ site, log in, and click Get your API key from the Overview Tab.
The above did not work for me, on 4.4.36.5146617. But the following does
If it complaints about
Invalid Value for keyword 'ip' = ''"
don't worry it has nothing to do with getting the dynamic dns working.