Installation & setup
Get from zero to a public URL in four steps. Total time: ~5 minutes.
1. Install Tailscale & sign in
Tailscale is the secure tunnel tsp runs on (the part
that replaces ngrok’s relay). Install it, then bring your machine online:
macOS
brew install --cask tailscale
# or download the app: https://tailscale.com/download
tailscale up # opens a browser to sign up / log in (free)2. Enable Funnel (for public URLs)
Funnel is what makes your dev server reachable from the public internet. Turn it on once in the Tailscale admin console:
- Enable HTTPS certificates → admin console → DNS → toggle on MagicDNS and HTTPS Certificates (guide ).
- Allow Funnel → admin console → Access controls → add this to your
policy file and save:
(Funnel docs )
{ "nodeAttrs": [ { "target": ["autogroup:member"], "attr": ["funnel"] } ] }
Only want it reachable from your own devices (your laptop, phone, teammates
on the tailnet)? Skip this step and run tsp --private — that uses Tailscale
Serve and needs no extra setup.
3. Install tsp
npx (no install)
npx tailscale-proxy doctortsp doctor confirms everything is wired up and prints the exact fix link for
anything missing:
✓ tailscale installed (1.98.2)
✓ tailscale up
✓ funnel enabled
✓ service discovery (2 service(s) in 3000-5000)Supported: macOS, Linux, Windows, WSL (amd64 + arm64).
4. Run it
Start your dev servers as usual, then:
tsp # discover :3000-5000 and expose them publicly (Funnel)Services:
https://your-node.ts.net/web/ → 127.0.0.1:4000
https://your-node.ts.net/api/ → 127.0.0.1:4100Open those from anywhere. Ctrl-C stops it and resets the entry. Next: the full Getting started walkthrough.
Updating
tsp update # self-updates, or prints the brew/npm command