Skip to content

Custom domains

Apps you’ve exposed with restful-expose live at <name>.<slug>.restful.host by default. To put one at your own domain, add it from the Custom domains page on your dashboard.

  1. Go to Dashboard → Custom domains.
  2. Fill in:
    • Domain: app.yourdomain.com (a subdomain) or yourdomain.com (the apex).
    • App to serve: pick from the dropdown. The list shows apps you’ve already exposed.
  3. The form gives you the exact DNS record to add at your registrar:
    • For an apex: an A record pointing at your machine’s public IPv4.
    • For a subdomain: a CNAME pointing at <your-slug>.restful.host (or an A record at the IPv4 — either works).
  4. Add the record. Verifier polls DNS once a minute.
  5. As soon as DNS resolves to your machine, the agent issues a Let’s Encrypt cert via HTTP-01 and writes the nginx server block. Usually within a minute or two of the DNS being live.

The status column on the dashboard:

  • pending — we haven’t yet verified DNS points at your machine.
  • verifying — DNS resolves, cert issuance in progress.
  • active — cert issued and installed, the domain is serving your app.
  • errored — something failed. The most common cause is DNS that hasn’t propagated, or a CAA record at your registrar that blocks Let’s Encrypt. Hit Retry once you’ve fixed it.

Apex domains (no subdomain — just yourdomain.com) require an A record, not a CNAME. Most DNS providers handle this fine; a few have proprietary “ALIAS” or “ANAME” records that achieve the same thing. Either works as long as the result resolves to your IPv4.

Each custom domain maps to exactly one app. To put api.yourdomain.com and dashboard.yourdomain.com on the same machine, add both as separate custom domains, each pointing at the right targetApp.

Hit Remove on the row. The agent will tear down the nginx server block on its next reconciliation pass (within 60 seconds). DNS at your registrar is yours to clean up.