Every project on Launchverse gets a free .hosted.launchverse.app URL automatically. That's fine for staging or internal tools, but real products need real domains. Here's how to wire one up — including the apex-domain edge case that bites people every time.
What you need
- A domain registered somewhere — Namecheap, Google Domains, Truehost, Whogohost, anywhere.
- A Launchverse project that's already deployed and serving traffic on its
.hosted.launchverse.appURL.
1. Find your engine's IP
In the project's Domains tab, click "Add Domain" and you'll see a banner with the IP address you need to point your DNS records at. Copy it.
2. Add the DNS records
This is where most people get stuck because of the difference between subdomains (app.example.com) and apex domains (example.com with no subdomain).
Subdomain (recommended)
Go to your registrar's DNS panel and add a single record:
| Type | Name | Value |
|---|---|---|
| A | app | <engine IP> |
That's it. DNS propagates in 1–60 minutes; once it does, traffic to app.example.com reaches your project.
Apex domain
You cannot put a CNAME record on an apex domain (DNS spec doesn't allow it). Most registrars implement one of two workarounds:
- ANAME / ALIAS / CNAME flattening (Cloudflare, Namecheap Easy DNS, Hover) — pretend it's a CNAME to the engine. Use the engine's hostname
engine.launchverse.app. - A record only — point an A record directly at the engine's IP.
Always set up both example.com and www.example.com so people who type either work. The Domains tab on Launchverse will then redirect one to the other based on what you set as canonical.
3. Add the domain in Launchverse
Back in the Domains tab, type the full domain (including https://), click Add, and the engine starts the verification. Behind the scenes:
- A DNS lookup confirms the record points at the engine.
- Traefik issues a Let's Encrypt certificate via HTTP-01 challenge.
- The certificate is installed and the proxy starts routing.
This usually takes ~30 seconds. If it fails, the most common reasons are:
- DNS hasn't propagated yet — wait 5 minutes and retry.
- The A record points at the wrong IP — verify with
dig +short example.com. - An ANAME / CNAME flattener is hiding the real IP — disable proxying ("orange cloud" off in Cloudflare) for the verification, then re-enable.
4. Force HTTPS
Once the certificate issues, head to the project's Security tab and toggle "Enforce HTTPS." From this point HTTP requests get a 308 redirect to HTTPS automatically.
5. Multiple domains
You can attach as many domains as you need to a single project — each gets its own certificate, all served from the same application. Useful for .com + .ng + .app parallel branding, or for routing staging.example.com to a preview deploy.
Renewals
Let's Encrypt certificates expire every 90 days. The engine renews them automatically 30 days before expiry; you don't need to do anything. If a renewal fails (rare — usually because DNS changed), the engine raises an alert and continues serving the old cert until it expires.
Cloudflare-specific tips
If you proxy through Cloudflare ("orange cloud"), set the SSL/TLS encryption mode to Full (strict). Anything less either breaks HTTPS or creates a redirect loop.