Files
Documentos-Unicos/projetos/newwhats.clube67.com/ambiente-dev.md
T
VPS 4 Builder ceb2e4ed8d docs(newwhats): ambiente dev em dev.newwhats.clube67.com (delta do universal)
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>
2026-06-27 17:50:52 +02:00

4.0 KiB
Raw Blame History

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:

  1. Não é vite, é Next.js, e o front é container próprio. O backend Express (dist/server.js) serve /api, /socket.io e /medianã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.
  2. Banco DEV não é o pgdev local — é o banco newwhats na 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 em newwhats.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 .gitignore do stack.
  • 3 containers (VPS4, docker rootless — DOCKER_HOST=unix:///run/user/1000/docker.sock), definidos em newwhats.dev/docker-compose.dev.yml:
    Container Papel Porta
    newwhats-backend-dev Express (API + Socket.IO + /media) 8008 (interna)
    newwhats-frontend-dev Next.js (next start) 3003 (interna)
    newwhats-nginx-dev roteia /api,/socket.io,/media→backend; /→frontend 8022 (publicada no host)
  • Roteamento (VPS1): Traefik file provider em /home/deploy/stack/traefik/dynamic/dev.newwhats.clube67.ymlHost(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 /api nas chamadas REST; o Socket.IO usa new URL(url).origin.
  • Não rodar prisma db push contra o banco newwhats: o schema já está alinhado com o código; o db pushdropa 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 (role newwhats; o role clube67 não tem permissão nesse banco).
  • Cache: redis://:<senha>@10.99.0.3:6379/1 (Dragonfly, DB index /1 para 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 banco clube67 (não newwhats).
  • 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.