Tailscale Funnel Security
Funnel exposes services to the public internet. Use with caution.
Enabling
Docker:
labels:
tsdproxy.port.1: "443/https:80/http, tailscale_funnel"Lists:
public-service:
ports:
443/https:
targets:
- http://localhost:8080
tailscale:
funnel: trueACL Requirements
Funnel must be enabled in your Tailscale ACL before use. Add the following to your policy:
"nodeAttrs": [{
"target": ["autogroup:member", "tag:server"],
"attr": ["funnel"]
}]See Tailscale’s Funnel documentation for full requirements and limitations.
Limitations
- Only HTTPS (port 443) is supported — Funnel does not expose raw TCP ports
- TLS is handled by Tailscale — the public URL uses Tailscale’s certificate
- Public URL format:
https://<hostname>.tailnet-name.ts.net - No Tailscale authentication — Funnel bypasses tailnet membership checks
Caution
Funnel bypasses Tailscale authentication. Anyone on the internet can reach your service. Ensure your backend has its own authentication.
Troubleshooting
Funnel doesn’t work
- Verify Funnel is enabled in your Tailscale ACL (see above)
- Check that the port option
tailscale_funnelis set - Only HTTPS ports can use Funnel — TCP ports are not supported
- Check TSDProxy logs for Funnel-related errors
“Funnel not available” error
Ensure your Tailscale account has Funnel enabled. The nodeAttrs ACL entry
must include the tags used by your proxy.
Last updated on