--- name: Acesso ao servidor Whaticket gotechbr description: IP, ferramentas e caminhos pra operar o servidor Whaticket de produção type: reference originSessionId: fd5a71bc-b589-4209-bf9b-e8a094889ad9 --- Servidor Linux Ubuntu rodando o Whaticket de produção da gotechbr.com.br. - IP: 212.85.20.229 (SSH como root). Senha é compartilhada pelo Jesiel quando necessário — nunca salvar em memória. - Cliente SSH no Windows: `C:\Program Files\PuTTY\plink.exe` (use `-pw` + senha em string entre aspas, com `-batch` pra não pedir confirmação de host). - Estrutura: - `/home/deploy/whaticket/backend` (Node/TS, PM2 process `whaticket-backend`, script `dist/server.js`) - `/home/deploy/whaticket/frontend` (React build estático, PM2 process `whaticket-frontend`) - `/home/deploy/.pm2/logs/whaticket-backend-{out,error}.log` - PM2: `sudo -u deploy pm2 list`, `sudo -u deploy pm2 restart whaticket-backend`. PM2 roda como user `deploy`. Para reiniciar use sudo. - PostgreSQL local: db `whaticket`, user `whaticket`. Senha não salvar. - Redis em Docker container `redis-whaticket` (port 5005). **Padrão para SQL com aspas/JSON**: PowerShell escapa aspas mal. Soluções que funcionam: 1. Codificar em base64 e mandar via plink: `echo $b64 | base64 -d > /tmp/q.sql && psql ... -f /tmp/q.sql`. 2. Pra UPDATE com JSON grande: usar dollar-quoting (`$FLOW$...$FLOW$`). **Padrão pra patch de código**: editar `.ts` E `.js` compilado (PM2 roda dist/), backup com `.bak.YYYYMMDD_HHMM`, restart pm2. Use Python no servidor remoto (já tem `python3`) pra substituições complexas — sed/regex em PowerShell+plink dá problema.