90 lines
3.6 KiB
Markdown
90 lines
3.6 KiB
Markdown
# 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.
|