Platform
Custom Domains
Attach a branded domain to any deplo.sh project.
Every project gets a free subdomain at <slug>.deplo.sh. If you need a branded URL (e.g. reports.acme.com), you can attach a custom domain.
How it works
1. Attach domain → PATCH /projects/:id { custom_domain: "reports.acme.com" }
2. Add DNS record → reports.acme.com CNAME proxy.deplo.sh
3. Verify → POST /projects/:id/verify-domain
4. Done → custom_domain_status = "active"
TLS certificate provisioned automaticallyStep 1 — Attach the domain
Via the CLI
deplo projects update <slug> --domain reports.acme.comVia the REST API
curl -X PATCH https://api.deplo.sh/workspaces/<workspaceId>/projects/<projectId> \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "custom_domain": "reports.acme.com" }'Response includes "custom_domain_status": "pending".
To remove a custom domain: deplo projects update <slug> --domain "" or set { "custom_domain": "" } via the API.
Step 2 — Add a CNAME record
In your DNS provider, create:
| Name / Host | Type | Value / Target |
|---|---|---|
reports (or reports.acme.com) | CNAME | proxy.deplo.sh |
DNS propagation typically takes a few minutes but can take up to 48 hours.
Tip: Check propagation with
dig reports.acme.com CNAMEor dnschecker.org.
Step 3 — Verify the domain
Via the CLI
deplo projects verify-domain <slug>Via the REST API
curl -X POST https://api.deplo.sh/workspaces/<workspaceId>/projects/<projectId>/verify-domain \
-H "Authorization: Bearer <token>"Success response
{
"custom_domain": "reports.acme.com",
"custom_domain_status": "active",
"verification": {
"status": "active",
"message": "Domain reports.acme.com is verified and active.",
"expected_cname": "proxy.deplo.sh",
"found_cnames": ["proxy.deplo.sh"]
}
}Domain status values
| Status | Meaning |
|---|---|
pending | Domain is set but not verified. Traffic still served via <slug>.deplo.sh. |
active | CNAME verified. Custom domain is live. TLS is active. |
error | Verification failed — see verification.message. |
TLS / HTTPS
Certificates are provisioned automatically by Cloudflare SSL for SaaS when the domain status becomes active.
- Auto-renew before expiry
- Minimum TLS 1.2
- HTTP → HTTPS redirect handled by Cloudflare
Troubleshooting
| Problem | Fix |
|---|---|
Status stays error | Run dig <your-domain> CNAME — confirm it points to proxy.deplo.sh. |
| HTTPS shows a cert warning | Wait up to 15 minutes for Cloudflare to provision the cert after verification. |
| Domain verified but shows 404 | Make sure the project has a live deployment (live_deployment_id is not null). |
| Verification returns DNS lookup failed immediately | DNS has not propagated yet. Wait a few minutes and retry. |
What's next?
- Projects & Deployments — managing projects, versions, and rollbacks
- Quickstart — deploy your first file in under 60 seconds
- REST API — the HTTP API for domain management
- Billing & Plans — custom domains availability by plan