Files
Documentos-Unicos/projetos/newwhats.clube67.com/ambiente-dev.md
T
VPS 4 Builder 810799a335 docs(newwhats): banco dev isolado (newwhats_dev no pgdev) — reverte compartilhamento com VPS3
O dev passou a usar newwhats_dev no pgdev (VPS4), clone dos dados reais via
pg_dump/restore, na rede soc. Reverte o uso do banco real newwhats@VPS3
(compartilhado), que arriscava corromper dados (cascade em chats/messages).
Atualiza secao de conexoes e remove a nota de "nao rodar db push".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 18:21:11 +02:00

4.1 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). O newwhats diverge num ponto (o banco segue o universal — pgdev isolado):

  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.

Histórico: por um período o dev apontou para o banco real newwhats na 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_dev no pgdev), 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 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.

Conexões — credenciais no docker-compose.dev.yml

  • Banco (isolado): postgresql://devadmin:<senha>@pgdev:5432/newwhats_dev — banco newwhats_dev no container pgdev (VPS4, rede docker soc; o backend-dev precisa estar na rede soc para resolver o DNS pgdev). É um clone dos dados reais (~92k messages, ~10k contacts), feito com pg_dump do newwhats (VPS3) → pg_restore --no-owner --no-privileges no pgdev. Para repuxar/zerar, ver scripts em /home/deploy/stack/pg-dev/ (padrão _dev/_ref do 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 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.