
headscale v0.29.3
Una implementación de código abierto y autoalojada del servidor de control de Tailscale

Una implementación de código abierto y autoalojada del servidor de control de Tailscale.
Únete a nuestro servidor de Discord para conversar.
Nota: Selecciona siempre la misma etiqueta de GitHub que la versión publicada que utilizas
para asegurarte de tener la configuración de ejemplo correcta. La rama main podría
contener cambios no publicados. La documentación está disponible para las versiones estable y
de desarrollo:
Qué es Tailscale
Tailscale es una VPN moderna construida sobre Wireguard. Funciona como una red superpuesta entre los equipos de tus redes, utilizando atravesamiento de NAT.
Todo en Tailscale es de código abierto, excepto los clientes con interfaz gráfica para sistemas operativos propietarios (Windows y macOS/iOS), y el servidor de control.
El servidor de control funciona como un punto de intercambio de claves públicas de Wireguard para los nodos de la red de Tailscale. Asigna las direcciones IP de los clientes, crea los límites entre cada usuario, permite compartir máquinas entre usuarios y expone las rutas anunciadas de tus nodos.
Una red de Tailscale (tailnet) es una red privada que Tailscale asigna a un usuario en términos de usuarios privados o de una organización.
Objetivo de diseño
Headscale pretende implementar una alternativa autoalojada y de código abierto al servidor de control de Tailscale. El objetivo de Headscale es proporcionar a los autoalojadores y aficionados un servidor de código abierto que puedan usar para sus proyectos y laboratorios. Implementa un alcance reducido, una única red de Tailscale (tailnet), adecuada para uso personal o para una pequeña organización de código abierto.
Apoyar a Headscale
Si te gusta headscale y lo encuentras útil, hay botones de patrocinio y donación
disponibles en el repositorio.
Características
Consulta "Features" en la documentación.
Soporte de sistemas operativos cliente
Consulta "Client and operating system support" en la documentación.
Ejecutar headscale
Ten en cuenta que no damos soporte ni fomentamos el uso de proxies inversos y contenedores para ejecutar Headscale.
Echa un vistazo a la documentación.
Para usuarios de NixOS, hay un módulo disponible en nix/.
Compilaciones desde main
Las compilaciones de desarrollo desde la rama main están disponibles como imágenes de contenedor y
binarios. Consulta la documentación de compilaciones de desarrollo
para más detalles.
Charlas
- Fosdem 2026 (vídeo): Headscale & Tailscale: The complementary open source clone
- presentada por Kristoffer Dalby
- Fosdem 2023 (vídeo): Headscale: How we are using integration testing to reimplement Tailscale
- presentada por Juan Font Alonso y Kristoffer Dalby
Aviso legal
Este proyecto no está asociado con Tailscale Inc.
Sin embargo, uno de los mantenedores activos de Headscale está empleado por Tailscale y tiene permitido dedicar horas de trabajo a contribuir al proyecto. Las contribuciones de este mantenedor son revisadas por otros mantenedores.
Los mantenedores trabajan juntos para establecer la dirección del proyecto. El principio subyacente es servir a la comunidad de autoalojadores, entusiastas y aficionados, manteniendo al mismo tiempo un proyecto sostenible.
Contribuir
Por favor, lee el archivo CONTRIBUTING.md.
Echa también un vistazo a nuestro AI_POLICY.md.
Requisitos
Para contribuir a headscale necesitarías la versión más reciente de Go y Buf (generador de Protobuf).
Recomendamos usar Nix para configurar un entorno de desarrollo. Esto se puede
hacer con nix develop, que instalará las herramientas y te proporcionará un shell.
Esto garantiza que tendrás el mismo entorno de desarrollo que los mantenedores de headscale.
Estilo de código
Para garantizar cierta consistencia con un número creciente de contribuciones, este proyecto ha adoptado reglas de linting y estilo/formato:
El código Go se analiza con golangci-lint y
se formatea con los formateadores de golangci-lint
(gofumpt, gci, goimports).
Configura tu editor para ejecutar las herramientas mientras desarrollas y asegúrate de
ejecutar make lint y make fmt antes de hacer commit de cualquier código.
El código Proto se analiza con buf y
se formatea con clang-format.
La documentación se formatea con mdformat.
El resto (Markdown, YAML, etc.) se formatea con prettier.
Consulta los archivos .golangci.yaml y Makefile para ver la configuración específica.
Instalar herramientas de desarrollo
- Go
- Buf
- Herramientas de Protobuf
Instalar y activar:
nix develop
Pruebas y compilación
Algunas partes del proyecto requieren la generación de código Go a partir de Protobuf
(si se realizan cambios en proto/) y debe ser (re)generado con:
make generate
Nota: Confirma los cambios de gen/ en un commit separado para facilitar la revisión.
Para ejecutar las pruebas:
make test
Para compilar el programa:
make build
Flujo de trabajo de desarrollo
Recomendamos usar Nix para la gestión de dependencias para asegurar que tengas todas las herramientas necesarias. Si prefieres gestionar las dependencias por tu cuenta, puedes usar Make directamente:
Con Nix (recomendado):
nix develop
make test
make build
Con tus propias dependencias:
make test
make build
El Makefile te avisará si falta alguna herramienta requerida y sugerirá ejecutar nix develop. Ejecuta make help para ver todos los objetivos disponibles.
Colaboradores
Hecho con contrib.rocks.