pycf is a basic dynamic DNS updater that operates only with the CloudFlare API to update hosts.
I got sick of ddclient not working with CloudFlare - even the latest version packaged with "Debian Unstable" will not work with CloudFlare's API, and I'm not holding my breath for a working version.
- Python 3 and above
- cURL installed and accessible by "cURL" (most Linux distros)
- pycf.json file - rename pycf-dist.json to pycf.json and configure it first
- crontab or similar system - you'll want to run this at set intervals
- e.g.
*/5 * * * * python pycf.py
will run every 5 minutes
- e.g.
A basic configuration is supplied with pycf (includes all supported settings):
{
"cloudflare": {
"checkip":"http:\/\/checkip.proxycha.in",
"api":"https:\/\/www.cloudflare.com\/api_json.html"
},
"account": {
"email":"email address",
"key":"api key",
"zone":"top level domain"
},
"zone": {
"name":"domain to update",
"proxy":false,
"type":"A",
"ttl":300
}
}
You'll want to replace the following settings:
Account
email
- your CloudFlare email addresskey
- your CloudFlare API keyzone
- your top level domain (e.g. domain.com), not your dynamic domain name (e.g. myip.domain.com)
Zone
name
- your dynamic DNS domain (e.g. myip.domain.com)proxy
- if you use CloudFlare for DDoS/caching, set this to truetype
- DNS record type, by default this is "A" (for IPv4 addresses) - should work with "AAAA" records too (for IPv6 addresses)ttl
- time-to-live value of the DNS record - 5 minutes is good for dynamic hosts
Optionally, you can also change:
CloudFlare
checkip
- any HTTP resource (or really anything that cURL can handle) which returns JUST the current IP address (see: example resource)api
- CloudFlare API URI - not sure why this would change (..ever), but can't hurt to have this be easily changed