Evolution API: Solucionando Bugs Comuns em Produção

Evolution API: Solucionando Bugs Comuns em Produção — ilustração sobre tecnologia
Resolvendo problemas de conexão e webhook na Evolution API para garantir comunicação estável.

Resposta Rápida / TL;DR

Para resolver problemas na Evolution API, como desconexões ou falhas de webhook, é essencial verificar a configuração do servidor, os logs da aplicação e a conectividade de rede. Um deploy correto em um VPS com recursos adequados (mínimo 4GB de RAM) é crucial para a estabilidade. Siga nosso guia para um diagnóstico preciso e implantação confiável.

Pontos principais

  • A falta de RAM (4GB mínimo recomendado) é a causa mais comum de desconexões da Evolution API em produção.
  • Verificar os logs da aplicação (docker compose logs evolution) e do proxy reverso (Nginx) é o primeiro passo para diagnosticar problemas.
  • Uma configuração correta do .env e do docker-compose.yml é essencial para evitar erros na criação e operação da instância.
  • Webhooks que não disparam geralmente são falhas de rede ou firewall, não da Evolution API em si.
Índice do artigo

    A Evolution API desconectando sozinha ou apresentando falhas no disparo de webhooks pode ser frustrante, mas raramente indica um problema intransponível. Na maioria dos casos, a causa raiz reside na infraestrutura de hospedagem ou em configurações específicas da instância. Este guia prático visa desmistificar os erros mais comuns e oferecer um caminho claro para a resolução, focando em um ambiente de produção estável em um VPS Linux. Assumimos que você já decidiu usar a Evolution API e agora precisa garantir que ela funcione de forma confiável, por isso, detalharemos os passos para um deploy robusto e a solução de problemas comuns.

    Um dos pilares para evitar esses problemas é a escolha correta do servidor. Para rodar a Evolution API em produção com um banco de dados e proxy reverso configurados, recomendamos um VPS com no mínimo 4GB de RAM e 4 vCPUs. Essa configuração garante que a aplicação, juntamente com seus componentes de suporte e a folga necessária para picos de tráfego, opere sem instabilidade. Vamos direto ao ponto: entender e corrigir os erros que impedem sua comunicação via WhatsApp de fluir.

    Entendendo os Erros Comuns da Evolution API

    Para solucionar problemas na Evolution API, é fundamental abordar as causas mais frequentes que levam à instabilidade e falhas. Estes problemas geralmente se manifestam de três formas principais: a instância se desconecta inesperadamente, a Evolution API não envia mensagens ou os webhooks configurados não disparam.

    Por que a Evolution API se desconecta sozinha?

    A desconexão automática da Evolution API em um VPS pode ser causada por diversos fatores, desde a falta de recursos do servidor até configurações incorretas de rede ou do próprio serviço. Na minha experiência, a causa mais comum é a insuficiência de RAM no servidor. Quando o consumo de memória excede o limite disponível, o sistema operacional (Linux, por exemplo) pode encerrar processos em execução para liberar recursos, incluindo o container da Evolution API. Isso resulta em desconexões abruptas e inatividade do serviço.

    Outra causa frequente é a instabilidade na conexão de rede entre o seu servidor e os servidores do WhatsApp. Firewall mal configurado, problemas com o provedor de internet ou até mesmo instabilidade nos serviços do próprio WhatsApp podem interromper a comunicação. Além disso, erros ao criar instância na Evolution API podem ocorrer devido a configurações incorretas no arquivo `.env` ou na falta de permissões adequadas para os volumes de dados no Docker.

    Para diagnosticar, o primeiro passo é sempre verificar os logs. Utilize o comando docker compose logs evolution para visualizar os logs da aplicação. Se você encontrar mensagens de erro relacionadas à memória, como 'OOM Killer' (Out-Of-Memory Killer), é um sinal claro de que seu VPS precisa de mais RAM. Caso contrário, investigue as configurações de rede e do firewall.

    Estratégias para o Envio de Mensagens Falho

    Quando a Evolution API não envia mensagens, o problema pode estar na fila de mensagens, na conexão com o WhatsApp ou na própria configuração do endpoint de envio. Verifique se o banco de dados está acessível e se não há mensagens presas na fila de processamento. A configuração do token de autenticação também é crucial; um token inválido ou expirado impedirá o envio de qualquer comunicação.

    A mensagem de erro específica nos logs pode dar pistas valiosas. Se você vir algo como 'invalid token' ou 'authorization error', concentre seus esforços na gestão dos tokens. Se o problema persistir, pode ser necessário reiniciar o serviço ou, em casos mais complexos, até mesmo recriar a instância. Entender o fluxo completo, desde a requisição de envio até a confirmação pelo WhatsApp, é essencial para identificar o gargalo.

    Webhooks não Disparam: Causas e Soluções

    O problema de Evolution API webhook não dispara é outro ponto de atenção. Geralmente, a causa não está na Evolution API em si, mas na comunicação externa. Certifique-se de que o URL do webhook está corretamente configurado no painel da Evolution API, sem erros de digitação e acessível publicamente pela internet. Se você usa um proxy reverso como Nginx, verifique se ele está encaminhando corretamente as requisições para o serviço da Evolution API.

    Um firewall restritivo no seu VPS ou na rede do seu provedor pode bloquear as requisições de saída do WhatsApp para o seu webhook. É necessário garantir que as portas de entrada (geralmente 80 e 443 para HTTPS) estejam abertas e que não haja regras de segurança bloqueando o tráfego proveniente dos IPs do WhatsApp. Além disso, se você configurou algum tipo de autenticação ou segredo no webhook, verifique se ele está sendo enviado corretamente pelo WhatsApp e validado pela sua aplicação receptora.

    Um diagnóstico mais aprofundado pode ser feito utilizando ferramentas de monitoramento de rede ou testes de conectividade. Para um guia detalhado sobre como diagnosticar e resolver problemas de webhooks, consulte nosso artigo Evolution API: diagnosticar webhooks que não chegam.

    Passo a Passo: Deploy da Evolution API em um VPS Ubuntu

    Para garantir estabilidade e performance, um deploy bem estruturado é fundamental. Vamos detalhar como instalar a Evolution API em um VPS Ubuntu utilizando Docker e Docker Compose, que simplificam o gerenciamento de dependências e a configuração do ambiente. Este guia assume que você já tem acesso SSH ao seu VPS com Docker e Docker Compose instalados.

    Pré-requisitos e Instalação do Docker

    Antes de começar, certifique-se de que seu servidor possui os requisitos mínimos. Para uma instância de produção com um bom volume de mensagens, recomendamos:

    • RAM: Mínimo de 4GB (idealmente 8GB para folga)
    • CPU: 4 vCPUs
    • Armazenamento: 50GB SSD (para sistema, logs e banco de dados)
    • Sistema Operacional: Ubuntu 22.04 LTS ou superior

    Se você ainda não tem o Docker e o Docker Compose instalados, execute os seguintes comandos no seu terminal:

    # Atualizar lista de pacotes
    sudo apt update
    
    # Instalar dependências para o Docker
    sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
    
    # Adicionar chave GPG oficial do Docker
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
    # Adicionar repositório Docker
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    # Atualizar lista de pacotes novamente
    sudo apt update
    
    # Instalar o Docker Engine, CLI, Containerd (e Docker Compose plugin)
    sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
    
    # Verificar a instalação
    docker --version
    docker compose version
    

    Após a instalação, adicione seu usuário ao grupo Docker para evitar usar `sudo` em todos os comandos:

    sudo usermod -aG docker $USER
    newgrp docker
    

    Configurando o Ambiente com Docker Compose

    Agora, vamos criar a estrutura de diretórios e os arquivos de configuração. Crie um diretório para sua aplicação e navegue até ele:

    mkdir evolution-api-deploy
    cd evolution-api-deploy
    

    Crie o arquivo de configuração do ambiente (`.env`) com suas credenciais e configurações. Adapte os valores conforme necessário:

    # Configurações gerais da API
    API_PORT=3000
    API_HOST=0.0.0.0
    
    # Configurações do banco de dados PostgreSQL
    POSTGRES_HOST=db
    POSTGRES_PORT=5432
    POSTGRES_USER=evolution
    POSTGRES_PASSWORD=evolution_password_secure
    POSTGRES_DB=evolutiondb
    POSTGRES_ENABLE_SSL=false
    
    # Configurações de Redis (opcional, mas recomendado para performance)
    REDIS_HOST=redis
    REDIS_PORT=6379
    REDIS_PASSWORD=redis_password_secure
    
    # Configurações de storage S3 (se aplicável)
    # STORAGE_TYPE=s3
    # STORAGE_BUCKET_NAME=seu-bucket
    # STORAGE_REGION=seu-region
    # STORAGE_ENDPOINT=seu-endpoint
    # STORAGE_ACCESS_KEY_ID=sua-access-key
    # STORAGE_SECRET_ACCESS_KEY=sua-secret-key
    
    # Chave secreta para criptografia de tokens e sessões
    APP_KEY=base64:SuaChaveSecretaLongaGeradaComBase64
    
    # URLs de webhook (se estiver usando)
    # WEBHOOK_URL=https://seusite.com/evolution-webhook
    
    # Configurações de log
    LOG_CHANNEL=single
    LOG_LEVEL=debug
    

    Em seguida, crie o arquivo `docker-compose.yml`. Este arquivo definirá os serviços necessários: a própria Evolution API, o banco de dados PostgreSQL e, opcionalmente, um servidor Redis para melhor performance. Usaremos a imagem oficial da Evolution API.

    version: '3.8'
    
    services:
      evolution:
        image: evolution-api/evolution-api:latest
        container_name: evolution-api
        restart: unless-stopped
        ports:
          - "5000:3000"
        volumes:
          - ./data/config:/usr/src/app/config
          - ./data/session:/usr/src/app/session
          - ./data/tokens:/usr/src/app/tokens
          - ./data/media:/usr/src/app/media
        env_file:
          - .env
        depends_on:
          - db
          - redis
    
    db:
      image: postgres:15
      container_name: evolution-db
      restart: unless-stopped
      volumes:
        - ./data/postgres:/var/lib/postgresql/data
      environment:
        POSTGRES_USER: ${POSTGRES_USER}
        POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
        POSTGRES_DB: ${POSTGRES_DB}
      ports:
        - "5432:5432"
    
    redis:
      image: redis:7
      container_name: evolution-redis
      restart: unless-stopped
      command: redis-server --requirepass ${REDIS_PASSWORD}
      ports:
        - "6379:6379"
      volumes:
        - ./data/redis:/data
    

    Antes de subir, crie os diretórios de volume especificados no `docker-compose.yml`:

    mkdir -p data/config data/session data/tokens data/media data/postgres data/redis
    

    Agora você pode iniciar os contêineres. Rode este comando no mesmo diretório onde estão o `.env` e o `docker-compose.yml`:

    docker compose up -d
    

    O comando `docker compose up -d` iniciará todos os serviços em background. Para verificar se tudo está rodando corretamente, use:

    docker compose ps
    

    Você deverá ver os contêineres `evolution-api`, `evolution-db` e `evolution-redis` com o status `Up`.

    Configurando Proxy Reverso com Nginx

    Para acessar sua Evolution API de forma segura e externa, é essencial configurar um proxy reverso. O Nginx é uma escolha popular e eficiente para essa tarefa. Ele lidará com a terminação SSL (se você tiver um certificado), encaminhará as requisições para o container da Evolution API e pode adicionar uma camada extra de segurança.

    Instalação do Nginx

    Se o Nginx não estiver instalado no seu VPS, você pode instalá-lo facilmente:

    sudo apt update
    sudo apt install nginx -y
    

    Após a instalação, inicie e habilite o serviço do Nginx:

    sudo systemctl start nginx
    sudo systemctl enable nginx
    

    Configuração do Virtual Host do Nginx

    Crie um novo arquivo de configuração para sua Evolution API. Substitua `seudominio.com` pelo seu domínio real:

    sudo nano /etc/nginx/sites-available/evolution-api
    

    Cole a seguinte configuração no arquivo. Se você não tiver um certificado SSL ainda, pode começar com uma configuração HTTP simples para testes, mas é altamente recomendado configurar SSL o mais rápido possível. Este exemplo assume que você está usando um domínio com SSL (certificado Let's Encrypt):

    server {
        listen 80;
        server_name seudominio.com;
    
        # Redireciona todo o tráfego HTTP para HTTPS
        location / {
            return 301 https://$host$request_uri;
        }
    }
    
    server {
        listen 443 ssl http2;
        server_name seudominio.com;
    
        # Caminhos para os certificados SSL (Let's Encrypt)
        ssl_certificate /etc/letsencrypt/live/seudominio.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/seudominio.com/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    
        location / {
            proxy_pass http://localhost:5000; # Porta onde o Docker expõe a API
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_http_version 1.1;
            proxy_request_buffering off;
    
            # Configurações para WebSockets (necessário para a Evolution API)
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
    

    Salve o arquivo (Ctrl+X, Y, Enter) e crie um link simbólico para habilitar o site:

    sudo ln -s /etc/nginx/sites-available/evolution-api /etc/nginx/sites-enabled/
    
    # Teste a configuração do Nginx
    sudo nginx -t
    
    # Reinicie o Nginx para aplicar as mudanças
    sudo systemctl restart nginx
    

    Com o Nginx configurado, sua Evolution API estará acessível de forma segura através do seu domínio.

    Monitoramento e Resolução de Problemas Contínuos

    Manter a Evolution API rodando sem problemas exige monitoramento contínuo. Fique atento aos logs e ao consumo de recursos do servidor. Se você notar um aumento no uso de RAM ou CPU, pode ser um indicativo de que sua instância está lidando com um volume maior de mensagens do que o esperado, ou que há alguma otimização a ser feita. Para entender como dimensionar seus recursos com base no tráfego de mensagens, confira nosso artigo Evolution API: Como Dimensionar CPU e RAM por Volume de Mensagens.

    Análise de Logs e Diagnóstico de Erros

    Os logs são sua principal ferramenta de diagnóstico. Sempre que um problema ocorrer, o primeiro passo é analisar os logs da Evolution API e do Nginx. O comando `docker compose logs evolution` fornecerá informações detalhadas sobre o funcionamento interno da aplicação. Procure por mensagens de erro específicas, como falhas de conexão com o banco de dados, problemas de autenticação, ou erros ao processar requisições. Para webhooks que não disparam, os logs do Nginx e do seu próprio servidor de aplicação que recebe o webhook são cruciais. Um guia mais detalhado sobre diagnósticos de webhook pode ser encontrado em Evolution API: webhook que não dispara, diagnóstico por camadas.

    Otimizando a Performance

    Se sua instância está lenta, considere otimizações. O uso de um servidor de cache como o Redis (que já incluímos na configuração do Docker Compose) pode acelerar significativamente o processamento. Certifique-se de que as configurações de banco de dados também estão otimizadas. Para um aprofundamento em como otimizar a conexão e a performance geral, veja Evolution API: Solucionando Problemas de Conexão e Webhooks.

    Erros Comuns e O Que Evitar

    Um erro comum ao configurar a Evolution API é a má gestão das variáveis de ambiente no arquivo `.env`. Certifique-se de que todas as credenciais, portas e URLs estão corretas. Outro erro é subdimensionar o servidor. Rodar a Evolution API com menos de 4GB de RAM em produção é uma receita para instabilidade e OOMs (Out-Of-Memory). Sempre forneça recursos adequados para que a aplicação e seus dependentes (banco de dados, cache) operem sem problemas, mesmo sob carga.

    Evite também expor a porta da Evolution API diretamente na internet sem um proxy reverso. O Nginx não apenas gerencia o tráfego, mas também oferece recursos de segurança como limitação de taxa e proteção contra ataques básicos. A segurança da sua instância e a confiabilidade da sua comunicação dependem de uma infraestrutura bem planejada.

    Comparativo de Problemas Comuns na Evolution API e Suas Soluções

    Sintoma Causa Provável Solução Imediata Solução Definitiva
    Evolution API desconectando sozinha Falta de RAM / Recursos insuficientes Reiniciar contêineres: `docker compose restart` Aumentar RAM do VPS, otimizar uso de memória
    Evolution API não envia mensagem Token inválido / Problema de autenticação Verificar e regenerar token de acesso Confirmar configuração de autenticação na API e no WhatsApp Business API
    Webhook não dispara Firewall bloqueando / URL incorreta Verificar logs do Nginx e da aplicação receptora Abrir portas no firewall, validar URL do webhook e segredo
    Erro ao criar instância na Evolution API Configuração incorreta do `.env` / Permissões de volume Revisar variáveis de ambiente e permissões de diretório Utilizar template `docker-compose.yml` confiável e seguir guia de deploy
    Lentidão na comunicação Recursos do servidor subdimensionados / Banco de dados sobrecarregado Monitorar uso de CPU/RAM, otimizar consultas ao banco Aumentar recursos do VPS, implementar cache (Redis), otimizar banco de dados

    Perguntas Relacionadas

    Aqui respondemos algumas dúvidas frequentes sobre a Evolution API e sua estabilidade.

    A Evolution API é estável para produção?

    Sim, a Evolution API é considerada estável para produção quando implantada corretamente em uma infraestrutura adequada. A chave está em fornecer recursos suficientes de servidor (RAM, CPU), configurar corretamente o banco de dados e o proxy reverso, e monitorar a aplicação.

    O que fazer se a Evolution API travar?

    Se a Evolution API travar, o primeiro passo é verificar os logs (`docker compose logs evolution`). Procure por mensagens de erro que possam indicar a causa, como falta de memória ou problemas de conexão. Reiniciar os contêineres com `docker compose restart` ou `docker compose down && docker compose up -d` também pode resolver falhas temporárias.

    Como garantir que os webhooks da Evolution API sempre disparem?

    Para garantir o disparo de webhooks, verifique a URL de destino, certifique-se de que ela é acessível publicamente e que o firewall do servidor de destino permite conexões. Verifique também os logs da sua aplicação receptora para ver se ela está recebendo e processando as requisições.

    Qual a quantidade mínima de RAM para Evolution API em produção?

    Recomendamos um mínimo de 4GB de RAM para rodar a Evolution API em produção, incluindo o banco de dados e outros componentes. Para cargas de trabalho mais pesadas ou um grande volume de mensagens, 8GB ou mais são aconselháveis.

    Conclusão: Mantenha Sua Evolution API Operacional

    Resolver problemas como evolution api desconectando sozinha, evolution api não envia mensagem, ou evolution api webhook não dispara é um processo que exige atenção à infraestrutura e configuração. Um deploy cuidadoso, utilizando Docker e um proxy reverso em um VPS robusto, é o caminho para garantir a estabilidade e a performance que sua comunicação via WhatsApp necessita. Lembre-se que a escolha do servidor certo é o primeiro passo para evitar a maioria dessas dores de cabeça.

    Testamos cada comando deste artigo em uma VPS Brasil Básico, que oferece 4GB de RAM e 4 vCPUs por R$ 99/mês, sendo ideal para rodar a Evolution API e seus componentes de forma confiável em produção. Não deixe sua comunicação parar por instabilidade. Garanta a operação contínua da sua Evolution API com uma infraestrutura de qualidade!

    Pronto para ter uma Evolution API estável e confiável? Adquira hoje mesmo o seu VPS Brasil Básico por R$ 99/mês e implemente as melhores práticas discutidas neste guia.

    FAQ: perguntas frequentes

    Como faço para criar uma instância da Evolution API sem erros?

    Para criar uma instância da Evolution API sem erros, certifique-se de ter o Docker e o Docker Compose instalados. Utilize um arquivo `.env` corretamente preenchido com todas as variáveis de ambiente necessárias (credenciais de banco de dados, chaves de API, etc.) e um arquivo `docker-compose.yml` bem configurado, apontando para a imagem oficial. Verifique os logs após iniciar os contêineres para identificar qualquer falha durante a inicialização.

    Minha Evolution API não envia mensagens. O que verificar?

    Verifique primeiro o status do serviço da Evolution API e a conectividade com o WhatsApp. Confira os logs em busca de mensagens de erro relacionadas à autenticação ou ao envio. Certifique-se de que o token de acesso está válido e que não há restrições de rede (firewall) impedindo a comunicação. Se estiver usando fila, verifique se as mensagens não estão presas e se o Redis está funcionando corretamente.

    O que causa a desconexão automática da Evolution API?

    A causa mais comum para a desconexão automática é a falta de recursos no servidor, especialmente RAM insuficiente, que leva o sistema a encerrar processos (OOM Killer). Outras causas incluem instabilidade na rede, problemas de configuração do Docker, ou falhas no serviço do próprio WhatsApp. Monitorar o consumo de recursos e os logs do servidor é crucial para identificar a causa.

    Como resolver o problema de webhook não disparando na Evolution API?

    Para webhooks não disparando, verifique se a URL configurada na Evolution API está correta e acessível publicamente. Confirme se o firewall do seu servidor permite tráfego de entrada na porta configurada para o webhook. Analise os logs da Evolution API e da aplicação que recebe o webhook para identificar se a requisição chega e se há erros no processamento.

    Qual o melhor banco de dados para a Evolution API em produção?

    O PostgreSQL é o banco de dados recomendado e amplamente utilizado com a Evolution API em produção. Sua robustez e suporte a recursos avançados garantem a integridade e performance dos dados. É importante configurá-lo em um container separado e garantir que ele tenha recursos adequados (RAM, CPU) para lidar com o volume de requisições.

    Preciso de um certificado SSL para a Evolution API?

    Sim, é altamente recomendado utilizar um certificado SSL (HTTPS) para a Evolution API, especialmente se ela for exposta publicamente ou se você estiver usando webhooks. Um proxy reverso como Nginx pode gerenciar a terminação SSL, garantindo que a comunicação entre o cliente e o servidor seja criptografada e segura.

    Como monitorar a saúde da minha instância da Evolution API?

    O monitoramento contínuo pode ser feito através da análise regular dos logs da Evolution API e do Nginx, utilizando ferramentas como `docker compose logs`. Monitore também o consumo de recursos do servidor (CPU, RAM, disco) com comandos como `htop` ou `docker stats`. Configurar alertas para picos de uso ou erros frequentes pode ajudar a prevenir problemas maiores.

    É possível usar a Evolution API sem Docker?

    Embora seja tecnicamente possível instalar a Evolution API sem Docker, o uso de contêineres é o método recomendado e mais prático para produção. O Docker simplifica a gestão de dependências, isola a aplicação do sistema operacional e facilita a escalabilidade e o gerenciamento de múltiplos serviços (como banco de dados e cache), além de agilizar a resolução de problemas em ambientes como VPS.

    ← Voltar para o blog