How to Expose a Local Web App or Dev Server to the Internet
Testing a webhook integration, showing a client a work-in-progress site, or demoing an app running on your own machine — all need the same thing: a real public address.
How to Expose a Local Web App or Dev Server to the Internet
A web app running on localhost is invisible to anyone but you. Sometimes that's exactly the problem — a client wants to preview something, a webhook provider needs a real URL to call back, or you want to test on a real mobile device away from your network.
The usual workarounds, and their limits
Deploying to a real host every time you want feedback is slow. Screen-sharing doesn't let anyone actually interact with the app. Generic tunneling browser extensions and CLI tools work for a quick demo but usually mean a random, temporary URL that changes every session — not something you'd put in a webhook provider's dashboard or send a client twice.
A stable address instead
A Port Forwarding plan gives you a public IP and port that stays the same every time you connect — set it up once, and the address doesn't change between sessions.
- Order a Port Forwarding plan (Starter covers a single dev server easily)
- Run the two-command connect on the machine running your app
- Add a port rule pointing at whatever port your dev server listens on (
internal_port) - Share the public IP and port — it's stable for as long as your service is active
Webhook callbacks specifically
Payment providers, chat platforms, and most SaaS integrations need a real, reachable URL to call back to. A locally-running localhost:3000 can't receive that call — forwarding a port to it over RepublicNodes Tunnel gives the webhook provider a real address to hit, landing directly on your local dev environment.
When you're done
rnt disconnect on your machine stops the tunnel immediately — nothing lingers exposed after you're finished testing, and reconnecting later with a fresh code picks up right where you left off.