Subdomain Routing
Every tunnel gets a unique URL. The format depends on your plan:
| Plan | URL format | Example |
|---|---|---|
| Free | {random}.tunnel.nullbore.com | a7f3bc.tunnel.nullbore.com |
| Dev | {name}.{you}.nullbore.com | api.heroapp.nullbore.com |
| Pro | {name}.tunnel.yourdomain.com | api.tunnel.yourcompany.com |
Random slugs (all plans)
When you open a tunnel without a name, you get a random hex slug:
nullbore open 3000
# → https://a7f3bc.tunnel.nullbore.com
These are always available on every plan. Tunnels are also accessible via path-based URLs as a fallback:
https://tunnel.nullbore.com/t/a7f3bc
Named tunnels (Dev+)
Named tunnels require two things:
- A Dev or Pro plan
- A claimed account subdomain (see below)
nullbore open 3000 --name api
# → https://api.heroapp.nullbore.com
Named tunnels keep the same URL across reconnects and server restarts — no need to update webhook URLs or client bookmarks.
Without a claimed subdomain, --name is ignored and you get a random slug.
Account subdomains (Dev+)
Claim a personal subdomain from your dashboard. All your named tunnels live under it:
https://api.heroapp.nullbore.com
https://web.heroapp.nullbore.com
Visiting just heroapp.nullbore.com routes to your most recent active tunnel.
Setup
- Go to Dashboard → Account Subdomain
- Claim a subdomain (e.g.
heroapp) — takes ~2 minutes to provision a TLS certificate - Open named tunnels — they appear under your subdomain automatically
nullbore open -p 3000:api -p 8080:web
# → https://api.heroapp.nullbore.com
# → https://web.heroapp.nullbore.com
When you upgrade to a paid plan, a subdomain is auto-suggested based on your email. You can change it from the dashboard.
Rules
- 4–32 characters, lowercase letters/numbers/hyphens
- No leading, trailing, or consecutive hyphens
- Common names are reserved (api, www, admin, etc.)
- One subdomain per account — release the old one to claim a new one
Custom domains (Pro)
Pro plans can use your own domain for tunnel URLs. See Custom Domains for setup instructions.
https://api.tunnel.yourcompany.com → localhost:3000
https://staging.tunnel.yourcompany.com → localhost:8080
Self-hosted subdomain setup
To enable subdomain routing on a self-hosted server:
- Configure a wildcard DNS record:
*.tunnel.yourdomain.com → your-server-ip - Start the server with
--base-domain:
nullbore-server \
--host 0.0.0.0 \
--port 443 \
--base-domain tunnel.yourdomain.com \
--tls-domain tunnel.yourdomain.com \
--tls-email [email protected]
For account subdomains (two-level routing), also set --account-domain:
nullbore-server \
--base-domain tunnel.yourdomain.com \
--account-domain yourdomain.com
This enables {tunnel}.{account}.yourdomain.com routing.