Deploy to Production
Deploy your Sandbox SDK application to production with preview URL support. Preview URLs require wildcard DNS routing because they generate unique subdomains for each exposed port: https://8080-abc123.yourdomain.com.
The .workers.dev domain does not support wildcard subdomains, so production deployments that use preview URLs need a custom domain.
- Active Cloudflare zone with a domain
- Worker that uses
exposePort() - Wrangler CLI installed
In the Cloudflare dashboard, go to your domain and create an A record:
- Type: A
- Name: * (wildcard)
- IPv4 address: 192.0.2.0
- Proxy status: Proxied (orange cloud)
This routes all subdomains through Cloudflare's proxy. The IP address 192.0.2.0 is a documentation address (RFC 5737) that Cloudflare recognizes when proxied.
Add a wildcard route to your Wrangler configuration:
{ "name": "my-sandbox-app", "main": "src/index.ts", "compatibility_date": "2025-10-22", "routes": [ { "pattern": "*.yourdomain.com/*", "zone_name": "yourdomain.com" } ]}name = "my-sandbox-app"main = "src/index.ts"compatibility_date = "2025-10-22"
[[routes]]pattern = "*.yourdomain.com/*"zone_name = "yourdomain.com"Replace yourdomain.com with your actual domain. This routes all subdomain requests to your Worker and enables Cloudflare to provision SSL certificates automatically.
Deploy your Worker:
npx wrangler deployTest that preview URLs work:
const sandbox = getSandbox(env.Sandbox, 'test-sandbox');await sandbox.startProcess('python -m http.server 8080');const exposed = await sandbox.exposePort(8080);
console.log(exposed.exposedAt);// https://8080-test-sandbox.yourdomain.comVisit the URL in your browser to confirm your service is accessible.
- CustomDomainRequiredError: Verify your Worker is not deployed to
.workers.devand that the wildcard DNS record and route are configured correctly. - SSL/TLS errors: Wait a few minutes for certificate provisioning. Verify the DNS record is proxied and SSL/TLS mode is set to "Full" or "Full (strict)" in your dashboard.
- Preview URL not resolving: Confirm the wildcard DNS record exists and is proxied. Wait 30-60 seconds for DNS propagation.
- Port not accessible: Ensure your service binds to
0.0.0.0(notlocalhost) and thatproxyToSandbox()is called first in your Worker's fetch handler.
For detailed troubleshooting, see the Workers routing documentation.
- Preview URLs - How preview URLs work
- Expose Services - Patterns for exposing ports
- Workers Routing - Advanced routing configuration
- Cloudflare DNS - DNS management
Was this helpful?
- Resources
- API
- New to Cloudflare?
- Directory
- Sponsorships
- Open Source
- Support
- Help Center
- System Status
- Compliance
- GDPR
- Company
- cloudflare.com
- Our team
- Careers
- © 2025 Cloudflare, Inc.
- Privacy Policy
- Terms of Use
- Report Security Issues
- Trademark