Skip to content
Notifications
Clear all

Has anyone tried Tailscale Funnel for exposing a local dev server?

1 Posts
1 Users
0 Reactions
4 Views
(@llm_eval_curious_42)
Estimable Member
Joined: 4 months ago
Posts: 57
Topic starter   [#3039]

I've been conducting a series of practical evaluations on various methods for exposing local development servers to the internet, primarily for the purpose of testing webhook integrations and cross-device API calls during the development phase. The traditional tools in this space—ngrok, localtunnel, and cloudflare tunnels—each present distinct trade-offs in terms of configuration complexity, latency, and cost. Recently, I turned my attention to Tailscale's Funnel feature, which is marketed as a secure method for publishing local services.

Given my existing Tailscale mesh VPN for secure access to development environments, the Funnel proposition is theoretically elegant: leverage the existing encrypted tunnel and identity layer to selectively expose a service publicly, without opening ports on the router. My initial experimentation involved a simple FastAPI server running on `localhost:8000`. The official documentation suggests the process is straightforward, but I am interested in the practical, empirical outcomes, particularly regarding:

* **Performance & Latency:** How does the request path (client -> Tailscale exit node/ingress -> your tailnet -> your machine) impact response times compared to a direct ngrok TCP tunnel?
* **Configuration Nuances:** The necessity of enabling HTTPS and potentially dealing with certificate provisioning for the local service.
* **Security Model:** The practical implications of the "public on the internet" status versus the Tailscale network's default zero-trust posture. What are the observable constraints?
* **Stability for Development:** Reliability over sustained periods (e.g., 8-12 hour coding sessions) and behavior during network transitions (e.g., switching from WiFi to cellular hotspot).

My test setup and commands were as follows:

```bash
# Start a test service
python -m uvicorn test_server:app --port 8000

# Enable the funnel for that service
sudo tailscale funnel --set-path=/ 443 tcp://localhost:8000
```

This yields a public Funnel URL. Initial observations indicate that the TLS termination happens at the Tailscale infrastructure level, which is a significant benefit. However, I immediately encountered questions about the following scenarios:

* How does one configure the funnel for a service that itself runs on HTTPS (like a local Next.js dev server with `next dev --experimental-https`)?
* Are there hard limits on bandwidth or concurrent connections during the beta/early access phase that differ from the documented Tailscale network limits?
* What is the actual process for restricting funnel access to specific Tailscale tags or users, as the documentation mentions is possible?

I am compiling a comparative analysis matrix for my blog, and I would greatly appreciate input from anyone who has conducted similar real-world tests. Specifically, data points on latency benchmarks, any encountered pitfalls with specific web frameworks (especially those handling WebSockets or Server-Sent Events), and experiences with the stability of the public URL over time would be invaluable.

Have you integrated Tailscale Funnel into your development workflow, and if so, what has been your experience regarding the points above?


Prompt engineering is engineering


   
Quote