Skip to content

Commit 7815a67

Browse files
committed
docs: adiciona documentação do deploy Multi-Device fix
1 parent 5dbf3e9 commit 7815a67

File tree

1 file changed

+282
-0
lines changed

1 file changed

+282
-0
lines changed

DEPLOY-MULTIDEVICE-FIX.md

Lines changed: 282 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,282 @@
1+
# 🚀 Evolution API - Multi-Device Fix
2+
3+
## 📋 Resumo da Alteração
4+
5+
**Problema:** A Evolution API estava caindo/desconectando quando o WhatsApp Android estava ativo, porque se identificava como "WebClient" (WhatsApp Web), ocupando o slot de sessão web.
6+
7+
**Solução:** Remover a identificação de browser para usar o modo Multi-Device nativo do Baileys 7.x, que não conflita com outras sessões.
8+
9+
---
10+
11+
## 🔧 Alteração no Código
12+
13+
### Arquivo: `src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts`
14+
15+
**ANTES (WebClient - CAI):**
16+
```typescript
17+
const session = this.configService.get<ConfigSessionPhone>('CONFIG_SESSION_PHONE');
18+
19+
let browserOptions = {};
20+
21+
if (number || this.phoneNumber) {
22+
this.phoneNumber = number;
23+
this.logger.info(`Phone number: ${number}`);
24+
} else {
25+
const browser: WABrowserDescription = [session.CLIENT, session.NAME, release()];
26+
browserOptions = { browser };
27+
this.logger.info(`Browser: ${browser}`);
28+
}
29+
30+
// ... no socketConfig:
31+
...browserOptions,
32+
```
33+
34+
**DEPOIS (Multi-Device nativo - NÃO CAI):**
35+
```typescript
36+
if (number || this.phoneNumber) {
37+
this.phoneNumber = number;
38+
this.logger.info(`Phone number: ${number}`);
39+
}
40+
41+
// Multi-Device mode: não definimos browser para evitar ser tratado como WebClient
42+
// Isso faz o Baileys usar o modo MD nativo, que não conflita com outras sessões
43+
this.logger.info('Using Multi-Device native mode (no browser identification)');
44+
45+
// ... no socketConfig:
46+
// Removido browserOptions para usar Multi-Device nativo (não WebClient)
47+
```
48+
49+
### Imports removidos:
50+
- `ConfigSessionPhone` do `@config/env.config`
51+
- `WABrowserDescription` do `baileys`
52+
- `release` do `os`
53+
54+
---
55+
56+
## 📦 Repositório Fork
57+
58+
**URL:** https://github.com/joinads/evolution-api
59+
60+
**Commit:** `5dbf3e93` - "fix: usar Multi-Device nativo para evitar desconexões"
61+
62+
---
63+
64+
## 🐳 Deploy na VPS com Docker Compose
65+
66+
### Pré-requisitos
67+
- Docker e Docker Compose instalados
68+
- Acesso SSH à VPS
69+
- Volumes existentes com dados (PostgreSQL, Redis, Instances)
70+
71+
### Volumes Utilizados (externos)
72+
```
73+
evolution-clean_evolution_instances # Dados das instâncias WhatsApp
74+
evolution-clean_evolution_redis # Cache Redis
75+
evolution-clean_postgres_data # Banco de dados PostgreSQL
76+
```
77+
78+
---
79+
80+
## 📝 Comandos de Deploy
81+
82+
### 1. Clone o repositório
83+
```bash
84+
cd ~
85+
git clone https://github.com/joinads/evolution-api.git evolution-api-custom
86+
cd evolution-api-custom
87+
```
88+
89+
### 2. Copie o .env existente
90+
```bash
91+
cp ~/evolution-clean/.env .
92+
```
93+
94+
### 3. Crie o docker-compose.prod.yaml
95+
```bash
96+
cat > docker-compose.prod.yaml << 'EOF'
97+
services:
98+
api:
99+
container_name: evolution_api
100+
build:
101+
context: .
102+
dockerfile: Dockerfile
103+
image: evolution-api:v2.3.4-multidevice
104+
restart: always
105+
depends_on:
106+
- redis
107+
- postgres
108+
ports:
109+
- 8080:8080
110+
volumes:
111+
- evolution-clean_evolution_instances:/evolution/instances
112+
networks:
113+
- evolution-net
114+
env_file:
115+
- .env
116+
expose:
117+
- 8080
118+
119+
redis:
120+
image: redis:latest
121+
networks:
122+
- evolution-net
123+
container_name: redis
124+
command: >
125+
redis-server --port 6379 --appendonly yes
126+
volumes:
127+
- evolution-clean_evolution_redis:/data
128+
ports:
129+
- 6379:6379
130+
131+
postgres:
132+
container_name: postgres
133+
image: postgres:15
134+
networks:
135+
- evolution-net
136+
command: ["postgres", "-c", "max_connections=1000", "-c", "listen_addresses=*"]
137+
restart: always
138+
ports:
139+
- 5432:5432
140+
environment:
141+
- POSTGRES_USER=caio
142+
- POSTGRES_PASSWORD=caio123
143+
- POSTGRES_DB=evolution
144+
- POSTGRES_HOST_AUTH_METHOD=trust
145+
volumes:
146+
- evolution-clean_postgres_data:/var/lib/postgresql/data
147+
expose:
148+
- 5432
149+
150+
volumes:
151+
evolution-clean_evolution_instances:
152+
external: true
153+
evolution-clean_evolution_redis:
154+
external: true
155+
evolution-clean_postgres_data:
156+
external: true
157+
158+
networks:
159+
evolution-net:
160+
name: evolution-net
161+
driver: bridge
162+
EOF
163+
```
164+
165+
### 4. Pare a Evolution antiga (se estiver rodando)
166+
```bash
167+
cd ~/evolution-clean
168+
docker-compose down
169+
```
170+
171+
### 5. Build da nova imagem
172+
```bash
173+
cd ~/evolution-api-custom
174+
docker-compose -f docker-compose.prod.yaml build --no-cache
175+
```
176+
177+
### 6. Suba os containers
178+
```bash
179+
docker-compose -f docker-compose.prod.yaml up -d
180+
```
181+
182+
### 7. Verifique os logs
183+
```bash
184+
docker-compose -f docker-compose.prod.yaml logs -f api
185+
```
186+
187+
---
188+
189+
## 🔄 Comandos Úteis
190+
191+
### Ver status dos containers
192+
```bash
193+
docker-compose -f docker-compose.prod.yaml ps
194+
```
195+
196+
### Reiniciar a API
197+
```bash
198+
docker-compose -f docker-compose.prod.yaml restart api
199+
```
200+
201+
### Ver logs em tempo real
202+
```bash
203+
docker-compose -f docker-compose.prod.yaml logs -f api
204+
```
205+
206+
### Parar todos os containers
207+
```bash
208+
docker-compose -f docker-compose.prod.yaml down
209+
```
210+
211+
### Rebuild após alterações no código
212+
```bash
213+
git pull origin main
214+
docker-compose -f docker-compose.prod.yaml build --no-cache
215+
docker-compose -f docker-compose.prod.yaml up -d
216+
```
217+
218+
---
219+
220+
## 🔍 Verificar se o Fix está Funcionando
221+
222+
Nos logs da API, você deve ver:
223+
```
224+
Using Multi-Device native mode (no browser identification)
225+
```
226+
227+
**NÃO deve mais aparecer:**
228+
```
229+
Browser: ['Evolution API', 'Chrome', ...]
230+
```
231+
232+
---
233+
234+
## ⚠️ Notas Importantes
235+
236+
1. **Instâncias existentes:** Continuam funcionando normalmente. As credenciais salvas não dependem do parâmetro `browser`.
237+
238+
2. **Novas conexões:** Usarão o modo Multi-Device nativo automaticamente.
239+
240+
3. **Se uma sessão expirar:** Ao reconectar via QR Code, já usará o novo modo.
241+
242+
4. **Volumes externos:** O docker-compose usa `external: true` para apontar para os volumes existentes, preservando todos os dados.
243+
244+
---
245+
246+
## 📊 Comparação: Antes vs Depois
247+
248+
| Aspecto | Antes (v2.3.4 oficial) | Depois (com fix) |
249+
|---------|------------------------|------------------|
250+
| Identificação | `['Evolution API', 'Chrome', OS]` | Nenhuma (MD nativo) |
251+
| Tipo de sessão | WebClient | Multi-Device |
252+
| Aparece como | "WhatsApp Web" | Dispositivo vinculado |
253+
| Conflita com Android | ✅ SIM | ❌ NÃO |
254+
| Cai quando Android ativo | ✅ SIM | ❌ NÃO |
255+
256+
---
257+
258+
## 🆘 Rollback (Voltar para versão oficial)
259+
260+
Se precisar voltar para a versão oficial:
261+
262+
```bash
263+
cd ~/evolution-api-custom
264+
docker-compose -f docker-compose.prod.yaml down
265+
266+
cd ~/evolution-clean
267+
docker-compose up -d
268+
```
269+
270+
---
271+
272+
## 📅 Data da Alteração
273+
**04 de Dezembro de 2025**
274+
275+
## 👤 Autor
276+
Alteração realizada com auxílio de IA (Claude/Cursor)
277+
278+
## 🔗 Links
279+
- Fork: https://github.com/joinads/evolution-api
280+
- Original: https://github.com/EvolutionAPI/evolution-api
281+
- Baileys: https://github.com/WhiskeySockets/Baileys
282+

0 commit comments

Comments
 (0)