Custom domains
Bring your own hostname. Cloudflare on-demand TLS handles cert provisioning.
Every app gets a free *.vibehost.space URL by default. Add a custom hostname when you want to ship it under your own brand.
Add a domain
vibehost domain add www.example.com --app my-siteOutput:
{
"ok": true,
"data": {
"hostname": "www.example.com",
"verificationCnameTarget": "<app>.vibehost.space",
"status": "pending_verification"
}
}Configure DNS
Add a CNAME record at your DNS provider:
CNAME www <app>.vibehost.space- Open the zone for your domain.
- DNS → Add record.
- Type:
CNAME. Name:www. Target:<app>.vibehost.space. - Proxy status: DNS only (grey cloud) initially — let VibeHost provision the cert via Cloudflare-on-the-other-side. You can flip to proxied (orange cloud) later if you want Cloudflare in front of VibeHost.
- SSL/TLS encryption mode → Full or Full (strict). Avoid Flexible — it breaks HSTS.
- Open the hosted zone.
- Create record.
- Record type:
CNAME. Record name:www. Value:<app>.vibehost.space. TTL: 300.
Most providers don't support CNAME at apex. Two options:
- ALIAS / ANAME / flattened CNAME — Cloudflare, Route 53,
DNSimple all support a non-RFC
ALIAS/ANAMErecord that behaves like CNAME at apex. - A records — point to VibeHost's apex-routing IPs. Run
vibehost domain add example.com --app my-siteand the CLI prints the current IPs.
Verify and provision the cert
vibehost domain verify www.example.com --app my-siteThe verifier checks DNS resolution, then asks Caddy (on-demand TLS) to provision a Let's Encrypt cert. Usually completes in under a minute. Status transitions:
pending_verification → dns_verified → cert_provisioning → activeIf it stalls in dns_verified for >5 minutes, the cert issuer probably hit a rate limit. Run vibehost domain verify again in 10 minutes.
Manage
vibehost domain list --app my-site
vibehost domain remove www.example.com --app my-siteRemoving a domain stops routing immediately but doesn't revoke the cert (Let's Encrypt revocation is rate-limited; we let certs expire).
Multiple domains per app
You can attach as many hostnames as you like:
vibehost domain add example.com --app my-site
vibehost domain add www.example.com --app my-site
vibehost domain add example.net --app my-siteAll resolve to the same deployment. The primary URL in app.url stays as the alias *.vibehost.space — custom hostnames are additional, not replacing.
Redirects
vibehost redirects list --app my-site
vibehost redirects add /old-path /new-path --app my-site
vibehost redirects remove <ruleId> --app my-site
# Bulk: upload a JSON file of rules
vibehost redirects upload ./redirects.json --app my-site
vibehost redirects sync --app my-site # diff + applyLimits
| Constraint | Default cap |
|---|---|
| Hostnames per app | 25 |
| Hostnames per workspace | 250 |
| Redirects per app | 500 |
Higher caps available on Enterprise plans.