Blog
How tunnels work, and what we learn building hostc.
- Three bugs we hit moving a static site to SolidThree bugs we hit moving hostc.dev to prerendered Solid, and how we found them.
- Deploying Cloudflare Workers with the cf CLIWhat we learned running a production Worker and Durable Object on Cloudflare's cf CLI and TypeScript config, and the problems we hit.
- ngrok vs Cloudflare Tunnel vs frp: which tunnel to useHow tunnel tools differ, and which one fits sharing a dev server, webhooks, self-hosting or production.
- Fix the Next.js "Blocked cross-origin request" errorWhy Next.js blocks dev resources when you open it through a tunnel or another hostname, and how to fix it with allowedDevOrigins.
- Fix the Vite "Blocked request. This host is not allowed" errorWhy Vite blocks requests from tunnels, Docker and custom domains, how to fix it with server.allowedHosts, and how to avoid the error entirely.
- How hostc does flow control over one WebSocketHow hostc carries hundreds of streams over one WebSocket, why each needs its own window, and how a window grows without bloating the queue.
- Using Durable Object hibernation to keep WebSockets cheapEach hostc tunnel is one Cloudflare Durable Object holding one WebSocket. It sleeps while nothing happens, which is why the service can be free.
- How to share localhostFour ways to let someone else open the site running on your computer, from a local network address to a tunnel, and which to pick.
- Camera or service worker not working on a phone? Use HTTPSCamera, service workers and other browser features need a secure context. Localhost counts and a LAN address doesn't. How to fix it.
- Publishing to npm from GitHub Actions without a tokenHow hostc publishes with npm trusted publishing and OIDC, why 2.0.0 shipped without its executable, and how to test the exact tarball before it goes out.
- How to share an AI-built app before deploying itYour AI coding tool built something that runs on localhost. How to let other people try it in a minute, and what to check first.
- How to test Stripe webhooks on localhostA working Express example for receiving Stripe webhooks on your own machine, why signature checks fail, and how to fix them.
- Testing Durable Objects with Vitest and workerdHow hostc tests a Cloudflare Durable Object in the real runtime, why timing tests fail there, and what to do with logic that depends on the clock.
- Why our WebSocket heartbeat timed out during uploadsWidening upload windows made hostc faster, then uploads started failing when a link slowed down. Why a heartbeat can wait behind your own data.
- Why a Vite page with 2,000 modules failed through our tunnelDev servers serve every file separately, so one page can open thousands of requests. Why a stream limit stopped pages from loading, and how a queue fixed it.
- What is a localhost tunnel?A localhost tunnel gives a server on your machine a public URL. How tunnels work, what they are good for, and what to watch out for.