description: Setup, SSL, e debug do RsConnection (gateway WhatsApp Baileys) no VPS
| Item | Status |
| ------ | -------- |
| Servidor | ✅ Rodando na porta 3005 |
| Nginx proxy | ✅ rsconnection.rochasalesseguros.com.br → localhost:3005 |
| SSL | ✅ Wildcard rochasalesseguros.com.br |
| Auth nginx | ⚠️ DESABILITADO (htpasswd quebrado — reabilitar após testes) |
| WhatsApp pareado | ❌ Sem dispositivo conectado |
| QR Code | ❌ Bloqueado pelo WhatsApp (IP do VPS) |
| Código de pareamento | ✅ Funcionando |
| Background ASCII art | ✅ Video 21st.dev configurado (opacity 0.30, z-index -1) |
O Problema do QR Code — Causa Raiz
WhatsApp bloqueou o IP do VPS (31.97.243.106 — Hostinger data center) de gerar QR codes. O Baileys conecta ("connected to WA", "not logged in, attempting registration...") mas o WhatsApp recusa enviar os tokens de QR ("QR refs attempts ended").
O QR code NÃO vai funcionar nesse servidor. Apenas o código de pareamento (8 dígitos) funciona, pois usa fluxo diferente.
Fluxo do QR vs Código de Pareamento
| QR Code | Código de 8 dígitos |
| --- | --- | --- |
| Endpoint WhatsApp | wss://web.whatsapp.com/ws/chat (com refs) | POST /pairing-code |
| IP do servidor | Precisa ser "confiável" | Não importa |
| Bloqueio por IP | ✅ Ocorre | ❌ Não ocorre |
Como Usar — Pareamento por Código
1. Abrir https://rsconnection.rochasalesseguros.com.br
2. Clicar "Conectar" na instância RsConnection
3. No modal, clicar "Código" (não "QR Code")
4. Aguardar ~3 segundos — aparece código de 8 dígitos (ex: 3A6RSCJ1)
5. No celular: Settings → Linked Devices → Link a Device → Enter code → digitar
O botão "Código" precisa estar visível no modal. O frontend já tem a toggle button showPairingMode().
Configuração Baileys (server.js)
O servidor foi configurado com anti-ban e timeout expandido:
`javascript
const sock = makeWASocket({
auth: state,
version,
logger: pino({ level: 'debug' }),
browser: ['Firefox', 'Windows', '10'],
printQRInTerminal: false,
qrTimeout: 120000, // 120s para escanear
keepAliveIntervalMs: 10000,
waWebSocketUrl: 'wss://web.whatsapp.com/ws/chat', // NÃO ALTERAR — causa noise error
connectTimeoutMs: 30000,
retryRequestDelayMs: 5000,
markOnlineOnConnect: false,
syncFullHistory: false,
});
`
Anti-Ban Implementado (Jul 2026)
- - Exponential backoff de reconnect: 2s → 4s → 8s → 16s → 30s (max)
- - Máximo 10 tentativas antes de desistir
- - Flag
intentionalClose impede reconnect em logout intencional
- -
markOnlineOnConnect: false reduz risco de ban
- - Credenciais persistidas em
auth.json — reconnect usa sessão existente Rotas da API
| Método | Rota | Descrição |
| -------- | ------ | ----------- |
| GET | /api/status | Lista todas instâncias |
| POST | /api/instance/:id/connect | Inicia conexão Baileys |
| POST | /api/instance/:id/pairing | Gera código de 8 dígitos |
| GET | /api/instance/:id/qr | SSE stream do QR/pairing code |
| POST | /api/instance/:id/disconnect | Desconecta |
| DELETE | /api/instance/:id | Remove instância |
Gerenciamento do Servidor
`bash
Reiniciar
pkill -f "node server.js" && sleep 1 && cd /var/www/wazapi && node server.js > /tmp/wazapi.log 2>&1 &
Ver status
curl -s http://localhost:3005/api/status
Ver logs
tail -f /tmp/wazapi.log
Ver processos
ps aux | grep 'node server.js' | grep -v grep
`
Reabilitar Auth Nginx (QUANDO PRONTO)
O auth básico foi desabilitado durante debugging. Para reabilitar:
`bash
sed -i 's/#auth_basic/auth_basic/' /etc/nginx/sites-enabled/rsconnection.rochasalesseguros.com.br
nginx -t && nginx -s reload
`
Nova senha: RsConnection2026! (usuário: admin)
Para trocar senha:
`bash
htpasswd -bc /etc/nginx/.htpasswd_rsconnection admin 'RsConnection2026!'
`
Proxy Residencial (Se QR For Necessário)
Se futuramente precisar do QR code funcionando, será necessário proxy residencial brasileiro (o QR code é bloqueado por IP de data center, não por geography).
O que NÃO FUNCIONA (testado Jul 2026)
- -
waWebSocketUrl: 'wss://web.whatsapp.com/ws/chat' → Piora MUITO. Causa "Connection Failure: noise handshake decode error" e o WhatsApp nem conecta. NUNCA usar isso.
- - Browser identity trocada (Chrome→Firefox) → não resolve
- -
qrTimeout: 120000 → não resolve (problema é WhatsApp se recusando a enviar refs, não timeout)
- -
keepAliveIntervalMs: 10000 → não resolve
- - Apagar
creds.json → não resolve (é block de IP, não de sessão)
- - Proxy socks simples → não resolve (WhatsApp detecta tipo de proxy)
A causa real: IP do VPS é de data center (Hostinger). WhatsApp confia menos nesses IPs para o fluxo de QR. O pairing code (8 dígitos) usa endpoint diferente — por isso funciona.
Se QR for absolutamnete necessário: único caminho viável é proxy residencial brasileiro (IP de ISP, não data center).
Solução: proxy HTTP com https-proxy-agent já instalado em /var/www/wazapi/node_modules/. Precisa:
1. Conta em provedor (PacketStream ~$3/GB, SmartProxy, BrightData)
2. Variável WHATSAPP_PROXY=http://user:pass@host:port
3. Modificar server.js para usar agent: new HttpsProxyAgent(PROXY_URL)
Arquivos Importantes
| Arquivo | Conteúdo |
| --------- | ---------- |
/var/www/wazapi/server.js | Servidor Node.js + Baileys |
/var/www/wazapi/public/index.html | Frontend (HTML/JS puro — não é React) |
/var/www/wazapi/instances/*/ | Credenciais e estado por instância |
/tmp/wazapi.log | Logs do servidor |
/tmp/index.html.bak | Backup do frontend antes de修改 |
/etc/nginx/sites-enabled/rsconnection.rochasalesseguros.com.br | Nginx config |
QR code não aparecia no modal do RsConnection — WhatsApp bloqueando IP do VPS.
WhatsApp conecta mas recusa enviar "refs" (tokens QR) para IP de data center. Erro: "QR refs attempts ended".