📄 SKILL.md

← Vault

name: rsconnection-wazapi-setup

description: Setup, SSL, e debug do RsConnection (gateway WhatsApp Baileys) no VPS

tags: [whatsapp, baileys, wazapi, rsconnection]


RsConnection (WazAPI) — Setup & Debug

Contexto

RsConnection é um gateway WhatsApp baseado em Baileys rodando no VPS 31.97.243.106:3005 em /var/www/wazapi/. Frontend estático em /var/www/wazapi/public/index.html. Canal separado do Chatwoot — não confundir.

Estado Atual (20/jul/2026)

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

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)

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

    ItemStatus
    --------------
    Servidor✅ Rodando na porta 3005
    Nginx proxyrsconnection.rochasalesseguros.com.brlocalhost:3005
    SSL✅ Wildcard rochasalesseguros.com.br
    Auth nginx⚠️ DESABILITADO (htpasswd quebrado — reabilitar após testes)
    WhatsApp pareado❌ Sem dispositivo conectado
    QR CodeBloqueado pelo WhatsApp (IP do VPS)
    Código de pareamentoFuncionando
    Background ASCII art✅ Video 21st.dev configurado (opacity 0.30, z-index -1)
    QR CodeCódigo de 8 dígitos
    ---------
    Endpoint WhatsAppwss://web.whatsapp.com/ws/chat (com refs)POST /pairing-code
    IP do servidorPrecisa ser "confiável"Não importa
    Bloqueio por IP✅ Ocorre❌ Não ocorre
    MétodoRotaDescrição
    -------------------------
    GET/api/statusLista todas instâncias
    POST/api/instance/:id/connectInicia conexão Baileys
    POST/api/instance/:id/pairingGera código de 8 dígitos
    GET/api/instance/:id/qrSSE stream do QR/pairing code
    POST/api/instance/:id/disconnectDesconecta
    DELETE/api/instance/:idRemove instância
    ArquivoConteúdo
    -------------------
    /var/www/wazapi/server.jsServidor Node.js + Baileys
    /var/www/wazapi/public/index.htmlFrontend (HTML/JS puro — não é React)
    /var/www/wazapi/instances/*/Credenciais e estado por instância
    /tmp/wazapi.logLogs do servidor
    /tmp/index.html.bakBackup do frontend antes de修改
    /etc/nginx/sites-enabled/rsconnection.rochasalesseguros.com.brNginx config

    Segurança — Achados (20/jul/2026)

  • - 🔴 creds.json com chaves privadas WhatsApp em texto plano em /var/www/wazapi/instances/
  • - 🔴 Cloudflare API keys expostas em /root/.secrets/
  • - 🔴 Token Discord bot em texto no config.yaml do Hermes na VPS
  • - ⚠️ Auth nginx desabilitado — reabilitar após testes
  • Resumo da Sessão — 20/jul/2026

    Problema

    QR code não aparecia no modal do RsConnection — WhatsApp bloqueando IP do VPS.

    Diagnóstico

    WhatsApp conecta mas recusa enviar "refs" (tokens QR) para IP de data center. Erro: "QR refs attempts ended".

    Solução Aplicada

    Usar código de pareamento (8 dígitos) em vez de QR Code — funciona porque usa endpoint diferente do WhatsApp.

    Funcionalidades Adicionadas

  • - Video ASCII art como background decorativo (21st.dev)
  • - Anti-ban Baileys (timeout, keep-alive, reconnect backoff)
  • - Nginx auth desabilitado temporariamente
  • Pendências

  • - [ ] Reabilitar auth nginx antes de ir pra produção
  • - [ ] Proxy residencial se QR for absolutamnete necessário
  • - [ ] Migrar frontend de HTML/JS puro para React (opcional — não necessário)