ceb2e4ed8d
Documenta o ambiente dev do newwhats: 3 containers na VPS4 (backend Express + frontend Next + nginx, porta 8022), roteado pelo Traefik da VPS1; banco newwhats na VPS3 (dados reais, sem db push) e cache Dragonfly /1. Cita o que difere do infra/ambiente-dev.md universal e a divergencia codigo x PROD. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.0 KiB
4.0 KiB
newwhats.clube67.com — Ambiente de desenvolvimento (delta)
Delta deste projeto. Modelo universal em
../../infra/ambiente-dev.md. Aqui o que difere. Publicado em https://dev.newwhats.clube67.com (no ar desde 27/jun/2026).
O que torna este projeto diferente do universal
O infra/ambiente-dev.md universal assume: dev servido por imagem vite buildada (nginx sobre vite build)
e banco DEV isolado no pgdev (VPS4), banco <projeto>_dev. O newwhats diverge em dois pontos:
- Não é vite, é Next.js, e o front é container próprio. O backend Express (
dist/server.js) serve só/api,/socket.ioe/media— não serve o frontend. O front é um container Next (next start -p 3003) separado. Por isso o dev tem 3 containers (não um): backend + frontend + nginx de roteamento. - Banco DEV não é o
pgdevlocal — é o banconewwhatsna VPS3 (decisão do administrador: dev com dados reais, compartilhado). ⚠️ Isso abre mão do isolamento que o universal garante: o dev grava nos dados reais (~89k messages, ~10k contacts). Cache isolado via Dragonfly DB index/1.
Onde roda / estrutura
- Cópia isolada de build/execução:
/home/deploy/stack/newwhats.clube67.com/newwhats.dev/. Nunca buildar o dev emnewwhats.local/— essa pasta é a fonte do builder de PROD (deploy-prod-builder.sh); buildar nela contamina o artefato de produção. A cópia está no.gitignoredo stack. - 3 containers (VPS4, docker rootless —
DOCKER_HOST=unix:///run/user/1000/docker.sock), definidos emnewwhats.dev/docker-compose.dev.yml:Container Papel Porta newwhats-backend-devExpress (API + Socket.IO + /media) 8008 (interna) newwhats-frontend-devNext.js ( next start)3003 (interna) newwhats-nginx-devroteia /api,/socket.io,/media→backend;/→frontend8022 (publicada no host) - Roteamento (VPS1): Traefik file provider em
/home/deploy/stack/traefik/dynamic/dev.newwhats.clube67.yml→Host(dev.newwhats.clube67.com)→http://10.99.0.4:8022(WireGuard). DNS já resolve (wildcard*.clube67.com→ VPS1).
Como subir
cd /home/deploy/stack/newwhats.clube67.com/newwhats.dev
# 1) Build (na cópia isolada) — npm install LIMPO (copiar node_modules via rsync quebra Prisma/Next)
cd backend && npm install && npm run build && npx prisma generate && cd ..
cd frontend && npm install && NEXT_PUBLIC_API_URL=https://dev.newwhats.clube67.com npm run build && cd ..
./backend/node_modules/.bin/tsc -p ./plugins/tsconfig.json || true # plugins (emite apesar de erros de tipo)
# 2) Subir
DOCKER_HOST=unix:///run/user/1000/docker.sock docker compose -f docker-compose.dev.yml up -d
NEXT_PUBLIC_API_URL= raiz (https://dev.newwhats.clube67.com), sem/api— o código já prefixa/apinas chamadas REST; o Socket.IO usanew URL(url).origin.- Não rodar
prisma db pushcontra o banconewwhats: o schema já está alinhado com o código; odb pushsó dropa tabelas extras de plugins (sec_*da secretaria,janitor_logs,nanobana_usage) — perda de dados.
Conexões (VPS3, 10.99.0.3) — credenciais no docker-compose.dev.yml
- Banco:
postgresql://newwhats:<senha>@10.99.0.3:5432/newwhats(rolenewwhats; o roleclube67não tem permissão nesse banco). - Cache:
redis://:<senha>@10.99.0.3:6379/1(Dragonfly, DB index/1para não colidir com a prod).
Atenção — divergência código × PROD
O código em newwhats.local (e portanto o dev) está à frente da PROD na VPS1:
- PROD (VPS1): build de mai/2026, entrypoint
dist/backend/src/index.js(arquitetura antiga em que o backend servia o frontend); usa o bancoclube67(nãonewwhats). - Código atual / dev: entrypoint
dist/server.js, frontend separado (Next).
Antes de promover para produção, alinhar deploy e banco. Ver universal: ../../deploy/subir-release.md.