Skip to content

Custom domains

Every public web app gets a hostname under ownkube.app. You can also serve it from a domain you own, such as app.example.com or example.com. You add the host on the app itself, and Ownkube issues its HTTPS certificate and renews it.

Your DNS stays at your provider and your nameservers don’t move. Each host needs two records, and the dashboard shows you exactly what to enter.

Plan Custom domains
Pay as you go Not included
Personal 3
Team 20

Each host counts as one custom domain, so www.example.com and example.com are two. The count covers every app in the organization. See Plans.

  • A public web app on Ownkube Compute, with public access saved. See Public hostnames.
  • Access to the DNS records for your domain, at Cloudflare, Route 53, Namecheap or any other provider.
  1. Open the app, go to Settings, then Networking. Custom domains sits under the app’s address.

  2. Enter the host you want, for example app.example.com, and select Add. To serve the root domain, enter example.com itself. A root domain is only served when you add it, so add www.example.com and example.com separately if you want both.

  3. Add the two records the dashboard shows at your DNS provider. Copy the type, name and value exactly as shown.

  4. The host moves through Waiting for DNS, Issuing certificate and Verifying to Active. Once it is active, the app answers on https://app.example.com.

Each host points at one app at a time. To move it, remove it from the first app and add it to the other.

The CLI and MCP can also add, list, verify and remove custom domains on Compute apps.

Every host gets two records:

Record Type Name What it does
HTTPS certificate CNAME _acme-challenge.app.example.com Lets Ownkube issue and renew the certificate for this host
Traffic routing CNAME, or ALIAS on a root domain app.example.com Points the host at your app’s region

The routing record points at the edge name for the region the app runs in:

Region Edge name
Europe (Germany) eu1-edge.ownkube.app
Asia (Mumbai) ap1-edge.ownkube.app

A subdomain such as app.example.com takes a CNAME to the edge name. A root domain such as example.com can’t hold a CNAME, so it takes an ALIAS record to the same edge name. Providers also call it ANAME or CNAME flattening. If yours doesn’t support it, serve the app from a subdomain such as www.example.com.

The dashboard always shows the exact names and values to copy, with a status next to the host.

A host stays on Waiting for DNS

The record hasn’t reached public DNS yet, or it was created on a different name. Check it from outside your network:

Terminal
dig +short _acme-challenge.example.com CNAME
dig +short app.example.com

Each should return the value the dashboard shows. Some providers add the domain to the name for you, so _acme-challenge.example.com entered in full can end up as _acme-challenge.example.com.example.com.

I use Cloudflare

Set the _acme-challenge record to DNS only (grey cloud). A proxied record hides the value Ownkube needs to see.

I want to run the app in my own AWS account

Custom domains work there too. You connect a domain once on the cluster, then link hosts under it per app. See Custom domains in your own cloud.