Skip to main content
Browse documentation

Connect a custom domain

This guide covers apps hosted on Caliber Node. BYOH servers using your own Cloudflare Tunnel or direct connection have different setup requirements.

You need access to the DNS settings for your domain. The examples below use blog.example.com and example.com; replace them with your own domain.

Check whether the app's domain is permanent

Some apps use their domain as a permanent identity and require you to choose it during deployment. If the panel shows this warning, follow the deployment instructions rather than trying to change it afterwards. Contact support before changing a permanent domain.

1. Add the domain in the panel​

  1. Open your app from My apps.
  2. Open the Domain tab and find Custom domain.
  3. Enter the hostname only, such as blog.example.com. Do not include https:// or a path.
  4. Click Add, or Update if a domain is already set.

Saving the name does not complete the connection. DNS routing and HTTPS validation must also succeed.

2. Set the DNS record​

Use the instructions displayed for your app. The usual protected connection uses the following record:

TypeName / hostTarget
CNAMEblogcname.cnpods.com

DNS providers label these fields differently. In the DNS zone for example.com, a host of blog normally creates blog.example.com. Check that your provider has not appended the domain twice.

Remove conflicting records for that same hostname before adding its CNAME. Do not remove unrelated records or your domain's mail records.

Using a root domain​

A root domain is example.com, without a prefix such as blog or www.

Many DNS providers do not allow a normal CNAME at the root. Use ALIAS, ANAME, or CNAME flattening if your provider supports it, with cname.cnpods.com as the target. The root host field is usually @ or blank; follow your DNS provider's convention.

Do not copy the IP addresses returned for cname.cnpods.com into A or AAAA records. Those can be shared Cloudflare addresses and are not a substitute for the routing and validation records.

If your provider does not support a suitable root record, use a subdomain such as www.example.com, or contact support to discuss your setup. A root domain and www are different hostnames; connecting one does not automatically connect the other.

Using a dedicated IP with a direct connection​

If the panel tells you to use a dedicated address instead, create the A record for the displayed IPv4 address and/or the AAAA record for the displayed IPv6 address. Use only the addresses assigned to your app.

For this connection type, HTTPS is issued on the app host. Follow the app's displayed DNS instructions rather than using the shared CNAME example above.

3. Complete validation​

  1. Return to the app and click Check DNS.
  2. If the Cloudflare section shows TXT validation records, add each name and value exactly as displayed at your DNS provider.
  3. Click Retry validation after adding those records, then use Check DNS to refresh the result.

DNS updates and certificate issuance can take time. For the protected connection, wait for the Cloudflare status to show Active. A saved hostname or an IP address appearing in a DNS lookup does not by itself mean HTTPS is ready.

4. Apply the domain to the app​

When the DNS check succeeds, click Apply domain to app. This updates the app's own address configuration so its links and logins use the custom domain.

Then open https:// followed by your hostname. Check both the public page and the login page.

If it does not connect​

  • Wrong DNS target: check the exact hostname, record type, and target against the panel.
  • Validation stays pending: check every TXT record and read any validation error shown before retrying.
  • Root domain still fails: confirm your provider supports flattening or ALIAS/ANAME. Contact support if validation cannot complete, or use a subdomain.
  • Domain opens but login redirects to the old address: make sure you completed Apply domain to app.

When contacting support, include the app name, hostname, and the message shown by Check DNS. Do not send your DNS account password or API token.