Registered Hostnames

Hostname Type Target/IP TTL Status Created Actions

Loading DNS records...

DNS Configuration Help

A Record

Maps a domain name to an IPv4 address. Use this to point your hostname directly to a server IP.

AAAA Record

Maps a domain name to an IPv6 address. Similar to A record but for IPv6 connectivity.

CNAME Record

Creates an alias from one domain to another. Useful for pointing subdomains to your main domain.

SSL/TLS

SSL certificates are automatically provisioned for registered hostnames using Let's Encrypt.

function updateTargetPlaceholder() { const recordType = document.getElementById('record-type').value; const targetInput = document.getElementById('target-input'); const targetHelp = document.getElementById('target-help'); switch (recordType) { case 'A': targetInput.placeholder = '192.168.1.1'; targetHelp.textContent = 'Enter the IPv4 address to point to'; break; case 'AAAA': targetInput.placeholder = '2001:0db8:85a3:0000:0000:8a2e:0370:7334'; targetHelp.textContent = 'Enter the IPv6 address to point to'; break; case 'CNAME': targetInput.placeholder = 'target.example.com'; targetHelp.textContent = 'Enter the target domain name (without trailing dot)'; break; } } function confirmRemoveHostname(hostname) { document.getElementById('remove-hostname-name').textContent = hostname; const removeBtn = document.getElementById('confirm-remove-btn'); removeBtn.setAttribute('hx-vals', JSON.stringify({ hostname: hostname })); htmx.process(removeBtn); document.getElementById('remove-dns-modal').showModal(); } function editDnsRecord(hostname) { htmx.ajax('GET', `/api/dns/edit?hostname=${encodeURIComponent(hostname)}`, { target: '#edit-dns-form-container' }); document.getElementById('edit-dns-modal').showModal(); } function showToast(message) { const toast = document.createElement('div'); toast.textContent = message; toast.style.cssText = ` position: fixed; bottom: 24px; right: 24px; background: var(--surface); border: 1px solid var(--border); padding: 12px 20px; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); z-index: 1000; `; document.body.appendChild(toast); setTimeout(() => toast.remove(), 3000); }