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/ce06bac097077d5ea432f588b72f98f3 to your computer and use it in GitHub Desktop.

Select an option

Save denoww/ce06bac097077d5ea432f588b72f98f3 to your computer and use it in GitHub Desktop.
turbgate — instalador Orange Pi (acesso remoto a equipamentos de portaria)

👷 Instalador turbgate — Orange Pi 3 LTS

Tem PC Windows na portaria? Use o outro guia: https://gist.github.com/denoww/34dc96f60e89e16b453d1c4af8949d3c

Tempo total: ~10 min por Orange Pi.

⚡ TL;DR — já estou no SSH do Orange Pi

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

Substitui <token> pelo que copiou do ERP (onde achar). Configura locale + timezone + hostname orange-cliente<id> + instala turbgate. Em ~1min aparece no modal Tunnels Ativos.

Não está no SSH ainda? Vai pros passos completos abaixo (microSD → boot → achar IP → SSH).


O que você precisa em mãos

  • Orange Pi 3 LTS (com fonte 5V/3A real e cabo Ethernet)
  • MicroSD com a imagem já gravada (vem dentro do adaptador USB que parece pen drive)
  • 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 zelador 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.

Senha do orangepi: por enquanto mantemos a senha default orangepi durante a fase de debug (facilita SSH se algo der errado). Quando o fluxo estabilizar, voltamos a trocar a senha automaticamente no install.

⚠️ Cuidados com o microSD

O microSD é frágil e contém o sistema do Orange Pi. Estragar = comprar outro.

  • Encaixe certo no slot: o microSD entra só de um jeito (contatos dourados pra cima, ponta cortada pra dentro). Não force. Se não entrar liso, vire o cartão.
  • Antes de tirar do Orange Pi: DESLIGA primeiro (sudo poweroff → espera LEDs apagarem). Tirar com Orange ligado pode corromper o filesystem e o cartão fica inutilizado.
  • Antes de tirar do adaptador USB (notebook): ejeta antes (clica direito no Explorer/Finder → "Ejetar"). Tirar puxando direto pode corromper escrita pendente em cache.
  • Não dobra, não molha, não toca nos contatos dourados. Cartão sem proteção quebra ou perde leitura.
  • Guarda em local seco quando não estiver em uso.

Passos

1. Tire o microSD de dentro do adaptador USB (ejetando antes pelo Explorer/Finder) e espete o microSD direto no slot microSD do Orange Pi (contatos dourados pra cima, sem forçar). (Não plugue o adaptador USB no Orange — ele só serve pra gravar via notebook. O Orange só boota pelo slot microSD.)

2. Liga na tomada e no cabo de rede. Aguarda ~1-2 min até o LED verde da rede ficar piscando.

3. Acha o IP do Orange na rede do cliente:

Linux / macOS (terminal):

nmap -sn 192.168.1.0/24 | grep -B2 -i 'orange\|allwinner'

Windows:

  • 🖥️ Mais fácil — Advanced IP Scanner (gratuito, GUI): baixa em https://www.advanced-ip-scanner.com/br/ → abre → "Scan" → procura linha com fabricante "Allwinner" ou hostname orangepi*.
  • 💻 Sem instalar (PowerShell admin):
    1..254 | ForEach-Object { Test-Connection -Count 1 -Quiet -TimeoutSeconds 1 "192.168.1.$_" } | Out-Null
    Get-NetNeighbor -AddressFamily IPv4 | Where-Object { $_.LinkLayerAddress -like "02-07-*" } | Format-Table IPAddress, LinkLayerAddress

Ou olha no painel do roteador (qualquer SO) por hostname orangepi ou MAC começando com 02:07.

4. Conecta por SSH (senha padrão: orangepi na primeira vez):

Linux / macOS / Windows 10+ / Windows 11 (cmd ou PowerShell):

ssh orangepi@<ip-do-orange>

Windows 10 (build 1809+) e Windows 11 já vêm com ssh pronto — abre o cmd ou PowerShell (Win+R → cmd → Enter) e cola o comando. Se der "comando não encontrado", instala em Configurações → Apps → Recursos opcionais → Adicionar recurso → "OpenSSH Client".

Alternativa GUI no Windows: PuTTY (https://www.putty.org/). Abre → preenche Host Name com o IP do Orange, porta 22, Openlogin as: orangepi → senha orangepi.

5. Bootstrap completo (substitua <token> pelo que copiou do ERP):

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

Esse comando configura tudo numa só passada: locale pt-BR, timezone São Paulo, hostname orange-cliente<id> (cliente_id descoberto pelo ERP) e instala o turbgate.

Aceita também --cliente <cliente_id> como compat se quiser passar o ID direto em vez do token.

Sem --password durante a fase de debug — senha do orangepi mantém a default. Pra trocar depois: sudo passwd orangepi.

6. Confirma que o turbgate subiu:

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

Tem que aparecer welcome session_id=… e self-tunnel up.

💡 No fim do setup_orange.sh aparece o ID do tunnel (MAC) desta máquina (ex: 02:07:09:a2:f3:e1). Mesmo MAC vai aparecer no modal Tunnels Ativos do ERP em ~1min como "Identificador do tunnel".

7. Grava o sistema no eMMC interno (pra Orange ficar standalone, sem microSD):

sudo nand-sata-install

No menu interativo:

  • "2 Boot from eMMC - system on eMMC" → Enter
  • Warning Continue? → Enter (Yes)
  • Filesystem: "1 ext4" (Orange Pi 3 LTS) ou "5 btrfs" (Orange Pi 3B) → Enter
  • Aguarda a barra de progresso (~3-5 min)
  • Mensagem final → Enter pra fechar

8. Desliga, remove o microSD e religa:

sudo poweroff

⚠️ NUNCA tire o microSD com o Orange ligado — corrompe o filesystem e o cartão fica inutilizado. Sempre sudo poweroff primeiro, espera os LEDs apagarem completamente (~10s), e só aí puxa o cartão pelo slot. Religa na tomada depois.

Boota standalone do eMMC. O microSD volta limpinho pra você usar no próximo Orange — guarde em local seco, longe de poeira/umidade.

9. Confirma SSH externo (a partir do seu notebook, fora da rede do cliente). Mesmo comando funciona em Linux / macOS / Windows (cmd ou PowerShell):

ssh -p 30000 orangepi@turbgate1.botbox.info

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

Se conectou, pronto — entrega pro cliente.

Deu problema?

Sintoma O que checar
Orange não boota (LEDs apagados) MicroSD bem encaixado no slot? Fonte é 5V/3A real (não USB-C de celular)?
ssh: Connection refused Esperou os 2 min de boot? Cabo Ethernet bom? Roteador deu IP?
setup_orange.sh: ERRO get_tunnel_devices Token errado ou cliente_id não cadastrado no ERP — confirma com suporte
turbgate.service em loop Internet do cliente bloqueando porta 7000? Testa nc -zv turbgate.botbox.info 7000

Manda print do erro no grupo do suporte que a gente resolve junto.


🆘 Meu microSD estragou — e agora?

Sintomas: Orange não boota, ou liga mas trava no LED vermelho, ou SSH dá erros estranhos de I/O. Provável que o cartão queimou (acontece — flash NAND tem ciclos limitados).

Resumo do plano (não desespera):

  1. Compra um microSD novo (≥8 GB, classe 10).
  2. Grava a imagem oficial Armbian no cartão (passos por SO abaixo).
  3. Espeta no Orange e roda o setup_orange.sh de novo com o mesmo token do cliente — o turbgate volta na exata mesma config (mesmo cliente_id, mesmo hostname orange-cliente<id>, registra de novo no ERP).

⚠️ Sobre microSD falsificado: cartão muito barato (R$ 20 com "256 GB") costuma ser fake. Compra Sandisk ou Kingston em loja confiável, ≥8 GB. Se desconfiar, testa com f3probe antes de gravar.

Passo 1 — Baixar a imagem Armbian

Mesma imagem que vem no microSD original. Link oficial:

https://www.armbian.com/orangepi-3-lts/

Baixa a versão CLI (Server, sem desktop). Arquivo .img.xz (~300 MB). Não precisa descompactar — o gravador faz sozinho.

Passo 2 — Gravar no microSD

🪟 Windows / 🍎 macOS (recomendado: balenaEtcher)

Mais fácil, GUI, 3 cliques. Funciona igual nos dois sistemas:

  1. Baixa balenaEtcher em https://etcher.balena.io/ e instala (~80 MB).
  2. Plugue o microSD novo no notebook (via adaptador USB).
  3. Abre o Etcher → Flash from file → escolhe o .img.xz baixado.
  4. Select target → escolhe o microSD (confirma a capacidade — não vá gravar no HD!).
  5. Flash! → confirma → digita senha de admin se pedir → aguarda ~5 min.
  6. Quando terminar, ejeta o cartão pelo Explorer/Finder antes de tirar do adaptador USB.

🐧 Linux

Pode usar balenaEtcher também (mesmos passos acima — tem versão Linux no site).

Ou via terminal com dd (1 comando, sem instalar nada):

# Descobre qual é o microSD (cuidado pra não confundir com seu HD!)
lsblk -dpo NAME,SIZE,TRAN | grep usb
# Vai aparecer algo tipo: /dev/sdX  16G  usb  → esse é o microSD

# Grava (substitui /dev/sdX pelo correto)
xzcat ~/Downloads/Armbian_*_orangepi3-lts_*.img.xz | sudo dd of=/dev/sdX bs=4M status=progress conv=fsync
sync

⚠️ Confere o /dev/sdX 2x antes de dar Enter. Errar aqui apaga seu HD inteiro. Se em dúvida, use balenaEtcher (tem confirmação visual do tamanho).

Passo 3 — Espetar no Orange e refazer setup

  1. Tira o microSD do adaptador (com Ejetar antes — ver "Cuidados com o microSD" no topo).
  2. Espeta no slot microSD do Orange Pi (contatos dourados pra cima, sem forçar).
  3. Liga na tomada e cabo de rede. Espera ~1-2 min até LED verde da rede piscar.
  4. Volta pros passos 3-9 deste guia (achar IP → SSH → rodar setup_orange.sh --token <token> → confirmar turbgate → gravar no eMMC → tirar microSD).

💡 Use o mesmo token que estava cadastrado pra esse cliente (gestor copia do modal "Tunnels Ativos" no ERP). Não precisa criar token novo nem mudar nada no ERP — o cliente_id é descoberto pelo token e o turbgate registra normalmente.

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