Skip to content

Instantly share code, notes, and snippets.

@denoww
Last active May 15, 2026 13:33
Show Gist options
  • Select an option

  • Save denoww/1dbd83981458279a170c5ce992127d4f to your computer and use it in GitHub Desktop.

Select an option

Save denoww/1dbd83981458279a170c5ce992127d4f to your computer and use it in GitHub Desktop.
turbgate — instalador Raspberry Pi (3/4/5 com Raspberry Pi OS)

🍓 Instalador turbgate — Raspberry Pi (3 / 4 / 5)

Pra portaria que usa Raspberry Pi como mini-PC barato. Funciona em qualquer Pi rodando Raspberry Pi OS (ex-Raspbian) — 32 ou 64 bits.

Tempo total: ~10 min (incluindo gravar microSD se for instalação nova).

⚡ TL;DR — já estou no SSH do Raspberry

curl -fsSL https://turbgate.botbox.info/install.sh | sudo bash -s -- <token>

Substitui <token> pelo que copiou do ERP (onde achar). Detecta arch arm64/armhf + baixa o .deb + instala via apt + sobe service. Em ~1min aparece no modal Tunnels Ativos.

Raspberry novo, sem OS gravado? Vai pro Passo 1 — Gravar Raspberry Pi OS abaixo.


O que você precisa em mãos

  • Raspberry Pi 3, 4 ou 5 (com fonte adequada — Pi 4 = USB-C 3A; Pi 5 = USB-C 5A; Pi 3 = micro-USB 2.5A)
  • MicroSD ≥8 GB classe 10 (Sandisk/Kingston) — ou SSD USB se quiser mais durabilidade
  • Cabo de rede (Ethernet) ou Wi-Fi configurado
  • O <token> gerado no ERP (ver "Onde achar o token" abaixo)

Onde achar o token (gestor)

  1. Logado no ERP, vai em Equipamentos do cliente
  2. Menu "Ver Tunnels Ativos"
  3. Modal abre com seção "Token de instalação"
  4. Clica em Copiar — token de 32 caracteres tipo cc2d85d7a1...
  5. Manda esse token pro técnico via WhatsApp/email

O token é único por cliente e automaticamente reutilizável (1 token serve pra TODOS os equipamentos daquele cliente, independente da plataforma). Nunca expira sozinho — só se você clicar "Regenerar" no modal (que invalida instalações antigas).

⚠️ Cuidado: regenerar token derruba todos os turbgates existentes do cliente. Eles param de comunicar com o ERP em ~1min e precisam ser reinstalados com o token novo. Só regenere em caso de vazamento confirmado.

Passo 1 — Gravar Raspberry Pi OS no microSD (se instalação nova)

Se o Pi já tem Raspberry Pi OS rodando, pula pro Passo 2.

Usar o Raspberry Pi Imager (recomendado — gratuito, oficial, GUI)

Funciona em Windows / macOS / Linux:

  1. Baixa em https://www.raspberrypi.com/software/ e instala (~80 MB).
  2. Plugue o microSD novo no notebook (via adaptador USB).
  3. Abre o Imager → Choose Device → escolhe seu modelo (Pi 3 / 4 / 5).
  4. Choose OS → "Raspberry Pi OS (other)" → Raspberry Pi OS Lite (64-bit) (não precisa desktop).
  5. Choose Storage → escolhe o microSD.
  6. ⚙️ Edit Settings (importante, evita ter que conectar monitor!):
    • Set hostname — qualquer nome (ex: raspi-portaria)
    • Set username and password — anota a senha! (default era pi / raspberry, mas hoje é obrigatório customizar)
    • Configure wireless LAN se for usar Wi-Fi
    • Enable SSH ✅ (com password authentication)
  7. SaveYesYes (escreve no microSD, ~5 min).
  8. Ejeta o cartão pelo Explorer/Finder antes de tirar do adaptador USB.
  9. Espeta o microSD no slot do Pi (contatos dourados pra cima), liga na tomada e cabo de rede. Aguarda ~1-2 min até bootar.

⚠️ Não tire o microSD com o Pi ligado — corrompe o filesystem. Sempre sudo poweroff primeiro.

Passo 2 — Instalar o turbgate

1. Acha o IP do Pi na rede do cliente.

Linux / macOS (terminal):

nmap -sn 192.168.1.0/24 | grep -B2 -i 'raspberry\|raspi'

Windows:

  • 🖥️ Advanced IP Scanner (gratuito, GUI): https://www.advanced-ip-scanner.com/br/ → "Scan" → procura linha com fabricante "Raspberry Pi" ou hostname configurado.
  • 💻 Sem instalar (PowerShell):
    1..254 | ForEach-Object { Test-Connection -Count 1 -Quiet -TimeoutSeconds 1 "192.168.1.$_" } | Out-Null
    Get-NetNeighbor -AddressFamily IPv4 | Format-Table IPAddress, LinkLayerAddress

Ou olha no painel do roteador por hostname (raspberrypi ou o que você definiu) ou MAC começando com b8:27:eb, dc:a6:32, e4:5f:01, 2c:cf:67 (oficiais Raspberry Pi).

2. Conecta por SSH (mesmo comando Linux/macOS/Windows 10+/Windows 11):

ssh <seu_user>@<ip-do-raspberry>
# senha que você definiu no Imager

3. Roda o instalador 1-liner (substitua <token> pelo que copiou do ERP):

curl -fsSL https://turbgate.botbox.info/install.sh | sudo bash -s -- <token>

Em ~30-60 segundos o script:

  1. Detecta arquitetura (armhf 32-bit ou arm64 64-bit) automaticamente
  2. Baixa o .deb arm64 do mirror (Pi 3/4/5 de 64 bits)
  3. Roda apt install (instala como service systemd)
  4. Faz POST no ERP com o token → recebe cert mTLS + cliente_id descoberto
  5. Grava /etc/turbgate/{cert,key,ca}.pem + turbgate.yaml
  6. Habilita e inicia o service: systemctl enable --now turbgate

Se você usou Raspberry Pi OS 32-bit (Pi 3 antigos), o install.sh aceita armhf também via mesmo comando.

4. Confirma que o turbgate subiu:

sudo systemctl status turbgate
sudo journalctl -u turbgate -n 20 --no-pager

Tem que aparecer:

  • welcome session_id=… (handshake mTLS com server OK)
  • self-tunnel up — acesse esta máquina via SSH cmd="ssh -p PORT user@turbgate1.botbox.info ..."

💡 No final do install.sh aparece o ID do tunnel (MAC) do Raspberry — esse é o Identificador do tunnel no modal Tunnels Ativos do ERP. Gestor pode colar no campo "Permitir um tunnel específico" do equipamento.

5. Confirma SSH externo (a partir do seu notebook, fora da rede do cliente):

ssh -p <porta> <seu_user>@turbgate1.botbox.info

A porta exata aparece no log do passo 4 ("self-tunnel up") e na coluna SSH no equipamento do modal Tunnels Ativos no ERP — basta clicar Copiar e colar no terminal.

Se conectou, pronto — entrega pro cliente.

🔄 Atualização (versão nova do turbgate)

Mesmo comando do passo 3 — é idempotente. Reinstala o .deb, mantém config e cert, faz restart do service:

curl -fsSL https://turbgate.botbox.info/install.sh | sudo bash -s -- <token>

❌ Desinstalar

sudo systemctl stop turbgate
sudo apt remove -y turbgate
sudo rm -rf /etc/turbgate /var/lib/turbgate   # opcional — remove cert e logs

📂 Onde ficam os arquivos

O que Onde
Binário /usr/bin/turbgate
Config /etc/turbgate/turbgate.yaml
Certs mTLS /etc/turbgate/{cert,key,ca}.pem
Service systemd /lib/systemd/system/turbgate.service (auto-start no boot)
Logs journalctl -u turbgate

🆘 Deu problema?

Sintoma O que checar
Pi não boota (LED vermelho fixo, verde não pisca) Fonte fraca? Pi 4 precisa USB-C 3A. Pi 5 precisa 5A oficial. MicroSD bem encaixado?
ssh: Connection refused Esperou ~2 min de boot? Habilitou SSH no Imager (Edit Settings)? Tenta ping <ip> antes
arquitetura não suportada uname -m deve mostrar aarch64 (64-bit) ou armv7l (32-bit). Pi muito velho com OS 32-bit pode não ter .deb armhf — fala com suporte
ERRO: ERP rejeitou: token_invalido Token errado ou foi regenerado. Pede o atual pro gestor
turbgate.service em loop sudo journalctl -u turbgate -n 50 — comum: firewall do cliente bloqueando saída na 7000. Testa nc -zv turbgate.botbox.info 7000
SSH externo não conecta Self-tunnel demora ~30s pra abrir. journalctl -u turbgate | grep self-tunnel mostra a porta certa

Manda o output do journalctl -u turbgate -n 50 pro grupo do suporte que a gente resolve junto.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment