# DrJulio 5.0 – adaptação para hospedagem cPanel

> Versão **exclusiva para TESTES com dados fictícios**. Não homologada para uso clínico real.

## Compatibilidade exigida
- cPanel/CloudLinux **Setup Node.js App**, ou cPanel **Application Manager** com Passenger.
- Node.js **22.13.0 ou superior**. O projeto utiliza `node:sqlite` nativo, não funciona no PHP comum do cPanel e não precisa de MySQL.
- Permissão para executar Node.js continuamente; diretório privado persistente gravável, suporte a variáveis de ambiente e HTTPS no subdomínio.
- Utilize um **subdomínio exclusivo** `app.seudominio.com.br`. Não registre o aplicativo no domínio principal já em produção.

## 1. Antes de instalar
1. Faça backup da conta cPanel.
2. Em **Domínios**, crie `app.seudominio.com.br` sem compartilhar a raiz do site principal.
3. Aponte DNS para esta hospedagem e confira SSL/TLS (AutoSSL/Let's Encrypt, conforme plano).
4. Em **Gerenciador de Arquivos**, **acima do `public_html`**, crie `drjulio-app` e `drjulio-dados` como duas pastas distintas. Use permissão `700` em `drjulio-dados`, quando o provedor permitir.
5. Extraia o ZIP da edição cPanel dentro de `drjulio-app` de forma que existam `drjulio-app/app.js`, `drjulio-app/package.json`, `drjulio-app/src/` e `drjulio-app/public/`.
6. No Terminal, opcionalmente: `node -v`. Se o Node estiver disponível pela interface cPanel, selecione uma versão `22.13+` e confira a versão efetiva.

## 2. Se o painel tiver "Setup Node.js App"
1. **Software > Setup Node.js App > Create Application**.
2. Node version: **22.13+**. Mode: **Production** (mesmo em homologação, para testar controles de produção).
3. Application root: `drjulio-app`; Application URL: `app.seudominio.com.br/`.
4. Application startup file: `app.js`.
5. Crie a aplicação; no gerenciador de variáveis adicione os valores descritos em `CONFIGURACAO-CPANEL.example.txt`.
6. Reinicie no painel. Consulte logs se houver erro de inicialização.

## 3. Se o painel tiver "Application Manager"
1. **Software > Application Manager > Register Application**.
2. Application name: `drjulio`; Deployment domain: `app.seudominio.com.br`; Base application URL: `/`; Application path: `drjulio-app`; Environment: **Production**.
3. Inclua as variáveis descritas em `CONFIGURACAO-CPANEL.example.txt`.
4. Conclua a implantação; caso haja erro sobre arquivo de entrada, o root deve conter `app.js`.
5. Para reiniciar após alterações, use `mkdir -p ~/drjulio-app/tmp && touch ~/drjulio-app/tmp/restart.txt`, se este recurso estiver habilitado.

## 4. Variáveis necessárias
- `NODE_ENV=production`
- `TRUST_PROXY=1`
- `DB_PATH=/home/SEU_USUARIO/drjulio-dados/drjulio.sqlite` (pasta fora de `public_html` e do código)
- `DRJULIO_SETUP_TOKEN` um segredo aleatório com pelo menos 24 caracteres
- `DRJULIO_BACKUP_KEY` **outro** segredo aleatório longo

Gere tokens localmente/Terminal, um de cada vez:

```sh
node -e "console.log(require('node:crypto').randomBytes(32).toString('base64url'))"
```

Não compartilhe os tokens e não inclua arquivos `.env` no public_html. O `app.js` ativa o modo específico do Passenger, que verifica o cabeçalho de HTTPS informado pelo próprio Passenger. Se o provedor usar outro proxy, peça suporte antes de alterar `TRUST_PROXY`.

## 5. Verificação
1. Visite `https://app.seudominio.com.br/healthz` — deve aparecer `{"status":"ok"}`.
2. Visite `https://app.seudominio.com.br/api/session` — deve responder JSON, não 400/500.
3. Abra `https://app.seudominio.com.br/` — tela inicial do DrJulio.
4. Primeiro administrador: use o código de instalação `DRJULIO_SETUP_TOKEN` em local privado.
5. Teste com pessoas e atendimentos **fictícios**.
6. No iPhone: Safari > Compartilhar > Adicionar à Tela de Início. No Android: Chrome > menu > Instalar aplicativo / Adicionar à tela inicial.
7. Se houver erros de certificado, 503/500 ou tela em branco, pare e verifique logs e variáveis com o provedor.

## 6. Backup e atualizações
O banco está em `~/drjulio-dados/drjulio.sqlite` (com arquivos WAL/SHM enquanto o aplicativo funciona). **Nunca copie apenas o arquivo SQLite com gravações em andamento**. Utilize o script de backup com a chave:

```sh
cd ~/drjulio-app
# Execute em ambiente Node com DRJULIO_BACKUP_KEY e DB_PATH devidamente fornecidos
node scripts/backup.mjs /home/SEU_USUARIO/drjulio-backups
```

Transfira cópias criptografadas para fora da hospedagem e valide a restauração em ambiente de teste. Ao atualizar: faça backup antes e substitua apenas o **código** de `drjulio-app`, nunca `drjulio-dados`; reinicie a aplicação no painel. Não apague a chave de backup.

## Limitações e segurança
Este pacote apenas adapta o lançamento ao Passenger do cPanel. A implantação precisa ser **validada no cPanel específico**; alguns provedores bloqueiam Node 22, o módulo `node:sqlite` ou aplicativos persistentes.

A v5 ainda **não é homologada para informações médicas reais**: falta criptografia integral do banco em repouso, validação de conformidade LGPD, revisão independente, documentos oficiais assinados e testes completos em dispositivos físicos. O cPanel compartilhado pode não ser apropriado para os requisitos de segurança ou recursos de um prontuário em produção.

Não altere Apache, `.htaccess` do domínio principal, `public_html` principal, portas 80/443, configurações de PHP ou outros sites para instalar o DrJulio. Se nenhuma opção Node existir no painel, solicite habilitação ao provedor ou use VPS.
