Files
Documentos-Unicos/desuso/newwhats_Deploy_VPS_Flow_2026-06-17.md
2026-06-17 17:31:50 +02:00

100 lines
4.9 KiB
Markdown

> ⚠️ EM DESUSO desde 2026-06-17 — consolidado em /home/deploy/stack/documentos-unicos/ (ver LEIA-PRIMEIRO.md). Mantido só como histórico; NÃO usar como referência.
---
# 🚀 Fluxo de Deploy Multi-VPS (VPS 1, VPS 3 e VPS 4)
Este guia descreve detalhadamente o fluxo GitOps e despacho de arquivos compilados entre os servidores do ecossistema NewWhats.
---
## 🗺️ Mapa de Papéis dos Servidores
```
[ VPS 4: Builder ] ───(git push)───► [ VPS 3: Git/DB ]
│ ▲
│ │
(rsync compiles) (DB Connections)
│ │
▼ │
[ VPS 1: Produção ] ───────────────────────────┘
```
| Servidor | IP VPN | Função Principal | Fluxo de Código |
|---|---|---|---|
| **VPS 1 (App Server)** | `10.99.0.1` | Execução em Produção | Recebe os arquivos compilados da VPS 4 |
| **VPS 3 (Data Server)** | `10.99.0.3` | Banco PostgreSQL & Gitea | Centraliza o Git e o banco de dados |
| **VPS 4 (Build Server)**| `10.99.0.4` | Desenvolvimento & Compilação | Compila a plataforma e despacha via Rsync |
---
## 🔄 Fluxo de Deploy Passo a Passo
O ciclo de deploy adota o modelo **Builder-to-Host** para garantir que servidores de execução de produção (VPS 1) não consumam recursos excessivos de CPU com compilações pesadas de Webpack/Next.js e TypeScript.
```mermaid
sequenceDiagram
participant Dev as Desenvolvedor (VPS 4)
participant Gitea as Gitea (VPS 3)
participant Builder as Build Process (VPS 4)
participant Prod as Produção Docker (VPS 1)
Dev->>Gitea: git push origin main
Dev->>Builder: Executa deploy-prod-builder.sh
Builder->>Gitea: git fetch & reset --hard
Builder->>Builder: Incrementa versão (update-version.js)
Builder->>Builder: Compila Backend, Plugins & Frontend
Builder->>Prod: rsync /dist e /node_modules
Builder->>Prod: ssh restart containers
Builder->>Gitea: git push (version bump)
```
---
## 🖥️ Detalhamento por Máquina
### 1️⃣ VPS 4 — O Motor de Compilação (Build / Builder)
Todas as modificações de código e atualizações são criadas e validadas nesta máquina.
1. O desenvolvedor realiza as alterações no código local.
2. Faz o commit e envia para a VPS 3:
```bash
git add .
git commit -m "feat: minha nova funcionalidade"
git push origin main
```
3. Executa o script centralizador de deploy:
```bash
bash /home/deploy/stack/clube67/deploy-prod-builder.sh
```
* *O script limpa e reseta a pasta local para bater com a origin/main.*
* *Roda `update-version.js` para incrementar o build (ex: `v1.0.9 (build #9)`).*
* *Compila o backend, gera tipos Prisma, compila plugins e roda `next build`.*
4. **Sincronizar o incremento de versão no Gitea (Obrigatório):**
Após o deploy com sucesso, os arquivos de versão estarão alterados localmente. É vital comitá-los para não apagar o contador de deploys no Gitea na próxima execução:
```bash
git add deploys.json version.json frontend/public/deploys.json frontend/public/version.json
git commit -m "chore(deploy): bump version"
git push origin main
```
### 2️⃣ VPS 3 — O Orquestrador e Repositório (Git & Banco de Dados)
A VPS 3 é o coração dos dados do ecossistema. Ela roda o banco PostgreSQL diretamente no host e serve o Gitea.
* **Recebimento de Alterações (Push):** Quando a VPS 4 faz `git push`, a VPS 3 valida a autenticação de chaves SSH ou JWT e atualiza o branch `main`.
* **Disponibilização (Pull):** Durante o deploy automático, a VPS 4 executa `git fetch` e `git reset` apontando de volta para a VPS 3 para garantir consistência.
### 3️⃣ VPS 1 — O Servidor de Produção (App Server)
A VPS 1 roda os containers Docker `newwhats-backend-prod` e `newwhats-frontend-prod`.
* **Sem Compilação Local:** Ela nunca roda `npm run build` ou instala dependências de desenvolvimento.
* **Recebimento de Binários:** O script da VPS 4 envia apenas as pastas `/dist`, `/node_modules`, `package.json` e os arquivos do frontend prontos (`.next/`, `/public/`) via **rsync** de alta velocidade.
* **Reinício de Containers:** Após os arquivos serem transferidos para a pasta local da VPS 1, a VPS 4 faz um comando SSH seguro que dispara:
```bash
docker compose restart newwhats-backend-prod newwhats-frontend-prod
```
---
## 🚦 Boas Práticas e Resolução de Conflitos
* **Nunca altere código diretamente na VPS 1:** Qualquer edição em produção será apagada no próximo deploy, pois o `rsync --delete` substitui todos os arquivos pelos compilados na VPS 4.
* **Commite antes de Buildar:** Lembre-se sempre de subir suas alterações para o Gitea (`git push`) antes de rodar o deploy-prod-builder.sh, pois o script reseta a árvore de diretórios local para bater com o Git remoto.