Files
Documentos-Unicos/projetos/newwhats.clube67.com/ambiente-dev.md
T
2026-06-28 15:47:46 +02:00

77 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
**só** `/api`, `/socket.io` e `/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 `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.yml`
`Host(dev.newwhats.clube67.com)``http://10.99.0.4:8022` (WireGuard). DNS já resolve (wildcard `*.clube67.com` → VPS1).
## Como subir
```bash
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`.
> ⚠️ **Armadilha (causou 503 no login em 28/jun/2026):** o `frontend/.env.production.local` tinha
> `NEXT_PUBLIC_API_URL=https://clube67.com` (valor de PROD). O Next inlina `NEXT_PUBLIC_*` em **build time**
> e, com `NODE_ENV=production` (caso do container `newwhats-frontend-dev`), carrega `.env.production.local`.
> Rodar `npx next build` **dentro do container sem passar a env** fez o login do dev bater em `clube67.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.local` corrigido para o domínio dev.
## 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`.