Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.7 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).
O newwhats diverge num ponto (o banco segue o universal — pgdev isolado):
- 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.
Histórico: por um período o dev apontou para o banco real
newwhatsna VPS3 (compartilhado). Isso foi revertido em 27/jun/2026 — testes podiam corromper dados reais (delete de instância faz cascade em chats/messages). Agora o banco é isolado (newwhats_devnopgdev), como manda o universal.
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.
⚠️ Armadilha (causou 503 no login em 28/jun/2026): o
frontend/.env.production.localtinhaNEXT_PUBLIC_API_URL=https://clube67.com(valor de PROD). O Next inlinaNEXT_PUBLIC_*em build time e, comNODE_ENV=production(caso do containernewwhats-frontend-dev), carrega.env.production.local. Rodarnpx next builddentro do container sem passar a env fez o login do dev bater emclube67.com→ 503. Sempre rebuildar com a env explícita:docker exec -e NEXT_PUBLIC_API_URL=https://dev.newwhats.clube67.com -w /app newwhats-frontend-dev npx next build. A cópia dev já teve o.env.production.localcorrigido para o domínio dev.
Conexões — credenciais no docker-compose.dev.yml
- Banco (isolado):
postgresql://devadmin:<senha>@pgdev:5432/newwhats_dev— banconewwhats_devno containerpgdev(VPS4, rede dockersoc; o backend-dev precisa estar na redesocpara resolver o DNSpgdev). É um clone dos dados reais (~92k messages, ~10k contacts), feito compg_dumpdonewwhats(VPS3) →pg_restore --no-owner --no-privilegesnopgdev. Para repuxar/zerar, ver scripts em/home/deploy/stack/pg-dev/(padrão_dev/_refdo universal). - Cache:
redis://:<senha>@10.99.0.3:6379/1(Dragonfly VPS3, DB index/1— isolado da prod por index).
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.