Update your Cloudflare DNS records automagically!
MIT License
Now with support for comments for each record!
This repo is the tool that enables the magic. If you want to just use it right now, head over to the template repo and click on the Use this template
button.
Use this template
button.uses: pvinis/[email protected]
with:
zone: mydomain.com
There is a typical formatting for DNS records. Here are some examples:
wow.mydomain.com. 1 IN A 11.22.33.44
.sub.mydomain.com. 600 IN TXT "some-key-verification=value ?huh -thats cool!"
mail.mydomain.com. 1 IN MX 20 some.email.com.
There are 5 parts, separated by tabs.
The first part is the name of the record. The mail.mydomain.com.
part is the full version. We only care about everything before .mydomain.com.
.
So if we want to assign a record to mail.mydomain.com.
, we would use name: mail
.
If we want to use the base url mydomain.com.
, we can use name: @
as a shorthand.
The second part is called TTL (time-to-live). This is how long (in seconds) the record will be cached for.
1
is a special value and for Cloudflare this is mapped to Auto
. Usually that goes hand in hand with a record being proxied.
In the second part we have used 600
as the TTL, which means that every 10 minutes the record will be refreshed.
The third part is the record class. IN
is assigned for the class of Internet
. That's where we are, so we don't need to change that.
The fourth part is the record type. In our examples above, we see A
, TXT
, and MX
. The following types are available: A
, AAAA
, CNAME
, HTTPS
, TXT
, SRV
, LOC
, MX
, NS
, SPF
, CERT
, DNSKEY
, DS
, NAPTR
, SMIMEA
, SSHFP
, SVCB
, TLSA
, URI read only
.
You can read more about these online.
The fifth and last part is the content of the record. It differs for each record type, and in some cases it can be a couple more parts than just one, separated by spaces this time.
For example, in A
records, the content is the IPv4 address. In AAAA
records, the content is the IPv6 address. In MX
records, the content is the priority and the mail server. In TXT
records, the content is the actual text value we want the record to have.
DNS-RECORDS.hjson
We use hjson as the configuration file format.
{
records: [
# Any comments you want, can be added with a leading `#`.
{
type: A
name: mail
ipv4: 11.22.33.44
}
# Other records too
]
}
A
record{
type: A
name: wow
ipv4: 11.22.33.44
# ttl: 7200 (default: 1)
# proxied: false (default: true)
}
AAAA
record{
type: AAAA
name: @
ipv6: 684D:1111:222:3333:4444:5555:6:77
# ttl: 7200 (default: 1)
# proxied: false (default: true)
}
CNAME
record
HTTPS
record
TXT
record
{
type: TXT
name: sub
content: some-key-verification=value ?huh -thats cool!
# ttl: 7200 (default: 1)
# proxied: false (default: true)
}
👋 If you use and like this, consider sending me a few bucks in appreciation.