Para reduzir latência e melhorar a estabilidade em redes Tailscale na China continental, é recomendável implantar um servidor Derp próprio — especialmetne porque os servidores públicos da Tailscale estão fora do continente e frequentemente congestionados.
Instalação do Ambiente Go
Atualize o sistema e instale dependências básicas:
apt update && apt upgrade -y
apt install -y wget git openssl curl
Baixe e instale a versão mais recente do Go (exemplo com 1.23.3):
wget https://go.dev/dl/go1.23.3.linux-amd64.tar.gz
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.23.3.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile
source /etc/profile
go version
Compilação e Configuração do Derp
Instale o Derp via Go:
go install tailscale.com/cmd/derper@latest
Se enfrentar lentidão, configure um proxy Go alternativo:
go env -w GOPROXY=https://goproxy.cn,direct
Gerenciamento de Certificado Sem Domínio
Como não há domínio, gere um certificado autosasinado para derp.local:
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout /etc/derp/derp.local.key -out /etc/derp/derp.local.crt \
-subj "/CN=derp.local" -addext "subjectAltName=DNS:derp.local"
Serviço Systemd para Derp
Crie o serviço systemd para iniciar automaticamente:
cat > /etc/systemd/system/derp.service <<eof :33445="" after="network.target" daemon-reload="" derp="" derp.local="" description="Tailscale" enable="" eof="" execstart="/root/go/bin/derper" manual="" relay="" restart="always" restartpreventexitstatus="1" start="" systemctl="" user="root" wantedby="multi-user.target"></eof>
Abra as portas TCP 33445 e UDP 3478 no firewall do servidor.
Validação do Serviço
Acesse via navegador: https://[IP_DO_SERVIDOR]:33445. Ignore avisos de certificado inválido.
Integração com Tailscale
Instale o cliente Tailscale:
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
Verifique a rota atual:
tailscale netcheck
Configuração Avançada com Headscale (Opcional)
Se usar Headscale, configure o arquivo config.yaml para apontar ao seu Derp. Utilize JSON em vez de YAML se enfrentar problemas de compatibilidade.
Exemplo de configuração via Nginx como proxy reverso para /derp.json:
server {
listen 80;
server_name _;
location /derp.json {
alias /var/www/derp.json;
default_type application/json;
}
}
Conteúdo de /var/www/derp.json:
{
"Regions": {
"901": {
"RegionID": 901,
"RegionCode": "Local",
"RegionName": "Meu Derp",
"Nodes": [
{
"Name": "node1",
"RegionID": 901,
"DERPPort": 33445,
"IPv4": "SEU_IP_AQUI",
"InsecureForTests": true
}
]
}
}
}
Proteção Contra Uso Não Autorizado
Adicione autenticação ao serviço Derp editando o arquivo /etc/systemd/system/derp.service:
ExecStart=/root/go/bin/derper ... --verify-clients
Reinicie o serviço após alterações:
systemctl daemon-reload
systemctl restart derp