# Deploy no Coolify — Redator de SD Método escolhido: **Dockerfile** (já pronto na raiz do projeto). É a melhor opção aqui porque o projeto tem dois níveis — os arquivos de configuração do redator na raiz e o app em `app/` — e o Nixpacks não lida bem com isso (detectaria o Node em `app/` e deixaria de fora `regras-sd.json`, `schema-sd.json`, o prompt e a base). Docker Compose não acrescenta nada: é um serviço só, e volumes/variáveis o painel do Coolify resolve. ## Passo 0 — subir o projeto para um repositório Git PRIVADO O Coolify puxa o código de um repositório. Na pasta `D:\IasisSaude`: ```bash git init -b main git add . git commit -m "Redator de SD - preparado para deploy" ``` Crie um repositório **privado** no GitHub (ex.: `iasis/redator-sd`) e: ```bash git remote add origin https://github.com/SEU-USUARIO/redator-sd.git git push -u origin main ``` O `.gitignore` da raiz já bloqueia `app/.env` (chave de API!), `app/data/` e `node_modules`. ## Passo 1 — criar a aplicação no painel 1. **Projects → seu projeto → + New → Application**. 2. Fonte: **Private Repository (with GitHub App)** → conecte a conta na primeira vez → selecione o repositório e o branch `main`. 3. Em **Build Pack**, escolha **Dockerfile** (ele acha o `Dockerfile` na raiz sozinho). 4. Em **Ports Exposes**: `3344`. ## Passo 2 — variáveis de ambiente (aba Environment Variables) | Variável | Valor | |---|---| | `ANTHROPIC_API_KEY` | a chave (marque como **secret**) | | `APP_USUARIO` | usuário do login — **obrigatório na internet** | | `APP_SENHA` | senha FORTE — é a única porta de entrada | | `LLM_MODEL` | `claude-opus-5` (ou o padrão que preferir) | | `LLM_MODELOS` | `claude-sonnet-5,claude-haiku-4-5-20251001` | | `LLM_EFFORT` | `medium` | `PORT` não precisa: o padrão 3344 casa com o EXPOSE da imagem. ## Passo 3 — persistência (aba Storages) — NÃO PULE Sem isto, **cada deploy apaga as conversas e o histórico da base**: 1. **+ Add → Volume Mount** - Destination Path: `/projeto/app/data` - (guarda `sds.json`: conversas e rascunhos) 2. **+ Add → File Mount** - Destination Path: `/projeto/base-conhecimento.json` - Content: cole o conteúdo ATUAL do seu `D:\IasisSaude\base-conhecimento.json` - (o app escreve neste arquivo ao enviar SDs e alimentar a base; o file mount sobrevive aos deploys) ⚠ A partir do primeiro uso em produção, a base **da VPS** vira a oficial — o arquivo local no seu PC deixa de valer. Para trazer de volta, copie o conteúdo pela aba Storages (ou `cat` no terminal do container). ## Passo 4 — domínio e HTTPS 1. No seu DNS, crie um registro **A** apontando (ex.: `redator.iasis.tech`) para o IP da VPS. 2. Na aplicação, em **Domains**: `https://redator.iasis.tech`. 3. O Coolify (Traefik) emite o certificado Let's Encrypt sozinho. ## Passo 5 — health check (opcional, recomendado) Aba **Health Check**: Path `/api/sessao`, Port `3344` — responde 200 sem login. ## Passo 6 — Deploy Botão **Deploy** e acompanhe os logs até aparecer: `Redator de SD rodando em http://localhost:3344`. Atualizações futuras: `git add … && git commit && git push` — com **Auto Deploy** ligado (padrão via webhook do GitHub App), o Coolify rebuilda sozinho. ## Comportamentos esperados em produção - **Sessões em memória**: a cada deploy/restart, é preciso logar de novo. - **Upload de PDF** (Base de Conhecimento): até 15 MB — passa pelo Traefik sem ajuste. - **Editar prompt/regras/schema**: edite no repositório e faça push (vira deploy); a base de conhecimento NÃO — ela vive no file mount e é editada pelo próprio app.