
Uma implementação de código aberto e auto-hospedada do servidor de controle Tailscale

Uma implementação open source e auto-hospedada do servidor de controle do Tailscale.
Junte-se ao nosso servidor Discord para conversar.
Nota: Sempre selecione a mesma tag do GitHub que a versão lançada que você usa
para garantir que você tenha a configuração de exemplo correta. O branch main pode
conter alterações não lançadas. A documentação está disponível para as versões estável e
de desenvolvimento:
O Tailscale é uma VPN moderna construída sobre o Wireguard. Ele funciona como uma rede overlay entre os computadores das suas redes - usando transversalidade de NAT.
Tudo no Tailscale é Open Source, exceto os clientes com GUI para sistemas operacionais proprietários (Windows e macOS/iOS), e o servidor de controle.
O servidor de controle funciona como um ponto de troca de chaves públicas Wireguard para os nós na rede Tailscale. Ele atribui os endereços IP dos clientes, cria as fronteiras entre cada usuário, permite o compartilhamento de máquinas entre usuários, e expõe as rotas anunciadas dos seus nós.
Uma rede Tailscale (tailnet) é uma rede privada que o Tailscale atribui a um usuário em termos de usuários privados ou de uma organização.
O Headscale visa implementar uma alternativa auto-hospedada e open source ao servidor de controle do Tailscale. O objetivo do Headscale é proporcionar a auto-hospedadores e entusiastas um servidor open source que eles possam usar para seus projetos e laboratórios. Ele implementa um escopo restrito, uma única rede Tailscale (tailnet), adequada para uso pessoal, ou uma pequena organização open source.
Se você gosta do headscale e o considera útil, há botões de patrocínio e doação
disponíveis no repositório.
Por favor, consulte "Features" na documentação.
Por favor, consulte "Client and operating system support" na documentação.
Observe que não oferecemos suporte nem incentivamos o uso de proxies reversos e contêineres para executar o Headscale.
Por favor, dê uma olhada na documentação.
Para usuários de NixOS, um módulo está disponível em nix/.
mainBuilds de desenvolvimento a partir do branch main estão disponíveis como imagens de contêiner e
binários. Consulte a documentação de builds de desenvolvimento
para detalhes.
Este projeto não é associado à Tailscale Inc.
No entanto, um dos mantenedores ativos do Headscale é empregado pela Tailscale e tem permissão para dedicar horas de trabalho contribuindo para o projeto. As contribuições deste mantenedor são revisadas por outros mantenedores.
Os mantenedores trabalham juntos para definir a direção do projeto. O princípio subjacente é servir a comunidade de auto-hospedadores, entusiastas e hobistas - mantendo um projeto sustentável.
Por favor, leia o arquivo CONTRIBUTING.md.
Dê também uma olhada no nosso AI_POLICY.md.
Para contribuir com o headscale, você precisaria da versão mais recente do Go e do Buf (gerador de Protobuf).
Recomendamos usar o Nix para configurar um ambiente de desenvolvimento. Isso pode
ser feito com nix develop, que instalará as ferramentas e fornecerá um shell.
Isso garante que você terá o mesmo ambiente de desenvolvimento que os mantenedores do headscale.
Para garantir alguma consistência com o número crescente de contribuições, este projeto adotou regras de linting e estilo/formatação:
O código Go é verificado com golangci-lint e
formatado com os formatadores do golangci-lint
(gofumpt, gci, goimports).
Configure seu editor para executar as ferramentas durante o desenvolvimento e certifique-se de
executar make lint e make fmt antes de commitar qualquer código.
O código Proto é verificado com buf e
formatado com clang-format.
A documentação é formatada com mdformat.
O resto (Markdown, YAML, etc) é formatado com prettier.
Confira o .golangci.yaml e o Makefile para ver a configuração específica.
Instale e ative:
nix develop
Algumas partes do projeto exigem a geração de código Go a partir de Protobuf
(caso sejam feitas alterações em proto/) e ele deve ser (re)gerado com:
make generate
Nota: Verifique as alterações de gen/ em um commit separado para facilitar a revisão.
Para executar os testes:
make test
Para compilar o programa:
make build
Recomendamos usar Nix para o gerenciamento de dependências, a fim de garantir que você tenha todas as ferramentas necessárias. Se preferir gerenciar as dependências por conta própria, você pode usar o Make diretamente:
Com Nix (recomendado):
nix develop
make test
make build
Com suas próprias dependências:
make test
make build
O Makefile avisará você se alguma ferramenta necessária estiver faltando e sugerirá executar nix develop. Execute make help para ver todos os alvos disponíveis.
Feito com contrib.rocks.