Como rodar múltiplas instâncias da Evolution API num servidor
A Evolution API suporta múltiplas instâncias por design — cada instância corresponde a um número de WhatsApp diferente. Você não precisa de múltiplos containers: um único servidor da Evolution API gerencia dezenas de instâncias simultâneas. O limite prático é RAM disponível (cada instância usa aproximadamente 80–150 MB em idle) e a estabilidade da conexão WebSocket.
Como a Evolution API gerencia instâncias
Cada instância é uma sessão WhatsApp independente. A Evolution API mantém a sessão em memória enquanto o container está rodando e, com PostgreSQL habilitado, persiste em banco para sobreviver a restarts. Instâncias são criadas, conectadas e desconectadas via API REST — sem reiniciar o container.
Criar e conectar múltiplas instâncias via API
O fluxo para cada número: criar a instância, gerar o QR code e escanear com o WhatsApp do número correspondente:
# Criar a instância (repita para cada número)
curl -X POST "https://seu-servidor/instance/create" \
-H "apikey: sua-chave-api" \
-H "Content-Type: application/json" \
-d '{"instanceName": "numero-cliente-01", "qrcode": true}'
# Gerar o QR code para conexão
curl -X GET "https://seu-servidor/instance/connect/numero-cliente-01" \
-H "apikey: sua-chave-api"
# O QR code vem em base64 — renderize-o ou use o Evolution Manager
# Listar todas as instâncias e seus estados
curl -X GET "https://seu-servidor/instance/fetchInstances" \
-H "apikey: sua-chave-api"Recursos necessários por instância
O consumo de recursos varia conforme o volume de mensagens e número de grupos. Estimativas práticas:
PostgreSQL obrigatório para múltiplas instâncias em produção
Com múltiplas instâncias, o banco de dados é crítico para persistir todas as sessões. Sem PostgreSQL, um restart do container desconecta todas as instâncias simultaneamente — cada número precisaria escanear o QR code novamente.
# Configuração de banco no docker-compose.yml (com múltiplas instâncias)
services:
evolution:
image: atendai/evolution-api:latest
restart: always
environment:
- DATABASE_ENABLED=true
- DATABASE_CONNECTION_URI=postgresql://evolution:senha@postgres:5432/evolution
- REDIS_ENABLED=true
- REDIS_URI=redis://redis:6379
# Autenticação global da API
- AUTHENTICATION_TYPE=apikey
- AUTHENTICATION_API_KEY=sua-chave-global
# Permite que cada instância tenha seu próprio token
- AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=trueMonitorar o estado de todas as instâncias
Para checar quais instâncias estão conectadas e quais caíram:
# Listar instâncias com estado de conexão
curl -X GET "https://seu-servidor/instance/fetchInstances" \
-H "apikey: sua-chave-api" | \
python3 -c "
import sys, json
data = json.load(sys.stdin)
for inst in data:
name = inst.get('instance', {}).get('instanceName', '?')
state = inst.get('instance', {}).get('connectionStatus', '?')
print(f'{name}: {state}')
"$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o Evolution API em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.
Perguntas frequentes
Conteúdos relacionados
[VERIFICAR antes de publicar]
- 1. Confirme o endpoint DELETE /instance/delete/{instanceName} na versão instalada — pode ser /instance/logout em algumas versões.
- 2. Confirme o consumo real de RAM por instância na versão atual — pode variar com atualizações da biblioteca Baileys.