# Manual Prático: Instalar no cPanel (Node.js)

Este guia é para subir o sistema `cadastro` em hospedagem com cPanel + Node.js App.

Observação importante: o projeto usa `sql.js` (WASM/JS), então não depende de
`better-sqlite3` e evita erro de `GLIBC` antigo no cPanel/CloudLinux.

## 1) Pré-requisitos

- cPanel com recurso **Setup Node.js App** habilitado.
- Node.js `22.x` disponível no servidor (ou versão compatível >= `22.9`).
- Acesso ao **File Manager** ou SFTP.
- Um domínio/subdomínio apontando para a conta (ex.: `cadastro.seudominio.com`).

## 2) Subir os arquivos

1. No cPanel, abra **File Manager**.
2. Crie uma pasta, por exemplo: `~/apps/cadastro`.
3. Envie todo o conteúdo da pasta local `cadastro` para essa pasta no servidor.
4. Confirme que existem: `server.js`, `package.json`, `.env.example`, `public/`.

## 3) Criar o app Node.js no cPanel

1. Abra **Setup Node.js App**.
2. Clique em **Create Application**.
3. Configure:
   - **Node.js version**: `22.x` (ou a maior disponível compatível).
   - **Application mode**: `Production`.
   - **Application root**: `apps/cadastro`.
   - **Application URL**: seu domínio/subdomínio.
   - **Application startup file**: `server.js`.
4. Salve.

## 4) Instalar dependências

No card do app criado:

1. Clique em **Run NPM Install** (ou equivalente no cPanel).
2. Aguarde concluir sem erro.

Se o cPanel pedir comando manual, rode no terminal da conta:

```bash
cd ~/apps/cadastro
npm install --omit=dev
```

## 5) Configurar ambiente (.env)

1. No `~/apps/cadastro`, crie o arquivo `.env` com base no `.env.example`.
2. Configure no mínimo:

```env
PORT=3000
ADMIN_EMAIL=admin@seudominio.com
ADMIN_PASSWORD=uma-senha-forte
COOKIE_SECURE=true
TRUST_PROXY=true
MAGIC_TTL_MINUTES=15

# opcional, mas recomendado
APP_BASE_URL=https://cadastro.seudominio.com
```

## 6) Configurar SMTP do seu domínio (obrigatório)

O acesso único por link/código **sempre envia e-mail**. Então o SMTP é obrigatório.

Preencha no `.env` com os dados da sua hospedagem/domínio:

```env
SMTP_HOST=smtp.seudominio.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_REQUIRE_TLS=true
SMTP_USER=no-reply@seudominio.com
SMTP_PASS=sua_senha_smtp
SMTP_FROM="Servidor de Jogos <no-reply@seudominio.com>"
```

> Importante: administrador não usa acesso único, apenas login/senha.

## 7) Banco de dados e permissões

- O banco é SQLite (`data.db`) na pasta da aplicação.
- Garanta permissão de escrita para o usuário da conta cPanel em:
  - pasta da aplicação (`~/apps/cadastro`)
  - pasta de uploads (`~/apps/cadastro/uploads/pix`)

## 8) Reiniciar e validar

1. No **Setup Node.js App**, clique em **Restart**.
2. Acesse a URL pública.
3. Teste checklist:
   - Login por senha (admin).
   - Cadastro de usuário comum.
   - Solicitação de acesso único para usuário comum (checar e-mail).
   - Confirmação de que admin não consegue acesso único.
   - Upload de comprovante PIX.

## 9) Backup e operação

- Faça backup periódico de:
  - `data.db`
  - pasta `uploads/`
  - arquivo `.env`
- Recomenda-se backup diário automático.

## 10) Troubleshooting rápido

### App abre erro 500
- Verifique logs do app no cPanel (seção de logs da aplicação Node).
- Confirme se `npm install` executou sem erro.

### Não envia e-mail
- Revise `SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASS`, `SMTP_FROM`.
- Teste porta/TLS conforme seu provedor.
- Confira se o domínio permite envio SMTP autenticado.

### Sessão cai ou login falha atrás de proxy
- Garanta:
  - `COOKIE_SECURE=true`
  - `TRUST_PROXY=true`
  - site abrindo em `https`.

---

Se quiser, eu também posso te entregar um modelo de `.env` pronto para copiar,
ja com campos separados para Hostinger/cPanel padrão, Zoho, Google Workspace e Outlook 365.
