Traz pro código os 7 templates importados na leva anterior (Contrato de Software, Termo de Cessão, Termo de Portabilidade, Termo de Contratação STFC, Contrato Canal Finder, Contrato Canal Recorrente, Termo de Adesão) — uma VM nova já nasce com eles publicados assim que roda `pnpm db:migrate`, sem precisar reimportar manualmente. Segue o mesmo padrão de seed já usado neste repo pra dado de catálogo (INSERT ... ON CONFLICT DO NOTHING dentro da própria migration), idempotente por key. Corrige de passagem um html_content vazio em 4 dos 7 JSONs originais (não afeta geração/editor, só o card de preview) — recalculado com o próprio renderToHtml antes de virar seed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
93 lines
3.6 KiB
Markdown
93 lines
3.6 KiB
Markdown
# Setup de uma nova VM (pré-produção)
|
|
|
|
Passo a passo mínimo para subir o EDEN do zero numa VM nova. Ver `docs/adr/0002-container-topology.md`
|
|
para o porquê da topologia (Postgres isolado, 1 container por app).
|
|
|
|
## 1. Requisitos da VM
|
|
|
|
- Linux (Debian/Ubuntu), 4 vCPU / 8GB RAM como piso razoável (Chromium headless para PDF consome memória).
|
|
- Docker Engine + plugin `docker compose` instalados.
|
|
- Git.
|
|
- Portas liberadas no firewall: só as que forem expostas publicamente (ver passo 5) — nunca a porta do
|
|
Postgres.
|
|
|
|
```bash
|
|
curl -fsSL https://get.docker.com | sh
|
|
sudo usermod -aG docker $USER # relogar depois disso
|
|
```
|
|
|
|
## 2. Clonar o repositório
|
|
|
|
```bash
|
|
git clone https://git.falehandix.com.br/Matheus/eden.git /opt/eden
|
|
cd /opt/eden
|
|
git checkout main # pré-produção valida o que já foi mergeado — não a branch developer
|
|
```
|
|
|
|
## 3. Configurar o `.env`
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Preencher no `.env` (nunca commitar este arquivo):
|
|
|
|
- `EDEN_DATABASE_PASSWORD` / ajustar `DATABASE_URL` com a mesma senha.
|
|
- `JWT_SIGNING_SECRET` — `openssl rand -hex 48` (segredo próprio desta VM, nunca reaproveitar o de outro ambiente).
|
|
- `SIGNATURE_OTP_SECRET` — `openssl rand -hex 32`.
|
|
- `EDEN_FIELD_ENCRYPTION_KEY` — `openssl rand -hex 32`.
|
|
- `EDEN_SUPERADMIN_EMAIL` / `EDEN_SUPERADMIN_PASSWORD` — só usado para criar o primeiro usuário se a
|
|
tabela `users` estiver vazia.
|
|
- `S3_*` — credenciais do MinIO bundled (`openssl rand -hex 12`/`openssl rand -hex 24` para user/senha) ou
|
|
de um S3 real.
|
|
- `SMTP_*` — se já tiver um provedor de e-mail pra este ambiente.
|
|
- `PUBLIC_BASE_URL` — domínio público desta VM (usado em links de e-mail).
|
|
- Portas (`EDEN_API_PORT`/`EDEN_CORE_PORT`/`EDEN_PARCEIROS_PORT`/`EDEN_ASSINANTE_PORT`) — só mudar se for
|
|
rodar mais de uma instância na mesma máquina.
|
|
|
|
## 4. Subir os containers
|
|
|
|
```bash
|
|
docker compose --env-file .env up -d
|
|
```
|
|
|
|
Sobe Postgres, MinIO, API, worker e as 3 apps web. Cada serviço tem healthcheck — conferir com:
|
|
|
|
```bash
|
|
docker compose --env-file .env ps
|
|
```
|
|
|
|
## 5. Rodar as migrations
|
|
|
|
A imagem do `eden-api` carrega o monorepo inteiro (ver `infra/docker/Dockerfile.node`), então dá pra
|
|
rodar direto de dentro do container — `DATABASE_URL` já está no ambiente dele:
|
|
|
|
```bash
|
|
docker compose --env-file .env exec eden-api pnpm --filter @eden/database exec node-pg-migrate up
|
|
```
|
|
|
|
Isso já cria e publica os 7 templates de documento reais (Contrato de Software, Termo de Cessão, Termo
|
|
de Portabilidade, Termo de Contratação STFC, Contrato Canal Finder, Contrato Canal Recorrente, Termo de
|
|
Adesão) — vêm junto com as migrations (`1789862600000_seed-document-templates.cjs`), não precisa reimportar
|
|
manualmente numa VM nova.
|
|
|
|
(Ou, se tiver Node 22 + pnpm instalados na própria VM, fora de Docker: `pnpm install && pnpm db:migrate`,
|
|
com `DATABASE_URL` apontando pra porta mapeada do Postgres no host.)
|
|
|
|
## 6. Confirmar o primeiro acesso
|
|
|
|
```bash
|
|
curl -X POST http://localhost:${EDEN_API_PORT:-8080}/api/v1/auth/login \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"email\":\"$EDEN_SUPERADMIN_EMAIL\",\"password\":\"$EDEN_SUPERADMIN_PASSWORD\",\"applicationKey\":\"core\"}"
|
|
```
|
|
|
|
Deve devolver um `accessToken`. Depois logar normalmente em `http://<host>:${EDEN_CORE_PORT}`.
|
|
|
|
## 7. Proxy reverso / domínio (se for expor publicamente)
|
|
|
|
- Cada app tem um domínio próprio (core/parceiros/assinante); a API **não** tem domínio público — o proxy
|
|
na frente de cada domínio deve rotear `/api/*` internamente para `eden-api:8080` na rede docker
|
|
(`eden_net`), nunca expor a API direto.
|
|
- Nunca expor a porta do Postgres (`EDEN_POSTGRES_DEV_PORT`) fora da rede interna em pré-produção.
|