A funnel publishes an HTTP service running on a machine in your tailnet at a public HTTPS URL. Anyone on the internet can reach it, without Tailscale. Use it for webhooks, demos or sharing a development server.
A funnel exposes the target port to the entire internet. Only create
one for a service that is meant to be public and does its own
authentication if it needs any.
Funnels are experimental and will change. They are ownscale’s own feature
and are created in the console. Tailscale’s
tailscale funnel command
doesn’t work with ownscale.Who can do this: managers create and delete funnels. Members can view them.
Creating a funnel
On Funnels, click Create funnel route and choose:
- Subdomain: a label of 1 to 63 lowercase letters and digits, without hyphens, unique within the organization;
- Machine and port: where requests go.
The funnel’s URL is:
https://<label>-<org>.<CONTENT_DOMAIN>For example, label demo in organization abcd on example.com gives
https://demo-abcd.example.com.
How it works
flowchart LR
U[Visitor] -->|HTTPS| C[Caddy]
C --> P[ownscale funnel proxy]
P -->|ownscale-agent machine, WireGuard| T[Target machine:port]
- Caddy terminates TLS with a wildcard certificate.
- ownscale’s funnel proxy looks up the route.
- The request travels through the tailnet from the
ownscale-agentmachine, an embedded Tailscale client that ownscale adds to the organization, to the target machine and port.
The ownscale-agent user and machine appear in your lists marked as
Internal. Don’t remove them unless you want to remove every funnel. See
the FAQ.
Limits
- The target receives plain HTTP. TLS to the target and raw TCP aren’t supported.
- The original
Hostheader is passed through. - Request bodies are limited to 32 MiB.
- Each organization’s funnels together accept up to 100 requests per second (bursts of 200) and 256 concurrent requests.
- Visitors over a limit get an error page with status
413,429or503. These numbers are defaults: the server administrator can change them with theFUNNEL_*settings inexample.env. ownscale.net uses lower limits. - If the target machine is offline, or the organization is
asleep,
visitors get
503. - The access control policy must allow the
ownscale-agentmachine to reach the target port. The default allow-all policy does.