Uma VPN mesh é daquelas ferramentas que facilitam tudo sem chamar atenção: notebook, servidor de casa, celular e VPSs se enxergam em endereços privados, onde quer que estejam. O problema das VPNs mesh hospedadas é o servidor de coordenação: uma empresa guarda o mapa de todos os dispositivos que você tem. O Headscale é um substituto open source desse servidor de controle. Rode-o num VPS pequeno, continue usando os apps cliente normais, e o mapa é seu.
Como as peças se encaixam
- Headscale (no seu VPS) distribui endereços e chaves públicas e aplica as suas ACLs.
- Clientes são os apps padrão do Tailscale, apontados para o seu servidor.
- O tráfego vai de dispositivo a dispositivo via WireGuard. O servidor de controle nunca o transporta.
Esse último ponto é o motivo de um plano minúsculo bastar: o VPS só responde a pequenas requisições de coordenação.
Do que você precisa
- Nano-IP ($8/mês): 2 vCPU e 1 GB de RAM é muito mais do que o Headscale usa.
- Um IPv4 dedicado e um domínio, por exemplo
hs.example.com. Os dispositivos falam com o servidor de controle via HTTPS, então o VPS precisa aceitar a 443 de entrada; planos NAT não aceitam (detalhes).
Instalação (Debian 12 / Ubuntu 24.04)
Baixe o .deb atual da página de releases do Headscale no GitHub, trocando a versão pela mais recente:
HS_VER=0.26.1
wget -O headscale.deb \
"https://github.com/juanfont/headscale/releases/download/v${HS_VER}/headscale_${HS_VER}_linux_amd64.deb"
apt install -y ./headscale.deb caddy
Edite /etc/headscale/config.yaml; as duas linhas que importam:
server_url: https://hs.example.com
listen_addr: 127.0.0.1:8080
Coloque o Caddy na frente para o HTTPS:
cat > /etc/caddy/Caddyfile <<'EOF'
hs.example.com {
reverse_proxy 127.0.0.1:8080
}
EOF
systemctl enable --now headscale
systemctl reload caddy
Adicione um usuário e um dispositivo
headscale users create alice
headscale users list # note the user's ID
headscale preauthkeys create --user 1 --expiration 24h
Versões mais antigas pedem o nome do usuário em vez do ID em --user; headscale preauthkeys create --help mostra o que a sua espera.
Num dispositivo Linux:
tailscale up --login-server https://hs.example.com --authkey YOUR_KEY
Em celulares e desktops, o app do Tailscale permite definir um servidor de controle personalizado nas configurações. Rode headscale nodes list no VPS e o seu dispositivo deve aparecer.
Relays e travessia de NAT
A maioria dos dispositivos se conecta diretamente. Quando dois não conseguem (redes móveis restritivas, NAT duplo), o tráfego passa por um relay DERP. De fábrica, o Headscale usa os relays públicos do Tailscale, que só enxergam pacotes criptografados. Se você não quer nada externo no caminho, ative o relay embutido no config.yaml (derp.server.enabled: true) e abra a UDP 3478. O tráfego retransmitido passa então a contar na banda do seu VPS.
Limites honestos
Não há painel web oficial: usuários, chaves e rotas são comandos de CLI (tranquilo depois da segunda vez). Recursos mais novos do serviço hospedado chegam ao Headscale mais tarde, se chegarem. E o servidor de controle agora é responsabilidade sua: se ele cair, as conexões existentes continuam funcionando, mas novos dispositivos não entram e as chaves não se renovam. Faça backup: todo o estado fica em /var/lib/headscale.
Para um home lab, uma família ou uma equipe pequena que quer tirar o mapa de dispositivos de servidores de terceiros, é um dos melhores usos de um VPS de $8.
Relacionados
- Hospedar a sua própria VPN WireGuard: WireGuard puro, se você só precisa de um túnel
- VPS para VPN
- VPS para acesso remoto ao Home Assistant
Comentários
Nenhum comentário ainda. Seja o primeiro.