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.
Before you start
Section titled “Before you start”- 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.
Add a domain to an app
Section titled “Add a domain to an app”-
Open the app, go to Settings, then Networking. Custom domains sits under the app’s address.
-
Enter the host you want, for example
app.example.com, and select Add. To serve the root domain, enterexample.comitself. A root domain is only served when you add it, so addwww.example.comandexample.comseparately if you want both. -
Add the two records the dashboard shows at your DNS provider. Copy the type, name and value exactly as shown.
-
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.
The DNS records
Section titled “The DNS records”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.
Troubleshooting
Section titled “Troubleshooting”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:
dig +short _acme-challenge.example.com CNAMEdig +short app.example.comEach 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.