Dos comandos de Tailscale se diferencian en una palabra. tailscale serve comparte un servicio local con los dispositivos de tu propio tailnet. tailscale funnel encamina el tráfico desde internet en sentido amplio hacia ese mismo servicio, al alcance de cualquiera que tenga la URL.
Misma sintaxis, exposición opuesta. Ese es todo el artículo en dos frases, pero equivocarse de sentido deja en internet abierto un servicio que creías privado, así que conviene ser preciso sobre lo que Funnel hace y lo que no.
De un vistazo (el detalle, los comandos y la configuración con tu propio dominio están más abajo):
tailscale serve | tailscale funnel | VPS + Caddy (tu dominio) | |
|---|---|---|---|
| Quién puede acceder | Solo los dispositivos de tu tailnet | Cualquiera que tenga la URL | Cualquiera, detrás de tu inicio de sesión |
| Dirección | machine.nombre-del-tailnet.ts.net | La misma URL ts.net, ahora pública | Un dominio tuyo |
| Puertos públicos | Ninguno, nada es público | Solo 443, 8443 o 10000 | Los que tú abras |
| Inicio de sesión delante | Pertenecer al tailnet | Ninguno | El tuyo (basic_auth de Caddy) |
| Ancho de banda | Sin el límite de Funnel | Limitado por Tailscale, no configurable | La velocidad del puerto del VPS |
| Coste adicional | Ninguno | Ninguno, en todos los planes | Unos pocos euros al mes |
Genera tu comando Serve o Funnel
Tres preguntas y obtienes el comando, la dirección que da y cómo deshacerlo. Funciona en tu navegador, no se envía nada.
Tu comando
tailscale funnel 3000
Dirección en la que responderá
https://<machine>.<tailnet-name>.ts.net
Comprobar y deshacer
tailscale funnel status tailscale funnel reset
- Funnel no pone ningún inicio de sesión delante del servicio: cualquiera con la URL llega a tu aplicación. Publica solo lo que tenga su propia autenticación.
- El archivo de políticas del tailnet debe conceder el atributo de nodo funnel (por defecto: autogroup:member), y MagicDNS y los certificados HTTPS deben estar activados en la consola de administración.
- Sin --bg el recurso compartido se detiene al cerrar la terminal: la opción prudente para una prueba.
Si necesitas tu propio dominio, cualquier puerto y ningún límite de ancho de banda de Funnel, la columna de la derecha es la solución: un VPS pequeño con IPv4 pública (Contabo, 5,50 € al mes) más Caddy, configurado paso a paso más abajo.
Qué es Funnel en realidad
La descripción de Tailscale es directa: Funnel «permite encaminar tráfico desde internet en sentido amplio hacia un servicio local que se ejecuta en un dispositivo de tu red Tailscale». El objetivo es compartir con personas que no están en tu tailnet y no tienen cuenta de Tailscale.
Serve es el caso inverso, y la documentación lo dice sin rodeos: si quieres compartir servicios locales solo con los demás dispositivos de tu tailnet, usa Serve.
La decisión no es una preferencia técnica, es una pregunta sobre tu público:
- Solo tus máquinas y las personas invitadas al tailnet → Serve.
- Cualquiera con el enlace, incluidos desconocidos → Funnel.
Si no sabes responder a esa pregunta para un servicio concreto, no ejecutes todavía ninguno de los dos comandos.
Las tres restricciones que deciden si Funnel encaja
Funnel es deliberadamente estrecho, y sus límites están documentados en lugar de descubrirse sobre la marcha. Tres de ellos resuelven la mayoría de los casos antes de escribir una línea de configuración.
Los puertos: 443, 8443, 10000. Esa es la lista entera. Funnel solo puede escuchar en esos tres. No es un valor por defecto que se pueda sobrescribir: si tu servicio debe ser accesible públicamente en otro puerto, Funnel no es la herramienta.
El nombre de host pertenece a Tailscale. Funnel solo puede usar nombres DNS del dominio de tu tailnet, con la forma tailnet-name.ts.net. Si pensabas poner un producto, una demo para clientes o algo con tu marca en un dominio propio, no es lo que hace.
El ancho de banda está limitado, y el límite no es tuyo. Tailscale afirma que el tráfico enviado por Funnel está sujeto a límites no configurables. Para una página de configuración o una herramienta interna pequeña, da igual. Para transmitir una mediateca a familiares, ese tope será seguramente la restricción, antes que tu velocidad de subida.

La parte que se salta: no hay ningún inicio de sesión delante
Esta es la razón por la que la confusión Serve/Funnel importa más que una errata cualquiera.
La documentación de Tailscale no describe ninguna capa de autenticación delante de un punto de entrada Funnel, y es por diseño: toda su finalidad es servir a gente que no está en tu tailnet y que, por tanto, no puede ser autenticada por él. Funnel te da una entrada HTTPS pública; no te da una puerta.
Consecuencia práctica: la autenticación de tu aplicación es lo único que hay entre internet y tus datos. Un panel sin contraseña, un explorador de archivos que confía en la red local, un panel de administración que solo era accesible desde tu LAN: todos quedan abiertos en cuanto se «funnelan» en lugar de servirse.
Antes de activarlo sobre nada, la prueba honesta cabe en una pregunta: ¿publicaría esta URL abiertamente sin incomodidad? Si la respuesta es no, el servicio necesita su propia autenticación, o necesita Serve en lugar de Funnel.
Activarlo: primero el archivo de políticas
Funnel no está activo por defecto en un nodo. Requiere un atributo de nodo funnel en el archivo de políticas de tu tailnet, que le indica a Tailscale qué usuarios pueden utilizarlo. Por defecto, ese permiso va a autogroup:member.
Esa indirección merece entenderse en vez de saltarse: significa que Funnel es una decisión administrativa a nivel de tailnet, no solo un comando que alguien ejecuta en su portátil. En un tailnet compartido, quien controla el archivo de políticas controla si alguien puede exponer servicios públicamente.
★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · puerto de 200 Mbit/s
Un VPS con su propia IP pública, sin túnel → ContaboIPv4 pública · Tú controlas el cortafuegos, los puertos y el proxy inverso · Sin tope de ancho de banda impuesto por terceros→Los comandos, uno al lado del otro
Los dos comandos aceptan el mismo destino: un puerto, una dirección localhost:puerto o la URL completa de un servicio que corre en la máquina. Estas son las formas que lista tailscale funnel --help en Tailscale 1.104.1 (18 de octubre de 2026). Nada cambia en 1.104.2, la versión estable del 21 de octubre de 2026: su registro de cambios solo lista la compilación con Go 1.27.3, que retira la confianza a los certificados intermedios TLS de eMudhra comprometidos (boletín de seguridad de Tailscale TS-2026-013), y dos correcciones del cliente de Windows. Actualiza el cliente, los comandos de abajo siguen siendo los mismos:
# Solo dentro de la tailnet: https://<maquina>.<nombre-tailnet>.ts.net
tailscale serve --bg 3000
# En internet público, misma URL, al alcance de cualquiera
tailscale funnel --bg 3000
# Público, en uno de los otros dos puertos permitidos
tailscale funnel --bg --https=8443 3000
# Ver qué está expuesto y después retirarlo todo
tailscale funnel status
tailscale funnel reset
Sin --bg, el recurso compartido corre en primer plano y se detiene al cerrar la terminal, el ajuste más prudente para una prueba rápida. Con --bg sobrevive a cierres de sesión y reinicios hasta que ejecutes reset, así que acostúmbrate a lanzar tailscale funnel status en cualquier máquina donde lo hayas usado. Antes de la primera ejecución hay que activar MagicDNS y los certificados HTTPS de la tailnet en la consola de administración, porque Funnel sirve un certificado real para el nombre ts.net.
Tailscale Funnel con tu propio dominio: el proxy inverso en un VPS
Funnel no responderá en app.ejemplo.com, y un CNAME hacia tu nombre ts.net no lo arregla: el certificado se emite para el nombre ts.net, así que el navegador rechaza el dominio personalizado. El montaje que te da un dominio propio, cualquier puerto, ningún límite de ancho de banda de Funnel y un inicio de sesión que controlas es un pequeño servidor público que se une a tu tailnet y reenvía el tráfico a la máquina de casa a través de ella.
- Alquila un VPS pequeño con IPv4 pública e instala Tailscale (
curl -fsSL https://tailscale.com/install.sh | shy despuéssudo tailscale up). Ya alcanza tu máquina de casa en su dirección tailnet100.x.y.z. - Apunta un registro A de
app.ejemplo.coma la IP pública del VPS y abre los puertos 80 y 443 en su cortafuegos, nada más. - Instala Caddy en el VPS con este Caddyfile (validado con
caddy validateen Caddy 2.11.7):
app.ejemplo.com {
basic_auth {
# genera el hash con: caddy hash-password
alice $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG
}
reverse_proxy 100.101.102.103:3000
}
Caddy obtiene por sí solo el certificado Let's Encrypt de tu dominio, y el bloque basic_auth pone delante del servicio la barrera que Funnel nunca tuvo. Sustituye 100.101.102.103 por la IP tailnet que muestra tailscale ip -4 en la máquina de casa y comprueba que el servicio escucha en esa interfaz, no solo en 127.0.0.1. La red de casa sigue sin abrir ningún puerto: el VPS es la única cara pública y el tráfico entre ambos viaja dentro de WireGuard.
El coste honesto: unos pocos euros al mes y una máquina más que mantener actualizada. Un VPS de 1 vCPU y 1 GB sobra para un proxy inverso; el límite pasa a ser la velocidad del puerto del VPS, no un tope fijado por otro. Si prefieres no mantener ningún servidor público, la alternativa es un producto de túnel pensado para dominios propios, comparado más abajo.
★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · puerto de 200 Mbit/s
La cara pública de tu propio dominio → VPS ContaboIPv4 pública · Tráfico ilimitado (uso razonable) · Se une a tu tailnet en dos comandos→Si prefieres un proveedor estadounidense con 30 días de devolución, el VPS Basic de Ultahost cuesta 5,52 $ al mes a 24 meses (1 GB de RAM, IPv4 dedicada, leído el 21 de octubre de 2026), suficiente para el proxy inverso Caddy descrito arriba.
Cuándo Funnel es la respuesta correcta y cuándo no
Funnel encaja cuando quieres dar a alguien ajeno a tu tailnet una URL HTTPS que funcione con el mínimo de ceremonia: un endpoint de webhook que un servicio externo debe alcanzar, una vista previa de lo que estás construyendo, un envío temporal. Los certificados y la entrada pública se gestionan por ti, y funciona en todos los planes.
Funnel no encaja cuando necesitas un dominio propio, un puerto fuera de los tres permitidos, caudal sostenido o una capa de autenticación que controles. Esos requisitos apuntan a otra parte: un proxy inverso en una máquina con IP pública propia, o un producto de túnel construido en torno a dominios personalizados.
Y para el caso en el que la gente suele pensar al recurrir a Funnel, quiero que mis propios dispositivos alcancen este servicio desde cualquier lugar, ni Funnel ni un túnel público son la respuesta. Eso ya lo hace el tailnet, y lo hace un nodo de salida o un servidor WireGuard autoalojado sin exponer nada públicamente.
Para tener los comandos a mano: nuestra Tailscale & Headscale Cheat Sheet gratuita (PDF de 4 páginas en inglés, descarga directa, sin registro) reúne status y ping, exit node, subnet router, Serve y Funnel, la configuración de Headscale, usuarios, claves y ACL, y las causas de fallo habituales. Descargar la ficha.
Lo esencial
serve y funnel están a una palabra de distancia en la terminal y son opuestos en lo que publican. Serve mantiene un servicio dentro del tailnet; Funnel lo pone en internet, en uno de tres puertos, bajo un nombre ts.net, con un tope de ancho de banda y sin nada que autentique a los visitantes.
Decide a qué público te diriges realmente antes de teclear cualquiera de los dos. Si la respuesta es «mis propias máquinas», nunca necesitaste una entrada pública, y la exposición más segura es la que jamás se abrió.
Enlace de afiliado
★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · puerto de 200 Mbit/s
Aloja tu VPN en tu propio VPS → ContaboCloud VPS 4 · 5,50 €/mes · Tarjeta o PayPal · pedidos desde fuera de la UE aceptados→Precio revisado el 17/10/2026, permanencia 24 meses


