By default, every project lives at <your-subdomain>.dokly.co. On the Pro plan and above, you can point a domain you own (e.g., docs.acme.com) at your project. HTTPS is provisioned automatically.
How it works#
You add a CNAME record in your DNS provider that points your domain at Dokly's edge. Dokly detects the record, issues a certificate via Let's Encrypt, and starts serving your project from the new domain.
Existing readers on <subdomain>.dokly.co get a 301 redirect to the new domain — bookmarks and search engine rankings carry over.
Setup#
Open Project Settings → Domains
Screenshot needed
screenshot of the Domains panel showing the "Add custom domain" button
Enter your domain
Type the full hostname you want to use — e.g., docs.acme.com. Apex domains (acme.com) are supported but discouraged; subdomains route more cleanly with CNAMEs.
Add the CNAME at your DNS provider
Dokly shows you the exact target value to point at. It looks like:
Type: CNAME
Name: docs
Value: tenants.dokly.co
TTL: Auto / 3600Add this record at your DNS provider (Cloudflare, Route 53, Namecheap, GoDaddy — same instructions work everywhere).
Wait for verification
Dokly polls every 30 seconds. Most DNS changes propagate in 1–5 minutes. The Domains panel shows live status — pending, verifying, certificate issuing, live.
If verification stalls
Run dig docs.acme.com CNAME +short to confirm the record is live globally. If it returns the right value but Dokly still says pending, hit the Re-check button.
Set as primary (optional)
By default, the Dokly subdomain stays accessible alongside your custom domain. Toggle "Set as primary" to redirect the subdomain to the custom domain — recommended once you're confident the custom domain works.
Apex domains (acme.com instead of docs.acme.com)#
CNAME records can't be set on apex domains in standard DNS. If you really want your docs at the root, you have two options:
- Use Cloudflare DNS (free) and a CNAME flattening trick. Cloudflare lets you set a "CNAME" on the apex; it resolves to A/AAAA records under the hood.
- Use ALIAS / ANAME records — supported by Route 53, DNSimple, and a few others.
For most teams, docs.acme.com is the right default — short, conventional, easier to manage.
HTTPS and certificates#
You don't manage certificates. Dokly issues a Let's Encrypt cert on first verification and auto-renews every 60 days. There's no manual upload, no annual renewal.
If your domain has CAA records, make sure they include letsencrypt.org:
acme.com. CAA 0 issue "letsencrypt.org"If you have CAA records that exclude Let's Encrypt, certificate issuance will fail with a clear error.
Removing a domain#
Settings → Domains → Remove. The domain is detached immediately. The certificate is left to expire naturally (it doesn't matter — no traffic is being served).
If you re-add a domain you previously removed, the cert is re-issued from scratch.
Common issues#
My CNAME is set but Dokly says pending forever
Check that the CNAME isn't behind Cloudflare's proxy (orange cloud). Dokly needs to see the raw CNAME, not Cloudflare's proxied IPs. Set the record to "DNS only" (gray cloud) until verification completes.
I see 'too many redirects'
This usually means Cloudflare's SSL/TLS mode is set to "Flexible" — switch it to "Full" or "Full (strict)". Dokly's edge always serves HTTPS.
Can I use the same custom domain on multiple projects?
No. A custom domain maps 1:1 to a project. If you need multi-project routing under one domain (e.g., docs.acme.com/sdk and docs.acme.com/api), use subpaths inside one project.