Custom Domains 101
How custom domain routing works
When you add a custom domain on MoonBase, your domain's DNS must point to MoonServer-X100 (IP: 5.75.141.29). Our server receives the request, matches it to your mission by hostname, and proxies it to your running container. SSL is provisioned automatically via Let's Encrypt.
Apex domain (example.com)
Add an A record:
Type: A
Name: @ (or leave blank)
Value: 5.75.141.29
TTL: 300 (or your registrar's minimum)
Apex domains cannot use CNAME records (DNS spec). Only A records work here.
Subdomain (www.example.com or app.example.com)
Add a CNAME record:
Type: CNAME
Name: www (or app, etc.)
Value: *.moonbase.host
TTL: 300
CNAME records are preferred for subdomains — they follow IP changes automatically.
Verification and SSL provisioning
After setting DNS, click 'Verify' on the Domains page. MoonBase:
1. Queries your DNS to confirm the record resolves to our server.
2. Triggers Let's Encrypt certificate issuance (takes 1-3 minutes).
3. Updates your nginx vhost to serve traffic on port 443.
The domain shows 'SSL Active' once the certificate is live.
Cloudflare users
If you use Cloudflare, set the proxy mode to DNS-only (grey cloud, not orange). MoonBase uses Let's Encrypt, which conflicts with Cloudflare's SSL proxy. With DNS-only, your traffic routes directly to MoonServer-X100 and Let's Encrypt works normally.
Propagation time
DNS changes can take 0-48 hours to propagate globally. Most registrars propagate in under an hour. You can check propagation with a tool like dnschecker.org. The MoonBase verify button checks from our server, which may resolve before your local DNS does.