2014-08-17 22:43:57 +00:00
< style >
#external_dns_settings .heading td {
font-weight: bold;
font-size: 120%;
padding-top: 1.5em;
}
#external_dns_settings .heading.first td {
border-top: none;
padding-top: 0;
}
#external_dns_settings .values td {
2014-09-07 11:22:09 +00:00
border: 0;
2014-08-17 22:43:57 +00:00
padding-top: .75em;
padding-bottom: 0;
max-width: 50vw;
word-wrap: break-word;
}
#external_dns_settings .explanation td {
border: 0;
padding-top: .5em;
padding-bottom: .75em;
font-style: italic;
2014-09-07 11:22:09 +00:00
font-size: 95%;
2014-08-17 22:43:57 +00:00
color: #777;
}
< / style >
2014-08-25 23:52:34 +00:00
< h2 > DNS (Advanced)< / h2 >
2014-08-17 22:43:57 +00:00
2014-08-25 23:52:34 +00:00
< p class = "text-danger" > Custom and external DNS are for advanced configurations.< / p >
2014-08-17 22:43:57 +00:00
2014-08-25 23:52:34 +00:00
< h3 > Custom DNS< / h3 >
< p > It is possible to set custom DNS records on domains hosted here. For instance, you can create your own dynamic DNS service. To do so, you will need to call your box’ s DNS API.< / p >
2014-08-27 12:11:38 +00:00
< h4 > The HTTP POST request< / h4 >
2014-08-25 23:52:34 +00:00
2014-08-27 12:11:38 +00:00
< p > Send a POST request like this:< / p >
2014-08-25 23:52:34 +00:00
2014-08-27 12:11:38 +00:00
< pre > curl -d "" --user {email}:{password} https://{{hostname}}/admin/dns/set/{qname}[/{rtype}[/{value}]]< / pre >
2014-08-25 23:52:34 +00:00
< table class = "table" >
< thead > < th > Parameter< / th > < th > Value< / th > < / thead >
< tr > < td > email< / td > < td > The email address of any administrative user here.< / td > < / tr >
< tr > < td > password< / td > < td > That user’ s password.< / td > < / tr >
< tr > < td > qname< / td > < td > The fully qualified domain name for the record you are trying to set.< / td > < / tr >
2014-08-27 12:11:38 +00:00
< tr > < td > rtype< / td > < td > Optional. The resource type: < code > A< / code > (an IPv4 address; the default), < code > AAAA< / code > (an IPv6 address), < code > TXT< / code > (a text string), or < code > CNAME< / code > (an alias, which is a fully qualified domain name).< / td > < / tr >
2014-08-25 23:52:34 +00:00
< tr > < td > value< / td > < td > Optional-ish. The new record’ s value. If not provided, the IPv4 address of the remote host is used — this is handy for dynamic DNS! You can also set this in a POST parameter. To delete a record, pass “ value=” in the POST body.< / td > < / tr >
< / table >
2014-08-27 12:11:38 +00:00
< h4 > Examples:< / h4 >
2014-08-25 23:52:34 +00:00
< pre > # sets laptop.mydomain.com to point to the IP address of the machine you are executing curl on
curl -d "" --user me@mydomain.com:###### https://{{hostname}}/admin/dns/set/laptop.mydomain.com
# sets an alias
curl -d "" --user me@mydomain.com:###### https://{{hostname}}/admin/dns/set/foo.mydomain.com/cname/bar.mydomain.com
# sets a TXT record
curl -d "value=something%20here" --user me@mydomain.com:###### https://{{hostname}}/admin/dns/set/foo.mydomain.com/txt
# clears the TXT record
curl -d "value=" --user me@mydomain.com:###### https://{{hostname}}/admin/dns/set/foo.mydomain.com/txt< / pre >
< h3 > External DNS< / h3 >
2014-08-17 22:43:57 +00:00
2014-09-07 11:22:09 +00:00
< p > Although your box is configured to serve its own DNS, it is possible to host your DNS elsewhere.< / p >
2014-08-17 22:43:57 +00:00
2014-09-07 11:22:09 +00:00
< p > If you do so, you are responsible for keeping your DNS entries up to date! If you previously enabled DNSSEC on your domain name by setting a DS record at your registrar, you will likely have to turn it off before changing nameservers.< / p >
2014-08-17 22:43:57 +00:00
< p > Enter the following DNS entries at your DNS provider:< / p >
< table id = "external_dns_settings" class = "table" >
< thead >
< tr >
< th > QName< / th >
< th > Type< / th >
< th > Value< / th >
< / tr >
< / thead >
< tbody >
< / tbody >
< / table >
< script >
2014-08-25 23:52:34 +00:00
function show_system_dns() {
2014-08-17 22:43:57 +00:00
$('#external_dns_settings tbody').html("< tr > < td colspan = '2' class = 'text-muted' > Loading...< / td > < / tr > ")
api(
"/dns/dump",
"GET",
{ },
function(zones) {
$('#external_dns_settings tbody').html("");
for (var j = 0; j < zones.length ; j + + ) {
var h = $("< tr class = 'heading' > < td colspan = '3' > < / td > < / tr > ");
h.find("td").text(zones[j][0]);
$('#external_dns_settings tbody').append(h);
var r = zones[j][1];
for (var i = 0; i < r.length ; i + + ) {
var n = $("< tr class = 'values' > < td class = 'qname' / > < td class = 'rtype' / > < td class = 'value' / > < / tr > ");
n.find('.qname').text(r[i].qname);
n.find('.rtype').text(r[i].rtype);
n.find('.value').text(r[i].value);
$('#external_dns_settings tbody').append(n);
var n = $("< tr class = 'explanation' > < td colspan = '3' / > < / tr > ");
n.find('td').text(r[i].explanation);
$('#external_dns_settings tbody').append(n);
}
}
})
}
< / script >