Redes · VPN · Cloudflare Tunnel · Tailscale · WireGuard · 2026

Duarte Spínola · 7 de Julho de 2026

VPN Serverless Self-hosted: Configurar VPN sem Servidor Dedicado para PME

VPN · Serverless · Cloudflare Tunnel · Tailscale · WireGuard · Nebula · ZeroTier · Headscale  |  ✎ Duarte Spínola  |  2026-07-07

A VPN tradicional exige um servidor dedicado com IP público, configuração de portas e manutenção contínua. Em 2026, surgiram alternativas serverless que eliminam esta necessidade — o túnel é estabelecido através de relay points geridos, sem servidor próprio. Este guia cobre Cloudflare Tunnel, Tailscale, Headscale, Nebula e ZeroTier, com base na documentação oficial Cloudflare, Tailscale KB e WireGuard. Para soluções VPN tradicionais, consulta o artigo sobre Azure VPN Gateway Site-to-Site.

💡 Dica

Para uma PME com 50 colaboradores, Tailscale ou Cloudflare Tunnel são as opções mais simples — não requerem IP público, não expõem portas à Internet e funcionam através de NAT/CGNAT. Para quem prefere 100% self-hosted, Headscale (Tailscale auto-hospedado) ou Nebula são as alternativas.

Conteúdos

1. O Que é VPN Serverless e Porque Usar

VPN serverless é um modelo onde não precisas de um servidor dedicado com IP público para estabelecer túneis. Em vez disso, os clientes ligam-se a relay points geridos (Cloudflare, Tailscale der servers) que facilitam a ligação peer-to-peer. As vantagens são significativas para PME:

VPN Tradicional VPN Serverless
Requer IP público Funciona através de NAT/CGNAT
Portas abertas na firewall Sem portas expostas (saída apenas)
Configuração manual de certificados Certificados geridos automaticamente
Largura de banda limitada pelo servidor P2P directo (quando possível) — sem bottleneck
Difícil de escalar Escalável para milhares de nodes

2. Comparação das Soluções Disponíveis

Cada solução tem vantagens diferentes. A escolha depende de se preferes gerido (SaaS) ou self-hosted, e do tipo de acesso que precisas (LAN remota vs. expor serviços web). Para uma análise detalhada do Tailscale com DNS ad-blocking, consulta o artigo Tailscale DNS: Bloquear Anúncios na Rede Privada.

Solução Tipo Self-hosted? Plano Gratuito Melhor para
Cloudflare Tunnel Reverse proxy tunnel Não (Cloudflare managed) Sim (ilimitado) Expor serviços web sem IP público
Tailscale Mesh VPN (WireGuard) Não (Headscale é self-hosted) 100 devices Acesso LAN remota simples
Headscale Mesh VPN (Tailscale server) Sim Sim (self-hosted) Tailscale sem dependência SaaS
Nebula Mesh VPN (certificados) Sim Sim (open-source) Grandes redes, controlo fino
ZeroTier SDN overlay (L2) Parcial 25 devices Acesso L2 (VLAN virtual)

3. Cloudflare Tunnel: Expor Serviços Sem IP Público

O Cloudflare Tunnel (anteriormente Argo Tunnel) é a forma mais simples de expor serviços internos à Internet sem abrir portas. Um daemon cloudflared liga-se à rede Cloudflare e encaminha tráfego para serviços locais. O tráfego é protegido por Cloudflare Zero Trust com autenticação, políticas de acesso e WAF.

# Instalar cloudflared no Ubuntu/Debian
curl -L --output cloudflared.deb \
  https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb

# Autenticar com a conta Cloudflare
cloudflared tunnel login

# Criar túnel
cloudflared tunnel create pme-tunnel

# Configurar para expor serviço interno
cloudflared tunnel route dns pme-tunnel app.empresa.pt

# Correr túnel
cloudflared tunnel run --url http://localhost:8080 pme-tunnel
ℹ️ Informação

O Cloudflare Tunnel funciona através de CGNAT — não precisas de IP público. Isto é ideal para PME portuguesas com Digi ou MEO que não oferecem IP público nos planos básicos. Para mais detalhes sobre CGNAT, consulta o artigo sobre CGNAT: Como Verificar e Contornar.

4. Tailscale: Mesh VPN com WireGuard

O Tailscale é uma mesh VPN baseada em WireGuard que cria ligações P2P encriptadas entre todos os dispositivos da rede. O plano gratuito permite 100 devices e 3 utilizadores — suficiente para a maioria das PME. O Tailscale usa DERP servers (relay) quando P2P não é possível (NAT restritivo).

# Instalar Tailscale no Linux
curl -fsSL https://tailscale.com/install.sh | sh

# Arrancar e autenticar
sudo tailscale up

# Verificar estado
tailscale status

# Verificar IP Tailscale
tailscale ip -4

# Ligar a subnet local (exit node)
sudo tailscale up --advertise-exit-node --advertise-routes=192.168.1.0/24

# Aprovar routes no admin console:
# https://login.tailscale.com/admin/machines

5. Headscale: Tailscale Self-hosted

O Headscale é uma implementação open-source do coordination server do Tailscale. Permite ter toda a funcionalidade do Tailscale sem depender de servidores SaaS — ideal para PME com requisitos de soberania de dados ou que preferem auto-hospedar.

# Instalar Headscale com Docker
docker run -d --name headscale \
  -v /etc/headscale:/etc/headscale \
  -p 8080:8080 \
  headscale/headscale:latest \
  headscale serve

# Criar utilizador
docker exec headscale headscale users create duarte

# Gerar preauth key
docker exec headscale headscale preauthkeys create \
  --user duarte --reusable --expiration 24h

# Cliente Tailscale a usar Headscale
tailscale up --login-server https://headscale.empresa.pt
⚠️ Atenção

O Headscale requer um servidor com IP público e TLS (Let’s Encrypt ou Cloudflare Tunnel). Se não tens IP público, podes usar o Cloudflare Tunnel para expor o Headscale — mas então estás a depender da Cloudflare. Avalia se vale a pena vs. Tailscale gerido.

6. Nebula: Mesh VPN da Slack/Nook

O Nebula é uma mesh VPN criada pela Slack, baseada em certificados (Não WireGuard). Suporta lighthouses (relay nodes), handshakes rápidos e roaming entre redes. É mais complexo de configurar que Tailscale, mas oferece controlo total.

# Instalar Nebula
wget https://github.com/slackhq/nebula/releases/latest/download/nebula-linux-amd64.tar.gz
tar xzf nebula-linux-amd64.tar.gz
sudo mv nebula nebula-cert /usr/local/bin/

# Gerar CA
nebula-cert ca -name "Empresa PME CA"

# Gerar certificado para lighthouse
nebula-cert sign -name "lighthouse" -ip "10.0.0.1/24" \
  -groups "lighthouse,servers"

# Gerar certificado para cliente
nebula-cert sign -name "ws-duarte" -ip "10.0.0.50/24" \
  -groups "clients"

# Correr lighthouse
nebula -config /etc/nebula/lighthouse.yaml

7. ZeroTier: SDN Overlay

O ZeroTier é uma SDN (Software Defined Network) que cria redes virtuais L2 sobre a Internet. Diferente das VPN tradicionais (L3), o ZeroTier permite que dispositivos em redes diferentes pareçam estar na mesma switch — útil para VLANs virtuais e protocolos que dependem de broadcast/multicast.

# Instalar ZeroTier
curl -s https://install.zerotier.com | sudo bash

# Juntar-se a uma rede
sudo zerotier-cli join 

# Autorizar no portal: https://my.zerotier.com/
# Verificar estado
sudo zerotier-cli info
sudo zerotier-cli listnetworks

O ZeroTier tem a vantagem de operar em L2 — permite que dispositivos em redes diferentes partilhem o mesmo segmento de rede virtual, útil para protocolos como mDNS, Bonjour, ou aplicações legacy que dependem de broadcast. Para monitorização destas redes, consulta o artigo sobre Zabbix para PME.

# Verificar topologia ZeroTier
sudo zerotier-cli listpeers -j | python3 -c "
import json,sys
data=json.load(sys.stdin)
for p in data.get('peers',[]):
    print(f\"  {p['address']} | latency={p.get('latency',-1)}ms | version={p.get('version','?')}\")"

# Configurar managed routes via API
curl -X POST https://my.zerotier.com/api/network/{network_id} \
  -H "Authorization: Bearer {token}" \
  -d '{"config":{"routes":[{"target":"192.168.1.0/24","via":"10.0.0.1"}]}}'

8. WireGuard com Relays Dinâmicos

Para quem prefere WireGuard puro sem SaaS, é possível configurar relays dinâmicos usando WireGuard com DDNS ou um endpoint intermédio. Isto é mais trabalho mas dá controlo total. Para automação, consultar o artigo sobre Ansible para PME.

# /etc/wireguard/wg0.conf — servidor relay
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = 

# Cliente 1 (Duarte)
[Peer]
PublicKey = 
AllowedIPs = 10.0.0.2/32

# Cliente 2 (Maria)
[Peer]
PublicKey = 
AllowedIPs = 10.0.0.3/32

# Activar
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0

9. Instalar Tailscale (Linux + Windows)

Instalação passo a passo do Tailscale em Linux (Ubuntu Server) e Windows 11.

# === LINUX (Ubuntu 24.04) ===
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --ssh --advertise-routes=192.168.1.0/24
tailscale status

# === WINDOWS (PowerShell) ===
# winget install Tailscale.Tailscale
# Ou descarregar de https://tailscale.com/download/windows

# Após instalação, clicar no ícone Tailscale > Log in
# Autorizar em https://login.tailscale.com/

# Verificar conectividade
tailscale ping 100.x.x.x  # IP Tailscale de outro node

10. Instalar Cloudflare Tunnel

# Instalar como serviço systemd
sudo cloudflared service install

# Configurar config.yaml
sudo tee /etc/cloudflared/config.yml << 'EOF'
tunnel: pme-tunnel
credentials-file: /root/.cloudflared/.json

ingress:
  - hostname: app.empresa.pt
    service: http://localhost:8080
  - hostname: rdp.empresa.pt
    service: rdp://localhost:3389
  - hostname: ssh.empresa.pt
    service: ssh://localhost:22
  - service: http_status:404
EOF

# Reiniciar serviço
sudo systemctl restart cloudflared
sudo systemctl enable cloudflared

11. Instalar Headscale (Self-hosted)

# /etc/headscale/config.yaml
server_url: https://headscale.empresa.pt
listen_addr: 0.0.0.0:8080
ip_prefixes:
  - 100.64.0.0/10
base_domain: ts.empresa.pt

# Docker Compose
version: '3'
services:
  headscale:
    image: headscale/headscale:latest
    command: headscale serve
    ports:
      - "8080:8080"
    volumes:
      - ./config:/etc/headscale
      - ./data:/var/lib/headscale
    restart: unless-stopped

12. Segurança e ACLs

As ACLs (Access Control Lists) são essenciais para limitar o acesso entre nodes. No Tailscale, as ACLs são configuradas em JSON no admin console. Para uma abordagem Zero Trust, consulta o artigo Zero Trust para PME.

// ACL Tailscale — apenas TI acede a servidores
{
  "groups": {
    "group:ti": ["[email protected]", "[email protected]"],
    "group:users": ["*"]
  },
  "acls": [
    // TI: acesso total
    {"action": "accept", "src": ["group:ti"], "dst": ["*:*"]},
    // Users: apenas Internet (exit node) e DNS
    {"action": "accept", "src": ["group:users"], "dst": ["tag:exit-node:*"]},
    // Negar acesso a servidores
    {"action": "deny", "src": ["group:users"], "dst": ["tag:servers:*"]}
  ],
  "tagOwners": {
    "tag:servers": ["group:ti"],
    "tag:exit-node": ["group:ti"]
  }
}

13. Cenário Prático PME (híbrido)

Cenário real: PME com 50 colaboradores, escritório em Lisboa (Digi CGNAT, sem IP público) e 2 colaboradores remotos (Porto e Coimbra). Requisitos: acesso a file server interno, RDP a estação de trabalho, e exposição de app web interna.

# Arquitetura:
#   SRV-FS01 (file server, 192.168.1.10) — Tailscale + Cloudflare Tunnel
#   WS-DESIGN01 (estação gráfica, 192.168.1.50) — Tailscale
#   app.empresa.pt (app web interna) — Cloudflare Tunnel + Zero Trust

# 1. Tailscale no file server
sudo tailscale up --advertise-routes=192.168.1.0/24
# Aprovar no admin console

# 2. Cloudflare Tunnel para app web
cloudflared tunnel route dns pme-tunnel app.empresa.pt
cloudflared tunnel run --url http://192.168.1.20:8080 pme-tunnel

# 3. Colaborador remoto (Porto) liga via Tailscale
tailscale up
# Acede: \\192.168.1.10\share, RDP 192.168.1.50:3389

# 4. App web protegida com Cloudflare Zero Trust
# Dashboard > Access > Applications > Add Application
# - Domain: app.empresa.pt
# - Policy: email ends with @empresa.pt
# - Session duration: 12h

14. Checklist de Implementação

Etapa Ferramenta Estado
Avaliar necessidade (LAN vs web)
Criar conta Tailscale/Cloudflare login.tailscale.com
Instalar cliente nos servidores tailscale / cloudflared
Instalar cliente nos colaboradores Tailscale app (Win/Mac/Mobile)
Configurar ACLs Admin console
Testar conectividade tailscale ping / curl
Configurar exit node (opcional) –advertise-exit-node
Monitorizar (Grafana/Zabbix) Ver Zabbix / Grafana
Documentar procedimento Ver Registar Tickets

Artigos Relacionados

VPN · Serverless · Cloudflare Tunnel · Tailscale · WireGuard · Nebula · ZeroTier · Headscale  |  ✎ Duarte Spínola  |  2026-07-07

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário