1.6 KiB
1.6 KiB
DNS operations
HexaHost GameCloud stores desired DNS records in PostgreSQL (server_dns_records) and synchronizes them through a provider abstraction in @hexahost/dns.
Providers
| Provider | DNS_PROVIDER |
Use case |
|---|---|---|
| Local metadata | local (default) |
Development — records exist only in the database |
| RFC2136 dynamic updates | rfc2136 |
Production with BIND or compatible authoritative DNS |
Production (RFC2136)
Set on API and worker hosts:
DNS_PROVIDER=rfc2136
GAME_BASE_DOMAIN=play.example.net
EDGE_PUBLIC_HOST=203.0.113.10
EDGE_LISTEN_PORT=25565
RFC2136_SERVER=ns1.internal.example.net
RFC2136_KEY_NAME=gamecloud-updater.
RFC2136_KEY_SECRET=base64-encoded-secret
RFC2136_TTL=300
Requirements:
nsupdate(bind9-utils) installed on API/worker hosts- TSIG key authorized for A and SRV updates on
*.play.example.net - Edge gateway reachable at
EDGE_PUBLIC_HOST:EDGE_LISTEN_PORT
Record layout
For each Java server with join slug my-server-abc123:
Arecord:my-server-abc123.play.example.net→ edge gateway IPSRVrecord:_minecraft._tcp.my-server-abc123.play.example.net→ edge hostname/port
Worker sync
The worker runs a DNS sync tick every 60 seconds (pushPendingDnsRecords). Records start as PENDING when DNS_PROVIDER=rfc2136 and move to ACTIVE or FAILED.
Troubleshooting
- Check
server_dns_records.statusandlastErrorin PostgreSQL. - Run
nsupdate -ymanually with the generated script from logs. - Verify TSIG key name ends with
.if your nameserver expects FQDN form.