# WPP Core no cPanel — passo a passo

Este pacote já vem **compilado** (TypeScript → JavaScript e front-end pronto em `dist/`).
No servidor não precisa rodar build, só `npm install`.

## Requisitos da hospedagem
- cPanel com o ícone **"Setup Node.js App"** (CloudLinux / Passenger). Sem esse ícone, a hospedagem não roda Node e o sistema não funciona lá.
- Node.js **20 ou 22** disponível no seletor.
- Memória: o Baileys + histórico do WhatsApp usam ~300–600 MB. Planos compartilhados muito básicos (limite de 512 MB) podem derrubar o processo. Se acontecer, use `HISTORY_FULL_SYNC=false`.

## 1. Enviar os arquivos
1. No **Gerenciador de Arquivos**, crie a pasta `/home/SEU_USUARIO/wpp-core` (**fora** da `public_html`).
2. Envie o `wpp-core-cpanel.zip` para ela e clique em **Extrair**.
   Devem ficar lá: `app.js`, `package.json`, `server-dist/`, `scripts-dist/`, `dist/`, `.env.example`.

## 2. Criar o app Node
Em **Setup Node.js App → Create Application**:
| Campo | Valor |
|---|---|
| Node.js version | 20.x ou 22.x |
| Application mode | Production |
| Application root | `wpp-core` |
| Application URL | o domínio/subdomínio (ex.: `wpp.seudominio.com.br`) |
| Application startup file | `app.js` |

Clique em **Create**.

## 3. Variáveis de ambiente
Na mesma tela, em **Environment variables**, adicione (ou crie um `.env` copiando o `.env.example`):
- `LOGIN_ENABLED` = `true`
- `ADMIN_USER` = `admin` · `ADMIN_PASSWORD` = uma senha forte
- `DATA_DIR` = `/home/SEU_USUARIO/wpp-core-data`
- `GEMINI_API_KEY` (opcional, para transcrever áudios)

## 4. Instalar dependências
Clique em **Run NPM Install**. Aguarde terminar (instala Baileys, Express e um ffmpeg próprio).
Depois clique em **Restart**.

> Se o botão falhar, use o **Terminal** do cPanel: copie o comando `source ...activate` que aparece no topo da tela do app, cole no terminal e rode `npm install --omit=dev`.

## 5. Conectar o WhatsApp
Abra o domínio, faça login e escaneie o QR Code (WhatsApp → Aparelhos conectados → Conectar um aparelho).

## 6. Manter sempre ligado (importante)
O Passenger do cPanel **desliga o app quando ninguém acessa o site** por alguns minutos. Desligado, o WhatsApp não recebe mensagens nem roda o bot.
Para evitar, crie um **Cron Job** (cPanel → Cron Jobs) a cada 5 minutos:
```
*/5 * * * * curl -s -o /dev/null https://wpp.seudominio.com.br/
```
A sessão fica salva no `DATA_DIR`, então ao religar ele reconecta sozinho, sem novo QR.

## Usuários do painel
Pelo Terminal (com o ambiente ativado, ver passo 4):
```
npm run usuarios -- criar joao senha123 "João"
npm run usuarios -- listar
```

## HTTPS
Ative SSL no domínio em **SSL/TLS Status** (AutoSSL). Sem HTTPS o navegador não oferece "Instalar app" (PWA) e o login fica exposto.

## Problemas comuns
- **Tela "Incomplete response" / 503**: veja o log em `wpp-core/stderr.log` (ou o arquivo de log indicado no Setup Node.js App).
- **App reinicia sozinho / some a sessão**: falta de memória → `HISTORY_FULL_SYNC=false`; ou `DATA_DIR` dentro de pasta que é apagada.
- **Mensagens chegam atrasadas**: o cron do passo 6 não está rodando.
- Rode **um só app** com a mesma sessão. Dois apps com o mesmo número derrubam um ao outro.
