Update a DNS record on CloudFlare with a new IP.
Want home.yourdomain.com
to point to your home IP?
This little CLI (and node module) lets you do that easily.
# Install the `cf-dns-updater` binary globally, for CLI-usage
npm install -g cf-dns-updater
# Or, install the module locally to use the API
npm install --save cf-dns-updater
$ cf-dns-updater --help
Update a DNS record on CloudFlare with a new IP
Usage
$ cf-dns-updater --zone <zoneId> --record <recordId> --api-token <apiToken>
Options
--ip <someIp> IP to update record with. Defaults to current external IP.
--zone <zoneId> Zone ID the record belongs to
--record <recordId> DNS record ID to update
--api-token <apiToken> API token used for authentication
--email <email> Email used for authentication (also requires `--api-key`)
--api-key <apiKey> API key used for authentication (also requires `--email`)
--list Prints the zones and dns records available for the API key
Examples
# Update a record with a specific IP address
$ cf-dns-updater --zone zoneId --record recordId --ip newIp --api-token myApiToken
# Update a record with your current external IP
$ cf-dns-updater --zone zoneId --record recordId --api-token myApiToken
# List records your API key has access to edit
$ cf-dns-updater --list --api-token myApiToken
Environment variables (fallbacks for missing flags)
--zone = CF_ZONE_ID
--record = CF_DNS_RECORD_ID
--api-token = CF_API_TOKEN
--email = CF_AUTH_EMAIL
--api-key = CF_API_KEY
Requires Node 18 or above.
import {update, list} from 'cf-dns-updater'
// Note: Leave `ip` undefined to update use your current external IP
update({
ip: '193.212.1.10', // IP to update record with
email: '[email protected]', // Cloudflare auth email
apiKey: 'yourCFApiKey', // Cloudflare API key
zone: 'cloudFlareZoneId', // Cloudflare zone ID
record: 'cloudFlareRecordId', // Cloudflare record ID
}).then((newRecord) => {
console.log('New record:', newRecord)
})
The ghcr.io/rexxars/cf-dns-updater:latest
Docker image can be used to update a DNS record. In this case, you'll want to use environment variables to configure the tool:
docker run \
-e CF_ZONE_ID=yourZoneId \
-e CF_DNS_RECORD_ID=yourRecordId \
-e CF_API_TOKEN=yourApiToken \
ghcr.io/rexxars/cf-dns-updater:latest
MIT © Espen Hovlandsdal