Automação
Evolution API em VPS: WhatsApp sem gargalo
Veja como hospedar Evolution API em VPS para WhatsApp, com CPU, RAM, filas, banco, segurança, backups e dimensionamento para produção sem perder filas.
Resposta direta
Para hospedar Evolution API em VPS com automações de WhatsApp em produção, comece pensando em estabilidade, não apenas em instalação. Um ambiente básico costuma funcionar com 2 vCPUs, 4 GB de RAM, 60 GB de SSD e Docker, desde que rode poucas instâncias e tenha banco PostgreSQL bem configurado. Para múltiplos números, webhooks frequentes, integrações com n8n e filas, o ideal é separar API, banco, Redis ou RabbitMQ e monitoramento. Use firewall, HTTPS, variáveis de ambiente protegidas, backups testados e limites de requisição. A Evolution API depende de conexão persistente, sessões e eventos em tempo quase real, então picos de mensagens, reconnects e webhooks lentos podem derrubar a experiência antes mesmo de faltar CPU.
Resumo rápido
- Para produção pequena, use pelo menos 2 vCPUs, 4 GB de RAM e 60 GB de SSD, com swap moderado apenas como proteção emergencial.
- Docker Compose facilita a operação, mas não substitui monitoramento, backup, atualização planejada e controle de logs.
- PostgreSQL deve ficar em volume persistente, com backup diário e teste de restauração, não apenas snapshot do servidor.
- Redis ou RabbitMQ ajudam a absorver picos de eventos, webhooks e tarefas assíncronas sem travar a API.
- Firewall, HTTPS, SSH com chave, fail2ban e portas fechadas reduzem muito o risco operacional.
- Integrações com n8n ficam mais estáveis quando webhooks respondem rápido e tarefas longas vão para filas.
- Cloud Server pode facilitar upgrades e snapshots, mas preço, região, disco e recursos precisam ser conferidos no site oficial antes da contratação.
Como a Evolution API se comporta em produção
A Evolution API costuma ser tratada como um serviço simples: sobe um container, conecta um número, aponta um webhook e começa a automatizar conversas. Em laboratório isso pode ser verdade. Em produção, o comportamento muda bastante, porque a aplicação precisa manter sessões ativas, receber eventos, processar mensagens, encaminhar webhooks e conversar com banco de dados sem perder consistência. O servidor deixa de ser apenas um lugar para instalar Node.js ou Docker. Ele vira a base de uma operação que pode afetar atendimento, vendas, cobrança e suporte.
O que roda dentro do servidor
Em uma instalação comum, você terá pelo menos a Evolution API, um banco PostgreSQL, talvez Redis, um proxy reverso como Nginx ou Traefik e alguma automação externa recebendo webhooks. Se o fluxo usa n8n, faz sentido ler também o guia sobre VPS para n8n em produção, porque os gargalos são parecidos: tarefas assíncronas, webhooks, memória e filas. A diferença é que, no WhatsApp, quedas curtas podem gerar reconexões, eventos duplicados e atraso no atendimento.
Um exemplo prático: uma agência conecta 8 números, cada um recebendo 300 mensagens por dia, com webhook para um CRM e outro para n8n. Parece pouco, mas isso pode virar milhares de eventos diários quando entram status de entrega, leitura, mensagens de mídia, QR Code, reconexões e retries. Se cada webhook demora 2 segundos para responder, a API começa a acumular trabalho. O problema não aparece como um erro único. Ele surge como lentidão, mensagens atrasadas e logs crescendo rápido.
Onde os gargalos aparecem primeiro
O primeiro gargalo costuma ser memória. Containers Node.js, banco de dados e proxy podem consumir mais RAM do que o esperado em picos, principalmente quando há muitas sessões, mídia e logs verbosos. Depois vem disco, não apenas por espaço, mas por I/O. Um SSD lento ou saturado afeta PostgreSQL, escrita de logs e restauração. CPU normalmente aparece quando há muitos eventos simultâneos, criptografia TLS, compressão, processamento de mídia ou integrações mal desenhadas.
Também existe um gargalo invisível: dependência externa. A automação pode estar perfeita, mas se o endpoint que recebe o webhook fica indisponível, a Evolution API precisa lidar com erro, retry ou fila. Por isso, hospedar a API em uma VPS exige pensar no fluxo completo. O servidor precisa responder rápido, persistir dados com segurança e falhar de modo previsível quando algo externo sai do ar.
Dimensionamento de CPU, RAM, disco e rede
Dimensionar uma VPS para Evolution API não é escolher o plano mais barato que sobe o Docker. O ponto é estimar quantas instâncias, quantos webhooks, quanto tráfego de mídia e qual tolerância a atraso você aceita. Uma instalação com 1 ou 2 números de teste pode rodar em 1 vCPU e 2 GB de RAM, mas esse perfil não deve ser tratado como produção. Para uso real, 2 vCPUs e 4 GB de RAM dão uma margem mais confortável para API, banco, proxy e pequenos picos. Se houver n8n na mesma máquina, considere 4 vCPUs e 8 GB de RAM.
Configuração inicial segura
Uma base equilibrada para pequena produção seria 2 vCPUs, 4 GB de RAM, 60 GB de SSD, Ubuntu LTS, Docker, Docker Compose, Nginx ou Traefik, PostgreSQL em volume persistente e backup diário externo. Configure swap de 1 a 2 GB apenas para evitar queda brusca em pico curto, não para compensar falta de memória. Swap constante é sinal de servidor subdimensionado. Em disco, separe pelo menos 20 GB para sistema, 20 GB para banco e volumes, e uma margem para logs, imagens temporárias e atualizações.
Um exemplo de Compose bem organizado usa serviços separados para api, postgres, redis e proxy. O banco deve ter volume nomeado ou bind mount em diretório controlado, como /opt/evolution/postgres. Logs podem ir para driver com rotação, por exemplo max-size=50m e max-file=5. Sem rotação, um erro repetido em webhook pode consumir dezenas de gigabytes em poucos dias. Isso é mais comum do que parece em ambientes com integrações instáveis.
Quando subir recursos
Suba para 4 vCPUs e 8 GB de RAM quando o servidor tiver mais de 5 a 10 instâncias ativas, muitos webhooks por mensagem, automações rodando no mesmo host ou banco com crescimento acelerado. Para operações com 20 ou mais números, considere separar banco e filas em outro servidor ou usar serviço gerenciado, se o orçamento permitir. Nesse ponto, não é apenas questão de CPU. Você ganha isolamento, manutenção mais simples e menor risco de uma carga derrubar tudo.
Rede também precisa entrar na conta. Mensagens de texto consomem pouco, mas mídia muda o cenário. Imagens, áudios e documentos podem aumentar tráfego e uso de disco temporário. Para público brasileiro, datacenter no Brasil pode reduzir latência entre usuários, CRM e automações locais. Ainda assim, latência menor não resolve webhook lento nem banco mal configurado. Ela ajuda, mas não faz milagre. Antes de contratar, confira região, franquia de tráfego, tipo de armazenamento e política de backup no site oficial do provedor, porque esses dados variam por plano e localidade.
Arquitetura recomendada com filas, banco e automações
A arquitetura mais segura para Evolution API em produção separa responsabilidades. A API recebe eventos e mantém sessões. O banco persiste estado e configurações. Uma fila absorve picos. Workers processam tarefas demoradas. O proxy cuida de HTTPS e roteamento. Esse desenho evita que uma automação lenta bloqueie a entrada de novas mensagens. Parece mais trabalhoso no início, mas reduz incidentes quando o volume cresce.
Separar API, banco e workers
Em um ambiente pequeno, todos os serviços podem rodar na mesma VPS via Docker Compose. Mesmo assim, eles devem ser separados em containers diferentes. Não misture API e banco no mesmo container. Não grave dados importantes em camada efêmera. Não dependa de comandos manuais para subir tudo após reboot. Use restart: unless-stopped, healthchecks e volumes persistentes. Um Compose com rede interna também evita expor PostgreSQL e Redis à internet.
Quando o volume aumenta, a primeira separação costuma ser banco. Colocar PostgreSQL em um servidor próprio reduz disputa por memória e I/O. Depois, separar workers e filas melhora previsibilidade. Se a sua automação usa RabbitMQ, o guia de VPS para RabbitMQ e filas de mensagens ajuda a pensar em persistência, acknowledgements, dead letter queues e limites de consumo. Para WhatsApp, isso é útil quando o CRM cai, a API de pagamento demora ou o n8n precisa fazer várias chamadas antes de responder.
Webhooks, retries e controle de carga
Um erro frequente é fazer o webhook executar tudo de uma vez: consultar cliente, chamar IA, gravar CRM, emitir boleto e responder mensagem. Esse fluxo parece elegante, mas cria dependência em cadeia. Se qualquer API demora, a fila interna cresce. Uma abordagem melhor é responder rapidamente ao webhook, salvar o evento e processar o restante em background. O tempo ideal de resposta do webhook deve ficar abaixo de 500 ms quando possível, principalmente em eventos simples.
Um fluxo prático: Evolution API recebe a mensagem, envia webhook para um endpoint leve, esse endpoint grava o evento no PostgreSQL ou publica em Redis/RabbitMQ, e um worker processa a regra de negócio. Se a API do CRM estiver fora, a mensagem não some. Ela fica em retry controlado, com limite e log. Para evitar duplicidade, use idempotência baseada em identificador de mensagem, número e timestamp. Isso impede que retries criem vários tickets para a mesma conversa.
Também faz sentido limitar concorrência. Um worker processando 5 mensagens por vez pode ser mais confiável do que 50 workers brigando por CPU e banco. Em campanhas, lembre que automação de WhatsApp envolve políticas da plataforma e risco de bloqueio se usada para spam. Infraestrutura boa não torna prática abusiva aceitável. O desenho técnico deve proteger estabilidade, rastreabilidade e conformidade do fluxo.
Segurança, hardening e isolamento do ambiente
Evolution API lida com sessões, tokens, webhooks e dados de conversas. Isso exige cuidado maior que um projeto de teste. O servidor não deve expor portas desnecessárias, o painel não deve ficar aberto sem proteção e segredos não devem aparecer em repositório, logs ou prints. Uma VPS invadida pode comprometer números, integrações, credenciais de CRM e dados de clientes. O risco não é teórico. Serviços com Docker, Redis e bancos expostos na internet são alvos comuns de varredura automatizada.
Acesso, firewall e portas
Comece pelo básico bem feito: SSH com chave, senha desabilitada, usuário sem root direto, firewall permitindo apenas 22, 80 e 443, além de portas internas fechadas. Se possível, restrinja SSH por IP ou use VPN. Instale fail2ban para reduzir tentativas repetidas. PostgreSQL, Redis e RabbitMQ não devem ficar públicos. Eles precisam trafegar em rede interna do Docker ou interface privada. Para uma lista prática de medidas, o artigo sobre VPS com firewall e hardening de segurança aprofunda regras, acesso SSH e proteção de serviços.
HTTPS é obrigatório. Use certificados via Let’s Encrypt com renovação automática. No Nginx, defina headers básicos, limite tamanho de upload conforme necessidade e configure timeout realista. Mensagens com mídia podem exigir limites maiores, mas não abra tudo sem critério. Um client_max_body_size de 20 MB pode servir para muitos casos, enquanto fluxos com documentos pesados talvez precisem mais. Ajuste com base no uso real.
Segredos, backups e restauração
Variáveis como tokens, senhas de banco e chaves de API devem ficar em .env fora do Git, com permissão restrita. Nunca cole chaves em exemplos públicos. Em produção, documente como rotacionar segredos se alguém sair do time ou se uma credencial vazar. Para webhooks, use token de assinatura, header secreto ou lista de IPs quando possível. O endpoint não deve aceitar qualquer chamada anônima como se fosse evento legítimo.
Backup precisa ser testado. Snapshot do servidor ajuda em desastre, mas não substitui dump do PostgreSQL. Um bom mínimo é dump diário, retenção de 7 a 14 dias, cópia fora da VPS e teste mensal de restauração. Se a operação é crítica, reduza janela de perda com backups mais frequentes ou replicação. Também registre versão da Evolution API, imagem Docker usada e variáveis necessárias. Em incidente, saber subir um ambiente limpo em 30 minutos vale mais do que ter arquivos espalhados sem procedimento.
Operação diária, observabilidade e troubleshooting
Depois que a Evolution API está no ar, o trabalho muda de instalação para operação. Você precisa saber se a API está viva, se as sessões estão conectadas, se webhooks estão respondendo, se filas estão crescendo e se o banco ainda tem espaço. Sem observabilidade, o primeiro alerta costuma vir do cliente dizendo que o WhatsApp parou. Esse é o pior tipo de monitoramento, porque o incidente já afetou o negócio.
Logs e métricas que ajudam de verdade
Monitore CPU, RAM, disco, I/O, uso de swap, consumo por container, tamanho do banco, erros HTTP e tempo médio de webhook. Ferramentas simples como Netdata, Uptime Kuma, Prometheus com Grafana ou até logs centralizados já ajudam bastante. Configure alertas para disco acima de 80%, swap em uso contínuo, container reiniciando, endpoint fora do ar e fila crescendo por mais de alguns minutos. Alertas demais cansam, alertas certos salvam o dia.
Um exemplo prático de rotina semanal: verificar docker ps, analisar reinícios, checar docker logs --since 24h, conferir espaço com df -h, revisar tamanho de volumes e testar um webhook manual. A cada atualização da Evolution API, leia changelog, faça backup antes, teste em staging quando possível e tenha plano de rollback. Atualizar direto em produção às 18h de sexta é pedir problema.
Problemas comuns em integrações com WhatsApp
Mensagens duplicadas geralmente indicam retry sem idempotência. Atrasos podem vir de webhook lento, fila sem consumidor suficiente, banco saturado ou API externa demorando. Quedas de sessão podem ter relação com instabilidade, reinícios de container, consumo de memória ou mudanças no fluxo de autenticação. Logs enormes apontam erro repetitivo, nível de log inadequado ou integração em loop.
Também existe o problema de misturar tudo no mesmo servidor. Se n8n, Evolution API, PostgreSQL, Redis, Chrome headless, IA local e painel administrativo rodam em uma VPS pequena, qualquer pico vira disputa. O servidor não sabe que a mensagem do cliente é mais importante que uma tarefa de relatório. Ele só distribui recursos. Por isso, quando o negócio depende do WhatsApp, isole workloads críticos ou pelo menos limite consumo dos containers. Use mem_limit, controle concorrência de workers e agende tarefas pesadas fora do horário de pico.
Em troubleshooting, mude uma coisa por vez. Primeiro confirme saúde do servidor. Depois verifique containers. Em seguida, teste banco, fila, webhook e integração externa. Essa sequência evita trocar provedor quando o problema era um endpoint lento, ou aumentar RAM quando o gargalo era disco cheio. Infraestrutura bem operada é menos sobre adivinhar e mais sobre medir.
Tabela comparativa de perfis de servidor
A escolha do servidor depende do estágio da automação. Uma prova de conceito não precisa do mesmo desenho de uma operação com atendimento comercial em horário integral. A tabela abaixo usa perfis técnicos, não preços, porque valores, promoções, regiões e recursos mudam com frequência e exigem revisão humana antes de publicação. Use os números como ponto de partida para orçamento e teste de carga.
| Perfil de uso | Recursos sugeridos | Componentes no servidor | Quando faz sentido | Pontos de atenção |
|---|---|---|---|---|
| Laboratório e prova de conceito | 1 vCPU, 2 GB RAM, 30 GB SSD | Evolution API, PostgreSQL leve, proxy simples | Testes com 1 número, poucos webhooks e baixo volume | Não recomendado para produção, pouca margem para picos e atualizações |
| Produção pequena | 2 vCPUs, 4 GB RAM, 60 GB SSD | API, PostgreSQL, Redis opcional, Nginx ou Traefik | 1 a 5 números, automações simples, n8n em outro host | Backup externo, rotação de logs, monitoramento e firewall são obrigatórios |
| Produção média | 4 vCPUs, 8 GB RAM, 100 GB SSD ou NVMe conforme plano | API, banco, Redis ou RabbitMQ, workers e monitoramento | 5 a 15 números, CRM, n8n, múltiplos webhooks | Separar banco ou filas pode ser necessário se I/O e memória subirem |
| Operação crítica | 8 vCPUs ou mais, 16 GB RAM ou mais, disco rápido, backup robusto | API em servidor dedicado, banco separado, fila dedicada, observabilidade | Atendimento com SLA interno, muitos números, alto volume de eventos | Exige staging, rollback, testes de restauração e revisão de arquitetura |
Em provedores como DigitalOcean, Vultr, Linode/Akamai, AWS Lightsail, Hetzner, Contabo, Locaweb, Hostinger e LetsCloud, confira região, tipo de disco, limites de tráfego, snapshots, backup, política de uso e suporte antes de decidir. LetsCloud pode fazer sentido quando a operação prioriza presença no Brasil ou proximidade com usuários locais, mas recursos como NVMe, backups, snapshots e localidades específicas precisam ser confirmados por plano no site oficial. Evite comparar somente preço mensal. Para Evolution API, previsibilidade, restauração e latência operacional pesam muito.
Um ponto que passa batido é a localização do n8n ou do CRM. Se a Evolution API está em São Paulo, mas o n8n está na Europa e o CRM nos Estados Unidos, cada webhook atravessa vários caminhos. Pode funcionar, mas a latência acumulada aparece em fluxos com muitas etapas. Em produção, tente manter serviços dependentes próximos ou desenhe filas para absorver variações. Melhor ainda: meça tempos reais com logs de início e fim em cada etapa.
Recomendações por perfil
Dev solo e laboratório
Para um desenvolvedor testando Evolution API, a prioridade é aprender o fluxo sem gastar demais nem criar dívida operacional invisível. Uma VPS de 1 vCPU, 2 GB de RAM e 30 GB de SSD pode servir para laboratório com 1 número, poucos webhooks e banco pequeno. Mesmo nesse cenário, use Docker Compose, domínio com HTTPS e .env fora do Git. Não exponha PostgreSQL ou Redis. Se for integrar com n8n local, limite execuções simultâneas e evite rodar tarefas pesadas no mesmo horário dos testes. Faça backup antes de atualizar a imagem. O objetivo do laboratório é validar lógica, não simular produção perfeita.
Agência ou time pequeno
Agências que atendem vários clientes precisam evitar o erro de colocar todos os números em uma instalação sem isolamento. Uma base com 2 vCPUs, 4 GB de RAM e 60 GB de SSD atende começo de operação, mas organize clientes, tokens e webhooks de forma rastreável. Se um cliente dispara erro em loop, ele não deve derrubar os demais. Use filas para tarefas longas, limite retries e registre eventos com identificador único. Para 5 a 10 números ativos, avalie 4 vCPUs e 8 GB de RAM, principalmente se o n8n ou um CRM interno roda no mesmo servidor. Documente rotinas de suporte, atualização e restauração.
Produção com múltiplas instâncias
Quando WhatsApp vira canal crítico, trate Evolution API como infraestrutura de atendimento. O desenho recomendado usa API em um servidor, PostgreSQL separado ou muito bem provisionado, fila dedicada e monitoramento com alertas. Comece em 4 vCPUs e 8 GB de RAM para a camada de aplicação, mas esteja pronto para escalar verticalmente ou separar componentes. Use staging para testar novas versões, backup com retenção clara, logs com rotação e plano de rollback. Em operações com muitos números, webhooks e integrações externas, o maior ganho não vem de uma VPS enorme. Vem de arquitetura previsível, filas bem configuradas e processos de resposta a incidente.
SaaS, produto interno ou atendimento com SLA
Se a automação atende clientes pagantes ou operação interna com SLA, inclua redundância e governança no planejamento. Tenha ambiente de homologação, controle de acesso por pessoa, registros de mudança e revisão de segredos. Backups devem ser restauráveis em outro servidor, não apenas armazenados. Monitore tempo de resposta por webhook, erros por integração e crescimento de filas. Para workloads sensíveis, considere Cloud Server com upgrade rápido, snapshots sob demanda e região próxima ao público, sempre confirmando recursos no provedor. Também defina limites comerciais. Nem todo cliente deve poder conectar volume ilimitado no mesmo cluster sem ajuste de plano e capacidade.
Quando trocar de plano ou separar serviços
Troque de plano quando houver swap frequente, CPU acima de 70% por longos períodos, disco acima de 80%, filas crescendo sem voltar ao normal ou banco com I/O alto. Separe serviços quando uma atualização da API ameaça o banco, quando um cliente afeta outro ou quando o backup começa a demorar demais. A separação pode ser gradual: primeiro banco, depois fila, depois workers. Esse caminho costuma ser mais eficiente do que migrar tudo para uma máquina gigante. No fim, Evolution API em VPS funciona bem quando o servidor é tratado como plataforma de mensageria, não como hospedagem improvisada para um container.
Perguntas frequentes
Qual VPS mínima para rodar Evolution API em produção?
Para produção pequena, use pelo menos 2 vCPUs, 4 GB de RAM e 60 GB de SSD. Essa configuração comporta Evolution API, PostgreSQL, proxy reverso e um volume moderado de webhooks. Abaixo disso, pode funcionar em testes, mas a margem para picos, atualizações e reconexões fica pequena. Se n8n, Redis ou workers rodam no mesmo servidor, considere 4 vCPUs e 8 GB de RAM. Monitore swap, disco e tempo de resposta dos webhooks antes de decidir que precisa migrar.
Posso rodar Evolution API e n8n na mesma VPS?
Pode, mas isso depende do volume e da criticidade. Para testes ou operação pequena, uma VPS com 4 vCPUs, 8 GB de RAM e SSD costuma dar mais folga para Evolution API, n8n, PostgreSQL e proxy. Em produção, o ideal é separar quando o n8n executa tarefas demoradas, integra muitas APIs ou processa mídia. Se ambos ficarem no mesmo host, limite concorrência, use rotação de logs, monitore memória e evite que workflows pesados disputem recursos com mensagens em tempo real.
RabbitMQ ou Redis são obrigatórios para Evolution API?
Não são obrigatórios em todo projeto, mas ajudam muito quando há picos, webhooks lentos ou tarefas assíncronas. Redis pode servir para cache, controle temporário e filas simples, enquanto RabbitMQ oferece recursos mais completos de mensageria, como acknowledgements, filas duráveis e dead letter queues. Para poucos números e automações simples, talvez o banco e webhooks rápidos sejam suficientes. Para CRM, n8n, IA, cobrança e múltiplas integrações, uma fila reduz perda de eventos e melhora a previsibilidade.
Como proteger uma VPS com Evolution API?
Feche todas as portas que não precisam ser públicas, mantenha apenas SSH, HTTP e HTTPS expostos, e use firewall com regras claras. SSH deve usar chave, senha desabilitada e, se possível, restrição por IP ou VPN. PostgreSQL, Redis e RabbitMQ não devem ficar acessíveis pela internet. Use HTTPS com certificado renovável, segredos em arquivo `.env` fora do Git, tokens nos webhooks e backups criptografados quando possível. Atualizações devem ser planejadas, com backup antes e possibilidade de rollback.
Datacenter no Brasil faz diferença para automação com WhatsApp?
Pode fazer diferença quando seus usuários, CRM, sistemas internos e operadores estão no Brasil, porque a latência tende a ser menor. Isso ajuda em painéis, webhooks e chamadas entre serviços locais. Mesmo assim, datacenter brasileiro não resolve arquitetura ruim, webhook lento ou banco saturado. Se parte do fluxo está nos Estados Unidos ou Europa, meça o caminho completo. A melhor decisão combina latência, estabilidade, custo, backup, suporte, tipo de disco e facilidade de escalar recursos.
Backup por snapshot é suficiente para PostgreSQL?
Snapshot ajuda a recuperar o servidor inteiro, mas não deve ser o único backup do PostgreSQL. Bancos precisam de dumps consistentes, retenção definida e teste de restauração. Um snapshot feito durante escrita intensa pode exigir cuidados adicionais para garantir consistência. Para produção pequena, faça dump diário, mantenha cópia fora da VPS e teste restauração periodicamente. Em operações críticas, reduza a janela de perda com backups mais frequentes, replicação ou serviço gerenciado. Backup que nunca foi restaurado é apenas uma hipótese.
Fontes consultadas
- Evolution API Documentation · coletado em 07/08/2026
- Docker Docs · coletado em 07/08/2026
- PostgreSQL Documentation · coletado em 07/08/2026
- RabbitMQ Documentation · coletado em 07/08/2026