3.3 KiB
3.3 KiB
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 composeinstalados. - Git.
- Portas liberadas no firewall: só as que forem expostas publicamente (ver passo 5) — nunca a porta do Postgres.
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER # relogar depois disso
2. Clonar o repositório
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
cp .env.example .env
Preencher no .env (nunca commitar este arquivo):
EDEN_DATABASE_PASSWORD/ ajustarDATABASE_URLcom 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 tabelausersestiver vazia.S3_*— credenciais do MinIO bundled (openssl rand -hex 12/openssl rand -hex 24para 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
docker compose --env-file .env up -d
Sobe Postgres, MinIO, API, worker e as 3 apps web. Cada serviço tem healthcheck — conferir com:
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:
docker compose --env-file .env exec eden-api pnpm --filter @eden/database exec node-pg-migrate up
(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
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 paraeden-api:8080na 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.