Guides

Custom domains

Connect your own domain, such as www.example.com, to an app and turn on HTTPS.

Open your app at your own domain, such as www.example.com, instead of my-app.ntro.run. A custom domain always shows the current production deployment, and Nitroship issues the HTTPS certificate for you.

Add the domain

ntro domains add www.example.com --app my-app

Set up DNS

Add a record in the DNS settings of wherever your domain is managed (Cloudflare, Route 53, your registrar, and so on).

Domain typeRecordValue
Subdomain (www.example.com)CNAMEvia.nitroship.co
Root domain (example.com)ALIAS / ANAME, or CNAME flatteningvia.nitroship.co

A root domain cannot use a plain CNAME, so use your DNS provider's ALIAS, ANAME, or CNAME flattening feature. Do not enter a server IP address as an A record.

Wait for verification and the certificate

ntro domains verify www.example.com --app my-app --wait
ntro domains list --app my-app

The domain becomes active after two stages:

  1. Ownership verification: checks your DNS record to confirm the domain is yours.
  2. Certificate issuance: issues the HTTPS certificate separately.

--wait waits up to 10 minutes for the domain to become active or failed. domains list shows the DNS and certificate status together.

Verification not passing?

DNS changes take time to spread. Wait a little and run ntro domains verify again. Domains that are already active need no further verification.

Remove a domain

ntro domains remove www.example.com --app my-app

It asks for confirmation first. Add --yes in CI and scripts.

API reference: listing domains

GET /v1/apps/{appId}/domains returns the app's production address (my-app.ntro.run) and custom domains in registration order by default. Per-deployment revision URLs and Git branch URLs are left out; add includeRevisions=true if you need them. When results span several pages, pass the response's nextCursor as cursor in the next request.

On this page