Headscale es una reimplementacion libre del plano de control de Tailscale que lleva activa desde 2020 y que en febrero de 2025, con la version 0.25, alcanza un nivel de madurez donde ya puedo recomendarla sin matices para cargas que no exijan todo el ecosistema comercial. Este post es una guia practica desde el punto de vista de quien administra una malla de entre cinco y cien nodos y se plantea si merece la pena salir de la plataforma comercial.
El contexto: llevamos malla WireGuard entre tres servidores gestionados con configuracion manual desde hace mas de un ano. La pregunta que nos haciamos era si Headscale merece sustituir a la gestion manual para una malla que crezca, sin aterrizar en la suscripcion de Tailscale.
Que es Headscale y que no
Tailscale tiene dos partes claramente separables. Por un lado los clientes (tailscale, tailscaled), que son libres y se instalan en cada nodo. Por otro lado el plano de control, que es el servidor comercial de Tailscale: gestiona identidades, claves, ACLs, descubrimiento y coordinacion entre nodos. El plano de datos (los tuneles WireGuard reales) es directo entre nodos y no pasa por la nube de Tailscale.
Headscale, iniciado por Juan Font, es una reimplementacion libre del plano de control. Los clientes oficiales de Tailscale se conectan a un servidor Headscale en lugar de al servidor comercial sin cambios en el cliente. La magia esta en que el protocolo de control es estable y bien documentado, lo que permite que Headscale hable con los mismos clientes que Tailscale.
Lo que Headscale no da es el ecosistema comercial: no hay panel SaaS incluido, no hay integracion directa con SSO empresarial como Okta o Entra listo para usar, ni servicios adicionales como Funnel o MagicDNS completamente equiparables. Para muchos casos eso es irrelevante.
La madurez en 2025: que ha cambiado
Cuando probe Headscale por primera vez en 2022, habia bugs de coordinacion que aparecian bajo cargas raras y el panel de administracion era un script de linea de comandos. Tres anos despues el proyecto ha crecido sustancialmente.
La version 0.24 de enero trajo soporte mas completo para ACL con el formato de politicas de Tailscale, lo que permite migrar reglas existentes sin reescribirlas. 0.25, publicada el 11 de febrero, estabiliza la implementacion y corrige problemas con rutas anunciadas y con la resolucion DNS en mallas grandes. A finales de febrero salio 0.25.1 con correcciones puntuales y es la que uso en la instalacion que describo aqui.
Hay tambien varios paneles de administracion de terceros que cubren el hueco del SaaS. Headscale-ui y Headscale Admin son los dos mas activos y ofrecen gestion de usuarios, claves previas y ACLs desde el navegador. No son tan pulidos como el panel comercial pero cubren el 80 por ciento de lo que un administrador necesita.
Arquitectura practica
Desplegar Headscale en produccion no es complicado para un equipo acostumbrado a operar servicios auto alojados. El componente principal es un binario Go que necesita una base de datos (SQLite o PostgreSQL) y, recomendado, un proxy inverso con TLS delante (Traefik o Caddy). La configuracion vive en un archivo YAML con los parametros habituales: URL publica, DERP map (relays opcionales), directivas DNS y politicas de ACL.
La arquitectura interna tiene tres piezas conceptuales. Primero, el mapa de dispositivos y usuarios. Cada dispositivo pertenece a un usuario y tiene claves publicas WireGuard que el servidor firma en una secuencia de validaciones. Segundo, las ACLs, que describen que dispositivos pueden hablar con cuales y en que puertos. Tercero, la coordinacion, que es la parte que mantiene informados a los clientes de los cambios en la topologia.
Los clientes se conectan al servidor por HTTPS y mantienen una conexion abierta de larga duracion. El trafico real entre nodos es WireGuard directo siempre que es posible, con relay DERP solo cuando NAT estricto lo impide. En nuestra malla todos los nodos tienen IP publica, asi que no usamos DERP y los tuneles son siempre directos.
Las ACLs de Tailscale en Headscale
El lenguaje de politicas de Tailscale, basado en HuJSON, describe usuarios, grupos, etiquetas de dispositivos y reglas permitido entre ellos. Headscale 0.24 y superior admite la sintaxis mas reciente casi por completo, con algunas excepciones menores que el equipo del proyecto documenta.
En la practica una ACL tipica define grupos (admin, dev, operations), etiqueta los dispositivos (tag:server, tag:laptop) y establece reglas como “los miembros del grupo admin pueden llegar a tag:server en puertos 22 y 443” o “todos pueden llegar a tag:shared-tools en puerto 80”. Es un modelo de identidad sobre red que reemplaza con ventaja a las tipicas reglas por IP.
La parte que mas atencion pide son las claves previas (preauthkeys), tokens emitidos por el servidor que permiten a un dispositivo registrarse automaticamente. Emitir claves con caducidad corta y ambito restringido es buena higiene.
Donde sigue siendo menos comodo que Tailscale
No quiero vender Headscale como equivalente total. Hay varias areas donde la plataforma comercial sigue siendo mejor en 2025.
La primera es la integracion SSO. Tailscale permite conectar Okta, Google Workspace, Entra o GitHub con un asistente y en Headscale hay que configurar OpenID Connect a mano, lo que funciona pero no es tan pulido. Para empresas con SSO ya activo es trabajo extra de integracion.
La segunda es Funnel, el servicio que permite exponer servicios internos a Internet con TLS automatizado y sin abrir puertos. Headscale no tiene equivalente y lo mas parecido (exponer con Traefik o Caddy frente a un servicio accesible por la malla) requiere configuracion adicional.
La tercera es el ecosistema comercial de analitica, observabilidad y auditoria que Tailscale ofrece como parte de la suscripcion. Headscale expone metricas Prometheus y logs estructurados que permiten construir lo equivalente, pero hay que hacerlo uno mismo.
La cuarta es la soporte. Si tienes un incidente con Tailscale puedes abrir un ticket comercial. Con Headscale tienes los issues del repositorio, que son muy activos, y una comunidad razonable, pero no hay acuerdo de nivel de servicio.
Mi lectura
Para un equipo tecnico que ya auto aloja cosas y tiene confianza con PostgreSQL, un proxy inverso y TLS automatizado, Headscale en 2025 es una alternativa seria y sin asterisco grande. Es especialmente util cuando los requisitos de cumplimiento pasan por tener control total del plano de control (sector publico, sanitario, defensa) y la plataforma comercial queda fuera por politica. Tambien en hogares y laboratorios donde el coste de la suscripcion no esta justificado.
Donde yo seguiria en Tailscale comercial es en empresas donde el tiempo del equipo cuesta mas que la suscripcion, donde el SSO y las integraciones son parte del dia a dia y donde Funnel o los servicios adicionales aportan valor concreto. Tambien en equipos pequenos sin capacidad operativa para otro servicio mas que mantener.
En mi caso la decision es hibrida. Para la infraestructura interna critica, con tres nodos estables, Headscale 0.25 ya hace mejor trabajo que la configuracion manual de WireGuard que teniamos y sin depender de un proveedor externo. Para equipos personales con requisitos menos claros, sigo con Tailscale comercial por pura comodidad. La decision no es ideologica, es operacional.