- Headscale es un proyecto alternativo de código abierto creado para poder autoalojar la funcionalidad del servidor de control de Tailscale
- Tailscale es una solución VPN moderna basada en WireGuard que permite construir una red superpuesta que funciona incluso en entornos con NAT
- El servidor de control original de Tailscale es software cerrado, pero Headscale fue desarrollado como un software de servidor de libre instalación que puede reemplazarlo
- Los clientes de Windows, macOS e iOS todavía requieren la GUI de Tailscale
Propósito y características de Headscale
- Headscale solo admite una tailnet (red privada virtual) para que pueda ser usada por personas y pequeñas organizaciones de código abierto
- Es una solución adecuada para usuarios que quieren operar su propio servidor y entusiastas del software libre
- Su alcance de diseño es intencionalmente acotado, lo que facilita el mantenimiento y la administración
Funciones principales
- Intercambio de claves públicas de WireGuard entre nodos cliente
- Asignación de direcciones IP y configuración de límites para cada nodo
- Función para compartir máquinas entre usuarios
- Gestión de anuncios de rutas de los nodos
- La lista oficial de funciones puede consultarse aquí
Sistemas operativos cliente compatibles
- La lista de sistemas operativos y clientes compatibles con Headscale puede consultarse en la documentación oficial
Guía sobre instalación y ejecución
- El uso de reverse proxy o la ejecución basada en contenedores no se recomienda oficialmente
- Para el método de ejecución y la configuración, consulta la documentación oficial
Comunidad y contribuciones
Entorno de desarrollo y estilo de código
- Herramientas principales necesarias para el desarrollo:
- La versión más reciente de Go
- Buf (generador de Protobuf)
- Es posible configurar el entorno de desarrollo con Nix (comando
nix develop)
- Estilo de código:
- Código Go: uso de
golangci-lint, golines, gofumpt
- Código Proto: uso de
buf, clang-format
- Otros archivos: formato con
prettier
- Antes de hacer commit, es obligatorio ordenar el código con
make lint y make fmt
Compilación y pruebas
- Si se cambia el código Protobuf, es necesario regenerar el código Go:
make generate
- Ejecutar pruebas:
make test
- Compilación:
nix build
- o usar el comando
make build
Información adicional
- En FOSDEM 2023 se presentó una charla sobre Headscale: ver video
- El proyecto no tiene una relación directa con Tailscale Inc., pero participan colaboradores vinculados a Tailscale y las revisiones de código y la dirección del proyecto se definen de forma independiente
1 comentarios
Opiniones en Hacker News
Cada pocos meses vuelvo a visitar este repositorio para ver si
Tailnet lockfunciona o si se ha realizado una auditoría de seguridad. Por desgracia, no ha habido avances en ninguno de los dos frentes, así que no me queda claro si puedo confiar en este sistema como parte central de mi infraestructuraSi te interesa alojar por tu cuenta el servidor de orquestación, podrías echarle un vistazo a Netbird. Esta herramienta es muy similar, pero el servidor se ofrece como código abierto. Así que puedes tener un servidor de control autohospedado con todas las funciones de la versión de pago y una buena GUI
Estaría bien que Headscale permitiera peering/federación entre instancias (aunque sea después del retrabajo de ACL). Uno de los principales problemas es la colisión de direcciones
Deberían agregar el nombre del proyecto, Headscale, en el título
Me pregunto si corre en Plan 9
Me encanta Headscale. Lo pusimos en producción y nos ha funcionado muy bien
Me pregunto qué tanto riesgo hay de que mis dispositivos se vean comprometidos si el servidor de coordinación de Tailscale es comprometido y
tailnet lockestá activadoEn muchos casos de uso (acceso móvil, GUI en macOS), el cliente oficial de Tailscale depende de la capacidad de configurar el servidor de control
Me pregunto qué valor adicional aporta esta configuración frente a una configuración con wireguard + openwrt
La afirmación "Parece audaz no auditar en absoluto el código del servidor y, al mismo tiempo, no ofrecer a los usuarios una forma de entender o rechazar lo que el servidor de control le indica al cliente sobre la implementación de Tailscale" sugiere que simplemente publicar el código fuente del servidor de control de Headscale no basta para que los usuarios puedan "entender o rechazar lo que el servidor de control le indica al cliente"