DEV Community

Pavel
Pavel

Posted on • Edited on

Forget Router Configs and VPNs: How to Show a Local Site to a Client in 5 Minutes

Forget Router Configs and VPNs: How to Show a Local Site to a Client in 5 Minutes

Familiar situation?

You’ve been developing a web application locally for weeks.
Demo time comes - and suddenly you hit a wall:

How do you quickly and safely show a localhost app to someone outside your network?

The usual options are rarely pleasant:

  • “Just connect to my VPN” - essentially inviting someone into your private network.
  • “I’ll forward a port on my router” - 40 minutes lost to NAT, firewalls, and ISP quirks.
  • “Let me spin up a VPS real quick” - extra cost, deployment time, and configuration overhead.

And if your ISP doesn’t provide a static IP address, the situation gets even worse.

For a long time, I used tools like ngrok or localtunnel.
They helped, but speed, stability, and availability were inconsistent.

In this article, I want to show how PNode solves this problem with a much simpler model:
a secure public URL that forwards traffic directly to your local service - no network setup, no servers, no certificates.

Let’s walk through a real-world example.


The Scenario

You’re a freelancer.
A client asks to see a working prototype right now.

The app already runs locally. You just need to expose it to the Internet.


Option 1: Instant Demo with Anonymous Mode

PNode supports an Anonymous mode that requires no registration.

You don’t create an account, don’t generate tokens, don’t configure anything.

You simply run:

npx start-pnode@latest --port 3000
Enter fullscreen mode Exit fullscreen mode

That’s it.

PNode will assign a temporary public domain in the form:

tmp-xxxxx.pnode.site

What you get

  • A public HTTPS URL
  • Traffic forwarded to your local port
  • No credentials, no setup
  • The domain is valid for 12 hours
  • After expiration, a new temporary domain is issued automatically

This mode is ideal for:

  • quick client demos
  • webhook testing
  • temporary previews

The only limitation is that anonymous mode does not support frontend / backend separation.


Option 2: Fixed Domain with Authorized Mode

If you need a stable URL or more control, PNode offers Authorized mode.

Step 1: Create an Account and Project

Go to pnode.site and sign up.

After logging in, create a project.
Each project corresponds to one fixed public domain, for example:

pahatrop.pnode.site

The project page gives you a single credential:

AGENT_TOKEN

This token uniquely identifies your project.


Step 2: Prepare a Local Application

In my case, I’m running a simple NestJS API locally:

npx nest new my-demo-server
cd my-demo-server
npm run start
Enter fullscreen mode Exit fullscreen mode

The server listens on:

http://localhost:3000

At this point, it’s still completely inaccessible from the outside.


Step 3: Run the Agent

Set the environment variables (on Windows, use set instead of export):

export AGENT_TOKEN=your-agent-token
export LOCAL_PORT=3000
Enter fullscreen mode Exit fullscreen mode

Then start the agent:

npx start-pnode@latest
Enter fullscreen mode Exit fullscreen mode

Alternatively, you can pass everything via CLI flags:

npx start-pnode@latest --token your-agent-token --port 3000
Enter fullscreen mode Exit fullscreen mode

Done

Once the agent connects, your local service becomes publicly accessible.

You send the link:

pahatrop.pnode.site

The client opens it and immediately sees the application running on your machine.

You can keep coding, refreshing, and changing things in real time - no redeployments required.


Frontend and Backend Separation (Authorized Mode)

Authorized projects can optionally enable domain separation:

  • pahatrop.pnode.site - static frontend
  • api-pahatrop.pnode.site - backend proxied to your local server

Frontend builds can be uploaded as a ZIP archive or deployed from a connected Git repository.

This setup works well for SPA + API projects where the backend is still under active development.


Why PNode?

  • Fast setup - from zero to public URL in minutes
  • No network configuration - no NAT, no firewall rules
  • Secure by default - encrypted traffic between agent and PNode
  • No static IP required
  • Two clear modes - anonymous for speed, authorized for stability

PNode is not just another tunneling tool.
It solves a very practical problem: sharing local work quickly and professionally, without infrastructure overhead.

If you regularly demo prototypes, test integrations, or expose local services, this tool fits naturally into that workflow.

What tools do you use to expose local services?
Feel free to share your experience in the comments.

Top comments (0)