Tailscale Funnel o Serve (2026): comandos, 3 puertos, dominio propio

Serve comparte dentro de tu tailnet, Funnel publica en todo internet. Los comandos exactos (Tailscale 1.104), el límite de puertos 443/8443/10000, la falta de login y cómo lograr lo mismo que Funnel en tu propio dominio con un VPS pequeño y Caddy.

Por Eric GerardFundador · VPNSmith - Especialista en VPN self-host y VPS GDPR

Actualizado 10 min de lectura10 min

Enlaces de afiliado: podemos cobrar una comisión, sin coste extra. Método

Comparar los costesLeer la guía

fig. 01 / self-host-vpn-headCONTROLcoordination onlyNODE A100.64.0.1NODE B100.64.0.2NODE C100.64.0.3WireGuard p2pkeys, ACL
fig. 01 / self-host-vpn-head

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 servetailscale funnelVPS + Caddy (tu dominio)
Quién puede accederSolo los dispositivos de tu tailnetCualquiera que tenga la URLCualquiera, detrás de tu inicio de sesión
Direcciónmachine.nombre-del-tailnet.ts.netLa misma URL ts.net, ahora públicaUn dominio tuyo
Puertos públicosNinguno, nada es públicoSolo 443, 8443 o 10000Los que tú abras
Inicio de sesión delantePertenecer al tailnetNingunoEl tuyo (basic_auth de Caddy)
Ancho de bandaSin el límite de FunnelLimitado por Tailscale, no configurableLa velocidad del puerto del VPS
Coste adicionalNingunoNinguno, en todos los planesUnos 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.

¿Quién debe llegar al servicio?

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.

Primer plano de las manos de un desarrollador sobre un teclado frente a una pantalla llena de código
Primer plano de las manos de un desarrollador sobre un teclado frente a una pantalla llena de código

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.

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.

  1. Alquila un VPS pequeño con IPv4 pública e instala Tailscale (curl -fsSL https://tailscale.com/install.sh | sh y después sudo tailscale up). Ya alcanza tu máquina de casa en su dirección tailnet 100.x.y.z.
  2. Apunta un registro A de app.ejemplo.com a la IP pública del VPS y abre los puertos 80 y 443 en su cortafuegos, nada más.
  3. Instala Caddy en el VPS con este Caddyfile (validado con caddy validate en 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.

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

Precio revisado el 17/10/2026, permanencia 24 meses

Preguntas frecuentes

¿Cuál es la diferencia entre Tailscale Funnel y Tailscale Serve?
Serve comparte un servicio local solo con los demás dispositivos de tu tailnet. Funnel encamina el tráfico desde internet en sentido amplio hacia ese servicio, así que cualquiera puede alcanzarlo, incluidas personas sin cuenta de Tailscale. La documentación es explícita: si quieres compartir solo con tus propios dispositivos, usa Serve. Los comandos se parecen muchísimo, y por eso ocurre el error.
¿Qué puertos puede usar Tailscale Funnel?
Solo tres: 443, 8443 y 10000. Es un límite duro, no un valor por defecto que puedas sobrescribir. Si tu servicio debe ser accesible públicamente en otro puerto, Funnel no es la herramienta adecuada y necesitas un proxy inverso u otro túnel.
¿Funnel pone autenticación delante de mi servicio?
No. La documentación de Tailscale no describe ninguna capa de autenticación integrada delante de un punto de entrada Funnel: precisamente su finalidad es servir a personas que no están en tu tailnet. La autenticación de tu propia aplicación es lo único que separa internet de tus datos. Si la aplicación no tiene inicio de sesión, está abierta.
¿Hace falta un plan de pago para usar Funnel?
No. Tailscale indica que Funnel está disponible en todos los planes. Lo que sí hace falta es el atributo de nodo «funnel» en el archivo de políticas de tu tailnet, que determina qué usuarios pueden activarlo; por defecto, autogroup:member.
¿Qué nombre de host usa un punto de entrada Funnel?
Uno del propio dominio de tu tailnet, con la forma tailnet-name.ts.net. Funnel no puede servir directamente un dominio tuyo, lo cual importa si pensabas alojar ahí un producto.
¿Es Funnel lo bastante rápido para transmitir contenido multimedia?
El tráfico que pasa por Funnel está sujeto a límites de ancho de banda que Tailscale describe como no configurables. Está pensado para compartir un servicio, no para una difusión sostenida. Para una mediateca compartida con gente ajena a tu tailnet, es probable que el límite sea la restricción antes que tu subida.