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.