{"slug":"tailscale-funnel","title":"Tailscale Funnel","tags":["tailscale"],"agent_summary":"Last validated: Jan 20, 2026","trigger_phrases":[],"runnable":false,"markdown":"\r\n# Tailscale Funnel\r\n\r\nLast validated: Jan 20, 2026\r\n\r\nTailscale Funnelis currently [in beta](https://tailscale.com/docs/reference/tailscale-release-stages#beta). To try it, follow the steps below to enable it for your network using Tailscale v1.38.3 or later.\r\n\r\nTailscale Funnelis available for [all plans](https://tailscale.com/pricing).\r\n\r\nTailscale Funnel lets you route traffic from the broader internet to a local service running on a device in your Tailscale network (known as a tailnet). You can use it to share a local service, like a web app, for anyone to access—even if they don't use Tailscale.\r\n\r\nServe and Funnel \\| Tailscale Explained - YouTube\r\n\r\nTap to unmute\r\n\r\n[Serve and Funnel \\| Tailscale Explained](https://www.youtube.com/watch?v=MpxmfpCl20c) [Tailscale](https://www.youtube.com/channel/UCcdv38QxPjSMqbt5ffLhJLA)\r\n\r\n![thumbnail-image](https://yt3.ggpht.com/K3B5Hdi7j4zy2y53nlQCQb9J0qHNuSXhD2hWysrwaiDvv19tPr5RY04QuQfFOvb9rDq9cugGjZU=s68-c-k-c0x00ffffff-no-rj)\r\n\r\nTailscale68.5K subscribers\r\n\r\nIf you'd like to share local services only with other devices in your tailnet, use [Tailscale Serve](https://tailscale.com/docs/features/tailscale-serve) instead. Also check out [Funnel vs. sharing](https://tailscale.com/docs/reference/funnel-vs-sharing).\r\n\r\nExplore the following topics to find more information about Tailscale Funnel:\r\n\r\n- [Get started with Funnel](https://tailscale.com/docs/features/tailscale-funnel#get-started-with-funnel)\r\n- [How Funnel works](https://tailscale.com/docs/features/tailscale-funnel#how-funnel-works)\r\n- [The `tailscale funnel` command](https://tailscale.com/docs/reference/tailscale-cli/funnel)\r\n- [Troubleshoot Funnel](https://tailscale.com/docs/features/tailscale-funnel#troubleshoot-funnel)\r\n- [Funnel examples](https://tailscale.com/docs/reference/examples/funnel)\r\n\r\n## [How Funnel works](https://tailscale.com/docs/features/tailscale-funnel\\#how-funnel-works)\r\n\r\nFunnel exposes a local resource to the internet through a unique Funnel URL. Using Funnel to share a local resource creates an encrypted tunnel from the internet to a specific resource on your device. Tailscale does this using a TCP proxy and Funnel relay servers.\r\n\r\n![Diagram showing how Tailscale Funnel works](https://tailscale.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ffunnel-diagram.2f3f0e10.png&w=3840&q=75)\r\n\r\nWhen you share a local resource with Funnel, it creates a unique Funnel URL that you can share. When someone uses your Funnel URL, their device sends a request to the Funnel relay server. After receiving the request, the Funnel relay server will establish a TCP proxy to your device using Tailscale. This proxy is an encrypted tunnel between the local resource and the device accessing the Funnel URL that points to it. Using a TCP proxy protects the shared data and lets Tailscale hide the IP address of your local device. The Funnel relay server cannot decrypt data sent over this proxy.\r\n\r\nWhere to go next\r\n\r\nThe process, from creating a Funnel to accessing a resource shared through it, involves:\r\n\r\n- [Creating and sharing the Funnel URL](https://tailscale.com/docs/features/tailscale-funnel#creating-and-sharing-the-funnel-url).\r\n- [Resolving the Funnel URL to an IP address](https://tailscale.com/docs/features/tailscale-funnel#resolving-the-funnel-url-to-an-ip-address).\r\n- [Establishing an encrypted proxy](https://tailscale.com/docs/features/tailscale-funnel#establishing-an-encrypted-proxy).\r\n- [Serving the shared resource through the proxy](https://tailscale.com/docs/features/tailscale-funnel#serving-the-shared-resource-through-the-proxy).\r\n\r\n### [Creating and sharing the Funnel URL](https://tailscale.com/docs/features/tailscale-funnel\\#creating-and-sharing-the-funnel-url)\r\n\r\nWhen you share a local resource with Funnel, it creates a unique Funnel URL that you can share. The generated URL points only to the specific resource you used Funnel to share. So, if you share a local web server, the Funnel only shares that specific web server. Likewise, if you share a file or directory, the Funnel only shares the specific file or directory.\r\n\r\n### [Resolving the Funnel URL to an IP address](https://tailscale.com/docs/features/tailscale-funnel\\#resolving-the-funnel-url-to-an-ip-address)\r\n\r\nWhen a device tries to access a Funnel URL, it first contacts public DNS servers to resolve the URL to an IP address. These DNS servers respond with the IP address of a Funnel relay server, not your device's IP address. This step hides your device's location from the public internet. After resolving the URL to an IP address, the device sends a request to the Funnel relay server.\r\n\r\n### [Establishing an encrypted proxy](https://tailscale.com/docs/features/tailscale-funnel\\#establishing-an-encrypted-proxy)\r\n\r\nAfter receiving the request, the Funnel relay server creates a TCP proxy to your device over Tailscale. This proxy acts as an encrypted relay between the Funnel relay server and your device. It ensures that your device's IP address is never exposed to the internet.\r\n\r\nFunnel relay servers do not decrypt the traffic between public devices and your device. This ensures that Tailscale cannot access or read any content. It maintains end-to-end [encryption](https://tailscale.com/docs/concepts/tailscale-encryption) and privacy.\r\n\r\nThe Tailscale server running on your device receives the encrypted request from the TCP proxy. It then terminates the [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) connection and passes the decrypted request to the local service you exposed through Funnel. The local service processes the request and generates a response.\r\n\r\n### [Serving the shared resource through the proxy](https://tailscale.com/docs/features/tailscale-funnel\\#serving-the-shared-resource-through-the-proxy)\r\n\r\nAfter the local server on your device processes the request, it sends the response to the Tailscale server on your device. The Tailscale server then encrypts the response and sends it back to the Funnel relay server over the established TCP proxy.\r\n\r\nUpon receiving the encrypted response, the Funnel relay server forwards it to the user's device. It does not decrypt its contents; it maintains the end-to-end encryption of the data. Finally, the user's device ends the TLS connection. It then decrypts the response and shows the requested information to the user accessing the Funnel URL.\r\n\r\n## [Get started with Funnel](https://tailscale.com/docs/features/tailscale-funnel\\#get-started-with-funnel)\r\n\r\nTailscale Funnel is disabled by default, but you can use the [Tailscale CLI](https://tailscale.com/docs/reference/tailscale-cli) to enable the Funnel service and create Funnels.\r\n\r\n### [Requirements and limitations](https://tailscale.com/docs/features/tailscale-funnel\\#requirements-and-limitations)\r\n\r\nFunnel requires the following to work:\r\n\r\n- Tailscale v1.38.3 or later.\r\n- [MagicDNS](https://tailscale.com/docs/features/magicdns) enabled for your tailnet.\r\n- [HTTPS](https://tailscale.com/docs/how-to/set-up-https-certificates) enabled and valid HTTPS certificates for your tailnet.\r\n- A funnel [node attribute](https://tailscale.com/docs/reference/syntax/policy-file#node-attributes) in your tailnet policy file. This attribute tells Tailscale which tailnet users can use Funnel.\r\n\r\nAdditionally, Funnel has the following limitations:\r\n\r\n- Funnel can only use DNS names in your [tailnet's domain](https://tailscale.com/docs/concepts/tailnet-name) (`tailnet-name.ts.net`).\r\n- Funnel can only listen on ports `443`, `8443`, and `10000`.\r\n- Funnel only works over [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security)-encrypted connections.\r\n- Traffic sent over a Funnel is subject to non-configurable bandwidth limits.\r\n- Funnel only works on platforms that can run the Tailscale CLI.\r\n- To use Funnel on macOS, you must use one of the [open source variants of the Tailscale application for macOS](https://tailscale.com/docs/concepts/macos-variants).\r\n- The same port number cannot be used for Serve (available only within the tailnet) and Funnel (available within the tailnet and to the public) at the same time.\r\n  - If the most recent command to configure the port was `serve`, then the port will be completely private.\r\n  - If the most recent command to configure the port was `funnel`, then the port will be completely public.\r\n\r\nWhen you enable Funnel using the Tailscale CLI, Tailscale automatically creates valid HTTPS certificates and updates your tailnet policy file. By default, it lets any users in the `autogroup:member` [autogroup](https://tailscale.com/docs/reference/syntax/policy-file#autogroups) to use Funnel. You can adjust this by manually updating your tailnet policy file.\r\n\r\nIt is possible to frequently request a new certificate and exceed Let's Encrypt's rate limits. As a result, you may find yourself waiting 34 hours until you can try again. For more information, refer to Let's Encrypt's [rate limits documentation](https://letsencrypt.org/docs/rate-limits/).\r\n\r\n### [Enable Funnel](https://tailscale.com/docs/features/tailscale-funnel\\#enable-funnel)\r\n\r\nUse the [`tailscale funnel`](https://tailscale.com/docs/reference/tailscale-cli/funnel) command to enable Funnel. The command triggers a web interface that prompts you to approve enabling Funnel. After you approve it, Tailscale will create valid HTTPS certificates for your tailnet and add a funnel node attribute to your tailnet policy file.\r\n\r\n### [Create a Funnel](https://tailscale.com/docs/features/tailscale-funnel\\#create-a-funnel)\r\n\r\nTo create a Funnel, use the `tailscale funnel` command and pass the target you want to share. You can share a service, a file, or a directory. You can also optionally pass any of the [available flags](https://tailscale.com/docs/reference/tailscale-cli/funnel#funnel-command-flags).\r\n\r\n```shell\r\ntailscale funnel 3000\r\nAvailable on the internet:\r\nhttps://amelie-workstation.pango-lin.ts.net\r\n\r\n|-- / proxy http://127.0.0.1:3000\r\n\r\nPress Ctrl+C to exit.\r\n```\r\n\r\nWhen you use Tailscale Funnel, the Funnel relay servers show up in your device's list of Tailscale peers. All peers using the command [`tailscale status --json`](https://tailscale.com/docs/reference/tailscale-cli#status) display.\r\n\r\nSharing files and directories with Funnel only works with the [open source variants](https://tailscale.com/docs/concepts/macos-variants) of the Tailscale client for macOS. Other variants have sandbox limitations.\r\n\r\nYou can only use Funnel to share ports if you installed Tailscale for macOS from the App Store or as a Standalone variant system extension.\r\n\r\n## [Resources](https://tailscale.com/docs/features/tailscale-funnel\\#resources)\r\n\r\n- Explore the collection of [Funnel use case examples](https://tailscale.com/docs/reference/examples/funnel) for inspiration and ideas.\r\n- [Use the PROXY protocol](https://tailscale.com/docs/reference/tailscale-cli/funnel#use-the-proxy-protocol).\r\n- [Use the TCP forwarder](https://tailscale.com/docs/reference/tailscale-cli/funnel#use-a-tcp-forwarder).\r\n- [Reset the Funnel configuration](https://tailscale.com/docs/reference/tailscale-cli/funnel#reset-tailscale-funnel).\r\n- [Disable Funnel](https://tailscale.com/docs/reference/tailscale-cli/funnel#disable-tailscale-funnel).\r\n\r\n## [Troubleshooting](https://tailscale.com/docs/features/tailscale-funnel\\#troubleshooting)\r\n\r\nTrouble with Funnels is usually related to one of the following issues:\r\n\r\n- [Funnel node attribute](https://tailscale.com/docs/features/tailscale-funnel#funnel-node-attribute)\r\n- [HTTPS certificates](https://tailscale.com/docs/features/tailscale-funnel#https-certificates)\r\n- [Access controls](https://tailscale.com/docs/features/tailscale-funnel#access-controls)\r\n- [DNS propagation](https://tailscale.com/docs/features/tailscale-funnel#dns-propagation)\r\n\r\n### [Funnel node attribute](https://tailscale.com/docs/features/tailscale-funnel\\#funnel-node-attribute)\r\n\r\nTailscale Funnel requires a [node attribute](https://tailscale.com/docs/reference/syntax/policy-file#node-attributes) (`nodeAttrs`) of `funnel` in your tailnet policy file to tell Tailscale who can use Funnel. If you use the Tailscale CLI to enable Funnel, Tailscale ensures this requirement is met. Alternatively, you can manually add the node attribute for Funnel. You need to be an [Owner, Admin, or Network admin](https://tailscale.com/docs/reference/user-roles) of a tailnet to modify a tailnet policy file.\r\n\r\n1. Open the [Access controls](https://login.tailscale.com/admin/acls) page of the admin console.\r\n2. Expand the Funnel section and select **Add Funnel to policy**.\r\n\r\nThis adds the default `nodeAttrs` section and saves the tailnet policy file automatically.\r\n\r\n```json\r\n\"nodeAttrs\": [\\\r\n  {\\\r\n    \"target\": [\"autogroup:member\"],\\\r\n    \"attr\":   [\"funnel\"],\\\r\n  },\\\r\n],\r\n```\r\n\r\nYou can use the [visual policy editor](https://tailscale.com/docs/features/visual-editor) to manage your tailnet policy file. Refer to the [visual editor reference](https://tailscale.com/docs/reference/visual-editor) for guidance on using the visual editor.\r\n\r\n### [HTTPS certificates](https://tailscale.com/docs/features/tailscale-funnel\\#https-certificates)\r\n\r\nTailscale Funnel requires valid [HTTPS certificates](https://tailscale.com/docs/how-to/set-up-https-certificates) for your tailnet to automatically provision TLS certificates for your unique tailnet DNS name. If you use the Tailscale CLI to enable Funnel, Tailscale ensures this requirement is met.\r\n\r\n### [Access controls](https://tailscale.com/docs/features/tailscale-funnel\\#access-controls)\r\n\r\nIf the funnel node attribute in your tailnet policy file doesn't permit you to use Funnel, you won't be able to. The default node attribute to enable Funnel includes all tailnet members by default, but [Owners, Admins, and Network admins](https://tailscale.com/docs/reference/user-roles) can modify this to further restrict access.\r\n\r\n### [DNS propagation](https://tailscale.com/docs/features/tailscale-funnel\\#dns-propagation)\r\n\r\nPublic DNS records can take up to 10 minutes to show up for your tailnet domain. This delay might prevent someone from using a Funnel URL until the public DNS records are updated.\r\n\r\n![Project Logo](https://cdn.brandfetch.io/tailscale.com/fallback/lettermark/theme/dark/h/256/w/256/icon?c=1bfwsmEH20zzEfSNTed)\r\n\r\nAsk AI\r\n\r\nreCAPTCHA\r\n\r\nRecaptcha requires verification.\r\n\r\nprotected by **reCAPTCHA**\r\n","html":"<h1>Tailscale Funnel</h1>\n<p>Last validated: Jan 20, 2026</p>\n<p>Tailscale Funnelis currently <a href=\"https://tailscale.com/docs/reference/tailscale-release-stages#beta\">in beta</a>. To try it, follow the steps below to enable it for your network using Tailscale v1.38.3 or later.</p>\n<p>Tailscale Funnelis available for <a href=\"https://tailscale.com/pricing\">all plans</a>.</p>\n<p>Tailscale Funnel lets you route traffic from the broader internet to a local service running on a device in your Tailscale network (known as a tailnet). You can use it to share a local service, like a web app, for anyone to access—even if they don't use Tailscale.</p>\n<p>Serve and Funnel | Tailscale Explained - YouTube</p>\n<p>Tap to unmute</p>\n<p><a href=\"https://www.youtube.com/watch?v=MpxmfpCl20c\">Serve and Funnel | Tailscale Explained</a> <a href=\"https://www.youtube.com/channel/UCcdv38QxPjSMqbt5ffLhJLA\">Tailscale</a></p>\n<p><img src=\"https://yt3.ggpht.com/K3B5Hdi7j4zy2y53nlQCQb9J0qHNuSXhD2hWysrwaiDvv19tPr5RY04QuQfFOvb9rDq9cugGjZU=s68-c-k-c0x00ffffff-no-rj\" alt=\"thumbnail-image\"></p>\n<p>Tailscale68.5K subscribers</p>\n<p>If you'd like to share local services only with other devices in your tailnet, use <a href=\"https://tailscale.com/docs/features/tailscale-serve\">Tailscale Serve</a> instead. Also check out <a href=\"https://tailscale.com/docs/reference/funnel-vs-sharing\">Funnel vs. sharing</a>.</p>\n<p>Explore the following topics to find more information about Tailscale Funnel:</p>\n<ul>\n<li><a href=\"https://tailscale.com/docs/features/tailscale-funnel#get-started-with-funnel\">Get started with Funnel</a></li>\n<li><a href=\"https://tailscale.com/docs/features/tailscale-funnel#how-funnel-works\">How Funnel works</a></li>\n<li><a href=\"https://tailscale.com/docs/reference/tailscale-cli/funnel\">The <code>tailscale funnel</code> command</a></li>\n<li><a href=\"https://tailscale.com/docs/features/tailscale-funnel#troubleshoot-funnel\">Troubleshoot Funnel</a></li>\n<li><a href=\"https://tailscale.com/docs/reference/examples/funnel\">Funnel examples</a></li>\n</ul>\n<h2><a href=\"https://tailscale.com/docs/features/tailscale-funnel#how-funnel-works\">How Funnel works</a></h2>\n<p>Funnel exposes a local resource to the internet through a unique Funnel URL. Using Funnel to share a local resource creates an encrypted tunnel from the internet to a specific resource on your device. Tailscale does this using a TCP proxy and Funnel relay servers.</p>\n<p><img src=\"https://tailscale.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ffunnel-diagram.2f3f0e10.png&#x26;w=3840&#x26;q=75\" alt=\"Diagram showing how Tailscale Funnel works\"></p>\n<p>When you share a local resource with Funnel, it creates a unique Funnel URL that you can share. When someone uses your Funnel URL, their device sends a request to the Funnel relay server. After receiving the request, the Funnel relay server will establish a TCP proxy to your device using Tailscale. This proxy is an encrypted tunnel between the local resource and the device accessing the Funnel URL that points to it. Using a TCP proxy protects the shared data and lets Tailscale hide the IP address of your local device. The Funnel relay server cannot decrypt data sent over this proxy.</p>\n<p>Where to go next</p>\n<p>The process, from creating a Funnel to accessing a resource shared through it, involves:</p>\n<ul>\n<li><a href=\"https://tailscale.com/docs/features/tailscale-funnel#creating-and-sharing-the-funnel-url\">Creating and sharing the Funnel URL</a>.</li>\n<li><a href=\"https://tailscale.com/docs/features/tailscale-funnel#resolving-the-funnel-url-to-an-ip-address\">Resolving the Funnel URL to an IP address</a>.</li>\n<li><a href=\"https://tailscale.com/docs/features/tailscale-funnel#establishing-an-encrypted-proxy\">Establishing an encrypted proxy</a>.</li>\n<li><a href=\"https://tailscale.com/docs/features/tailscale-funnel#serving-the-shared-resource-through-the-proxy\">Serving the shared resource through the proxy</a>.</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/features/tailscale-funnel#creating-and-sharing-the-funnel-url\">Creating and sharing the Funnel URL</a></h3>\n<p>When you share a local resource with Funnel, it creates a unique Funnel URL that you can share. The generated URL points only to the specific resource you used Funnel to share. So, if you share a local web server, the Funnel only shares that specific web server. Likewise, if you share a file or directory, the Funnel only shares the specific file or directory.</p>\n<h3><a href=\"https://tailscale.com/docs/features/tailscale-funnel#resolving-the-funnel-url-to-an-ip-address\">Resolving the Funnel URL to an IP address</a></h3>\n<p>When a device tries to access a Funnel URL, it first contacts public DNS servers to resolve the URL to an IP address. These DNS servers respond with the IP address of a Funnel relay server, not your device's IP address. This step hides your device's location from the public internet. After resolving the URL to an IP address, the device sends a request to the Funnel relay server.</p>\n<h3><a href=\"https://tailscale.com/docs/features/tailscale-funnel#establishing-an-encrypted-proxy\">Establishing an encrypted proxy</a></h3>\n<p>After receiving the request, the Funnel relay server creates a TCP proxy to your device over Tailscale. This proxy acts as an encrypted relay between the Funnel relay server and your device. It ensures that your device's IP address is never exposed to the internet.</p>\n<p>Funnel relay servers do not decrypt the traffic between public devices and your device. This ensures that Tailscale cannot access or read any content. It maintains end-to-end <a href=\"https://tailscale.com/docs/concepts/tailscale-encryption\">encryption</a> and privacy.</p>\n<p>The Tailscale server running on your device receives the encrypted request from the TCP proxy. It then terminates the <a href=\"https://en.wikipedia.org/wiki/Transport_Layer_Security\">TLS</a> connection and passes the decrypted request to the local service you exposed through Funnel. The local service processes the request and generates a response.</p>\n<h3><a href=\"https://tailscale.com/docs/features/tailscale-funnel#serving-the-shared-resource-through-the-proxy\">Serving the shared resource through the proxy</a></h3>\n<p>After the local server on your device processes the request, it sends the response to the Tailscale server on your device. The Tailscale server then encrypts the response and sends it back to the Funnel relay server over the established TCP proxy.</p>\n<p>Upon receiving the encrypted response, the Funnel relay server forwards it to the user's device. It does not decrypt its contents; it maintains the end-to-end encryption of the data. Finally, the user's device ends the TLS connection. It then decrypts the response and shows the requested information to the user accessing the Funnel URL.</p>\n<h2><a href=\"https://tailscale.com/docs/features/tailscale-funnel#get-started-with-funnel\">Get started with Funnel</a></h2>\n<p>Tailscale Funnel is disabled by default, but you can use the <a href=\"https://tailscale.com/docs/reference/tailscale-cli\">Tailscale CLI</a> to enable the Funnel service and create Funnels.</p>\n<h3><a href=\"https://tailscale.com/docs/features/tailscale-funnel#requirements-and-limitations\">Requirements and limitations</a></h3>\n<p>Funnel requires the following to work:</p>\n<ul>\n<li>Tailscale v1.38.3 or later.</li>\n<li><a href=\"https://tailscale.com/docs/features/magicdns\">MagicDNS</a> enabled for your tailnet.</li>\n<li><a href=\"https://tailscale.com/docs/how-to/set-up-https-certificates\">HTTPS</a> enabled and valid HTTPS certificates for your tailnet.</li>\n<li>A funnel <a href=\"https://tailscale.com/docs/reference/syntax/policy-file#node-attributes\">node attribute</a> in your tailnet policy file. This attribute tells Tailscale which tailnet users can use Funnel.</li>\n</ul>\n<p>Additionally, Funnel has the following limitations:</p>\n<ul>\n<li>Funnel can only use DNS names in your <a href=\"https://tailscale.com/docs/concepts/tailnet-name\">tailnet's domain</a> (<code>tailnet-name.ts.net</code>).</li>\n<li>Funnel can only listen on ports <code>443</code>, <code>8443</code>, and <code>10000</code>.</li>\n<li>Funnel only works over <a href=\"https://en.wikipedia.org/wiki/Transport_Layer_Security\">TLS</a>-encrypted connections.</li>\n<li>Traffic sent over a Funnel is subject to non-configurable bandwidth limits.</li>\n<li>Funnel only works on platforms that can run the Tailscale CLI.</li>\n<li>To use Funnel on macOS, you must use one of the <a href=\"https://tailscale.com/docs/concepts/macos-variants\">open source variants of the Tailscale application for macOS</a>.</li>\n<li>The same port number cannot be used for Serve (available only within the tailnet) and Funnel (available within the tailnet and to the public) at the same time.\n<ul>\n<li>If the most recent command to configure the port was <code>serve</code>, then the port will be completely private.</li>\n<li>If the most recent command to configure the port was <code>funnel</code>, then the port will be completely public.</li>\n</ul>\n</li>\n</ul>\n<p>When you enable Funnel using the Tailscale CLI, Tailscale automatically creates valid HTTPS certificates and updates your tailnet policy file. By default, it lets any users in the <code>autogroup:member</code> <a href=\"https://tailscale.com/docs/reference/syntax/policy-file#autogroups\">autogroup</a> to use Funnel. You can adjust this by manually updating your tailnet policy file.</p>\n<p>It is possible to frequently request a new certificate and exceed Let's Encrypt's rate limits. As a result, you may find yourself waiting 34 hours until you can try again. For more information, refer to Let's Encrypt's <a href=\"https://letsencrypt.org/docs/rate-limits/\">rate limits documentation</a>.</p>\n<h3><a href=\"https://tailscale.com/docs/features/tailscale-funnel#enable-funnel\">Enable Funnel</a></h3>\n<p>Use the <a href=\"https://tailscale.com/docs/reference/tailscale-cli/funnel\"><code>tailscale funnel</code></a> command to enable Funnel. The command triggers a web interface that prompts you to approve enabling Funnel. After you approve it, Tailscale will create valid HTTPS certificates for your tailnet and add a funnel node attribute to your tailnet policy file.</p>\n<h3><a href=\"https://tailscale.com/docs/features/tailscale-funnel#create-a-funnel\">Create a Funnel</a></h3>\n<p>To create a Funnel, use the <code>tailscale funnel</code> command and pass the target you want to share. You can share a service, a file, or a directory. You can also optionally pass any of the <a href=\"https://tailscale.com/docs/reference/tailscale-cli/funnel#funnel-command-flags\">available flags</a>.</p>\n<pre><code class=\"language-shell\">tailscale funnel 3000\r\nAvailable on the internet:\r\nhttps://amelie-workstation.pango-lin.ts.net\r\n\r\n|-- / proxy http://127.0.0.1:3000\r\n\r\nPress Ctrl+C to exit.\n</code></pre>\n<p>When you use Tailscale Funnel, the Funnel relay servers show up in your device's list of Tailscale peers. All peers using the command <a href=\"https://tailscale.com/docs/reference/tailscale-cli#status\"><code>tailscale status --json</code></a> display.</p>\n<p>Sharing files and directories with Funnel only works with the <a href=\"https://tailscale.com/docs/concepts/macos-variants\">open source variants</a> of the Tailscale client for macOS. Other variants have sandbox limitations.</p>\n<p>You can only use Funnel to share ports if you installed Tailscale for macOS from the App Store or as a Standalone variant system extension.</p>\n<h2><a href=\"https://tailscale.com/docs/features/tailscale-funnel#resources\">Resources</a></h2>\n<ul>\n<li>Explore the collection of <a href=\"https://tailscale.com/docs/reference/examples/funnel\">Funnel use case examples</a> for inspiration and ideas.</li>\n<li><a href=\"https://tailscale.com/docs/reference/tailscale-cli/funnel#use-the-proxy-protocol\">Use the PROXY protocol</a>.</li>\n<li><a href=\"https://tailscale.com/docs/reference/tailscale-cli/funnel#use-a-tcp-forwarder\">Use the TCP forwarder</a>.</li>\n<li><a href=\"https://tailscale.com/docs/reference/tailscale-cli/funnel#reset-tailscale-funnel\">Reset the Funnel configuration</a>.</li>\n<li><a href=\"https://tailscale.com/docs/reference/tailscale-cli/funnel#disable-tailscale-funnel\">Disable Funnel</a>.</li>\n</ul>\n<h2><a href=\"https://tailscale.com/docs/features/tailscale-funnel#troubleshooting\">Troubleshooting</a></h2>\n<p>Trouble with Funnels is usually related to one of the following issues:</p>\n<ul>\n<li><a href=\"https://tailscale.com/docs/features/tailscale-funnel#funnel-node-attribute\">Funnel node attribute</a></li>\n<li><a href=\"https://tailscale.com/docs/features/tailscale-funnel#https-certificates\">HTTPS certificates</a></li>\n<li><a href=\"https://tailscale.com/docs/features/tailscale-funnel#access-controls\">Access controls</a></li>\n<li><a href=\"https://tailscale.com/docs/features/tailscale-funnel#dns-propagation\">DNS propagation</a></li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/features/tailscale-funnel#funnel-node-attribute\">Funnel node attribute</a></h3>\n<p>Tailscale Funnel requires a <a href=\"https://tailscale.com/docs/reference/syntax/policy-file#node-attributes\">node attribute</a> (<code>nodeAttrs</code>) of <code>funnel</code> in your tailnet policy file to tell Tailscale who can use Funnel. If you use the Tailscale CLI to enable Funnel, Tailscale ensures this requirement is met. Alternatively, you can manually add the node attribute for Funnel. You need to be an <a href=\"https://tailscale.com/docs/reference/user-roles\">Owner, Admin, or Network admin</a> of a tailnet to modify a tailnet policy file.</p>\n<ol>\n<li>Open the <a href=\"https://login.tailscale.com/admin/acls\">Access controls</a> page of the admin console.</li>\n<li>Expand the Funnel section and select <strong>Add Funnel to policy</strong>.</li>\n</ol>\n<p>This adds the default <code>nodeAttrs</code> section and saves the tailnet policy file automatically.</p>\n<pre><code class=\"language-json\">\"nodeAttrs\": [\\\r\n  {\\\r\n    \"target\": [\"autogroup:member\"],\\\r\n    \"attr\":   [\"funnel\"],\\\r\n  },\\\r\n],\n</code></pre>\n<p>You can use the <a href=\"https://tailscale.com/docs/features/visual-editor\">visual policy editor</a> to manage your tailnet policy file. Refer to the <a href=\"https://tailscale.com/docs/reference/visual-editor\">visual editor reference</a> for guidance on using the visual editor.</p>\n<h3><a href=\"https://tailscale.com/docs/features/tailscale-funnel#https-certificates\">HTTPS certificates</a></h3>\n<p>Tailscale Funnel requires valid <a href=\"https://tailscale.com/docs/how-to/set-up-https-certificates\">HTTPS certificates</a> for your tailnet to automatically provision TLS certificates for your unique tailnet DNS name. If you use the Tailscale CLI to enable Funnel, Tailscale ensures this requirement is met.</p>\n<h3><a href=\"https://tailscale.com/docs/features/tailscale-funnel#access-controls\">Access controls</a></h3>\n<p>If the funnel node attribute in your tailnet policy file doesn't permit you to use Funnel, you won't be able to. The default node attribute to enable Funnel includes all tailnet members by default, but <a href=\"https://tailscale.com/docs/reference/user-roles\">Owners, Admins, and Network admins</a> can modify this to further restrict access.</p>\n<h3><a href=\"https://tailscale.com/docs/features/tailscale-funnel#dns-propagation\">DNS propagation</a></h3>\n<p>Public DNS records can take up to 10 minutes to show up for your tailnet domain. This delay might prevent someone from using a Funnel URL until the public DNS records are updated.</p>\n<p><img src=\"https://cdn.brandfetch.io/tailscale.com/fallback/lettermark/theme/dark/h/256/w/256/icon?c=1bfwsmEH20zzEfSNTed\" alt=\"Project Logo\"></p>\n<p>Ask AI</p>\n<p>reCAPTCHA</p>\n<p>Recaptcha requires verification.</p>\n<p>protected by <strong>reCAPTCHA</strong></p>\n"}