How to expose localhost to the internet (with HTTPS)
You have an app running on http://localhost:3000 and need a public URL — to share a demo, test a webhook, or preview on your phone. Here's how to do it with a secure HTTPS tunnel in under a minute.
What is a tunnel?
A tunnel creates an outbound connection from your machine to a public gateway. The gateway gives you a public URL and forwards incoming requests back down that connection to your local port — so you never open a firewall port or need a public IP. Sixter adds automatic HTTPS on top.
Step 1 — Install and log in
curl -fsSL https://sixter.in/sixter_amd64.deb -o sixter.deb
sudo dpkg -i sixter.deb
sixter login
Approve the login from any device. On Windows/macOS, grab the CLI from your dashboard.
Step 2 — Run your local server
Start your app as usual, e.g. a dev server on port 3000:
npm run dev # or: python -m http.server 3000, go run ., etc.
Step 3 — Start the tunnel
sixter tunnel -port 3000
Sixter prints your public URL: https://<name>.sixter.in. It forwards to http://127.0.0.1:3000, with HTTP and WebSocket both supported and HTTPS handled for you.
Step 4 — Share it
Send the URL to a colleague, paste it as a webhook endpoint, or open it on your phone. Traffic is inspected by Sixter's edge firewall (WAF, rate limiting) before it reaches your machine.
Common uses
- Webhook testing — give Stripe, GitHub or Slack a real HTTPS URL that hits your local handler.
- Client demos — share work in progress without deploying.
- Mobile testing — open your local site on a real device.
- Cross‑device debugging — reproduce issues on another network.
Going further
Add a custom domain, deploy the project so it stays online, or host from a box with no public IP using Tunnel Mode.
Sixter