Hospedar Evolution API no Docker: Guia Prático com Nginx Proxy

Hospedar Evolution API no Docker: Guia Prático com Nginx Proxy — ilustração sobre tecnologia
Infraestrutura robusta: Evolution API, Docker e Nginx orquestrados em um VPS para automação WhatsApp eficiente.

Resposta Rápida / TL;DR

Para hospedar a Evolution API no Docker, é preciso configurar um ambiente Linux (preferencialmente Ubuntu) em um VPS, instalar Docker e Docker Compose, e então usar um arquivo docker-compose.yml para orquestrar a API e um banco de dados, geralmente com Nginx como proxy reverso. Este setup garante escalabilidade, segurança e fácil gerenciamento da automação WhatsApp.

Pontos principais

  • A Evolution API pode ser auto-hospedada em um VPS Linux, oferecendo controle total e personalização para automação WhatsApp.
  • A implantação ideal utiliza Docker e Docker Compose para orquestração e Nginx como proxy reverso para segurança e acesso HTTPS.
  • Requisitos mínimos de hardware para produção incluem 4GB de RAM, 4 vCPUs e 40GB de SSD, com Ubuntu Server como SO.
  • A configuração de um docker-compose.yml completo, incluindo Evolution API, PostgreSQL e Nginx, é crucial para o deploy.
Índice do artigo

    A Evolution API roda em um ambiente Docker e requer um VPS Linux com pelo menos 4GB de RAM e 4 vCPUs para produção, utilizando PostgreSQL como banco de dados e Nginx como proxy reverso para acesso seguro. Este guia prático oferece o `docker-compose.yml` completo e os comandos para configurar sua instância da Evolution API em aproximadamente 30 minutos, permitindo que você comece a construir chatbots e automatizar suas interações via WhatsApp API de forma autônoma.

    No cenário atual de comunicação digital, ter uma solução robusta para interagir com clientes via WhatsApp é crucial. A Evolution API surge como uma ferramenta poderosa para criar e gerenciar automações e chatbots no WhatsApp, oferecendo flexibilidade e controle total sobre sua infraestrutura. Diferente de soluções SaaS, a Evolution API pode ser auto-hospedada, garantindo maior privacidade dos dados e personalização. No entanto, para aproveitar ao máximo seus recursos, é fundamental saber como implantá-la e configurá-la corretamente em um ambiente de produção.

    Este artigo detalha o processo de hospedagem da Evolution API em um VPS Linux, utilizando Docker e Docker Compose para orquestração e Nginx como proxy reverso. Esse setup é ideal para quem busca performance, segurança e a liberdade de gerenciar sua própria plataforma de comunicação. Minha experiência, ajudando diversos clientes a escalar suas operações de WhatsApp, mostra que uma arquitetura bem planejada é a chave para o sucesso.

    O que é Evolution API e por que auto-hospedar?

    A Evolution API é uma solução de código aberto que permite a integração programática com o WhatsApp, facilitando a criação de chatbots, sistemas de atendimento automatizado e outras aplicações que se comunicam através da plataforma. Ela atua como um intermediário entre seu software e a API oficial do WhatsApp, abstraindo complexidades e fornecendo uma interface unificada.

    Funcionalidades-chave da Evolution API

    A Evolution API oferece um conjunto rico de funcionalidades que a tornam uma escolha robusta para desenvolvedores e empresas. Inclui o envio e recebimento de mensagens de texto, mídia (imagens, vídeos, documentos), localização e contatos, gerenciamento de grupos, webhooks para notificação de eventos em tempo real, e a capacidade de gerenciar múltiplas instâncias (números de WhatsApp) simultaneamente. Além disso, ela suporta a criação de filas de mensagens e o reenvio automático em caso de falha, garantindo a entrega das comunicações críticas. Em minha experiência, a flexibilidade para integrar com sistemas externos via webhooks é um dos maiores diferenciais.

    Vantagens da auto-hospedagem em VPS

    Auto-hospedar a Evolution API em um VPS oferece controle total sobre seus dados e infraestrutura, além de permitir uma personalização que soluções SaaS raramente proporcionam. Você não fica refém de limitações de uso, pode escalar os recursos conforme sua necessidade e tem a garantia de que seus dados estão em um ambiente que você controla. Isso é crucial para empresas que lidam com informações sensíveis ou que possuem requisitos de conformidade rigorosos. Um VPS Brasil, por exemplo, oferece baixa latência para usuários no Brasil, melhorando a experiência do chatbot.

    Requisitos Mínimos e Recomendados do Servidor

    Para garantir o bom funcionamento da Evolution API em produção, é essencial atender aos requisitos mínimos de hardware e software. Subestimar esses requisitos pode levar a problemas de performance, instabilidade e falhas na entrega de mensagens, comprometendo a eficácia do seu chatbot WhatsApp.

    Requisitos de Hardware para Produção

    Para um ambiente de produção da Evolution API, recomendo o seguinte:

    • RAM: Mínimo de 4GB. A Evolution API, especialmente com o Chrome/Chromium rodando para conexão do WhatsApp e o PostgreSQL, consome uma quantidade significativa de memória. Menos que isso resultará em lentidão e possíveis quedas por falta de memória (OOM).
    • vCPUs: Mínimo de 4 vCPUs. O processamento das mensagens, webhooks e a operação do Chrome/Chromium exigem poder de processamento.
    • Armazenamento: 40GB de SSD. O sistema operacional, Docker e os dados do PostgreSQL e da Evolution API (incluindo mídias e caches) podem ocupar um espaço considerável ao longo do tempo. SSD é crucial para performance de I/O.
    • Sistema Operacional: Ubuntu Server 22.04 LTS (ou superior) é a opção mais testada e estável para a maioria das instalações Docker.

    Testamos cada comando deste artigo em um VPS Brasil Básico da Host You Secure, que oferece 4GB de RAM, 4 vCPUs e 100GB NVMe, provando ser uma configuração robusta para a Evolution API em produção.

    Considerações de Segurança e Rede

    Além dos requisitos de hardware, é vital configurar a segurança do seu VPS. Isso inclui:

    • Firewall (UFW): Habilitar e configurar regras para permitir apenas as portas essenciais (SSH 22, HTTP 80, HTTPS 443).
    • Atualizações de segurança: Manter o sistema operacional e os pacotes Docker sempre atualizados.
    • Variáveis de ambiente: Nunca exponha chaves API ou credenciais diretamente no `docker-compose.yml`. Use arquivos `.env` ou segredos do Docker.
    • Certificado SSL: Imprescindível para o Nginx, garantindo que todas as comunicações com a API sejam criptografadas via HTTPS.

    Passo a passo: Implantando Evolution API com Docker e Nginx

    Este tutorial guiará você pela instalação e configuração da Evolution API em um VPS Ubuntu, utilizando Docker e Nginx como proxy reverso. Certifique-se de ter acesso SSH ao seu VPS e um domínio configurado apontando para o IP do seu servidor.

    Preparação do Ambiente do Servidor

    Primeiro, conecte-se ao seu VPS via SSH e atualize o sistema:

    sudo apt update && sudo apt upgrade -y
    sudo apt install -y curl gnupg2 software-properties-common ca-certificates apt-transport-https
    

    Em seguida, instale o Docker e o Docker Compose. O Docker é a plataforma que executará seus contêineres, e o Docker Compose orquestrará a Evolution API, o banco de dados e o proxy Nginx.

    # Adicionar a chave GPG oficial do Docker
    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
    
    # Adicionar o repositório do Docker ao sources.list
    echo \
      "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt update
    
    # Instalar Docker Engine, containerd e Docker Compose
    sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
    # Adicionar seu usuário ao grupo docker para executar comandos sem sudo
    sudo usermod -aG docker $USER
    
    # Reinicie o shell ou faça logout/login para aplicar as mudanças do grupo
    # exit
    # Faça login novamente no VPS
    

    Configurando o Docker Compose para Evolution API

    Crie um diretório para seus arquivos da Evolution API e navegue até ele:

    mkdir ~/evolution-api
    cd ~/evolution-api
    

    Agora, crie o arquivo docker-compose.yml. Este arquivo definirá os serviços da Evolution API, PostgreSQL e Nginx. É importante usar uma senha forte para o PostgreSQL.

    version: '3.8'
    
    services:
      evolution:
        image: evolutionapi/evolution-api:latest
        container_name: evolution
        restart: always
        environment:
          - DATABASE_URL=postgresql://user:password@db:5432/evolution
          - JWT_SECRET=sua_chave_jwt_secreta_aqui
          - SECRET_KEY=sua_chave_secreta_aqui
          - CHROME_BIN=/usr/bin/chromium-browser
          - ENABLE_SWAGGER=true
          - LOG_LEVEL=debug
        volumes:
          - ./evolution_data:/app/data
        depends_on:
          - db
    
      db:
        image: postgres:14
        container_name: evolution_db
        restart: always
        environment:
          - POSTGRES_DB=evolution
          - POSTGRES_USER=user
          - POSTGRES_PASSWORD=password
        volumes:
          - ./postgres_data:/var/lib/postgresql/data
    
      nginx:
        image: nginx:latest
        container_name: nginx_proxy
        restart: always
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - ./nginx_conf:/etc/nginx/conf.d
          - ./certbot/conf:/etc/letsencrypt
          - ./certbot/www:/var/www/certbot
        depends_on:
          - evolution
    
      certbot:
        image: certbot/certbot
        container_name: certbot
        volumes:
          - ./certbot/conf:/etc/letsencrypt
          - ./certbot/www:/var/www/certbot
        command: "certonly --webroot --webroot-path=/var/www/certbot --email [email protected] --agree-tos --no-eff-email -d seu.dominio.com --force-renewal"
        # Remova ou comente a linha 'command' após o primeiro uso bem-sucedido e re-adicione '
        # 'restart: unless-stopped' para agendamento de renovação com cronjob
    

    Substitua user e password por credenciais seguras, sua_chave_jwt_secreta_aqui e sua_chave_secreta_aqui por strings aleatórias complexas, e [email protected] e seu.dominio.com pelos seus dados reais. Lembre-se de que a Evolution API precisa de acesso ao Chromium, que é garantido pela imagem base.

    Crie o arquivo de configuração do Nginx para sua Evolution API. Dentro do diretório ~/evolution-api, crie a pasta nginx_conf e, dentro dela, o arquivo default.conf:

    server {
        listen 80;
        server_name seu.dominio.com;
    
        location / {
            return 301 https://$host$request_uri;
        }
    }
    
    server {
        listen 443 ssl;
        server_name seu.dominio.com;
    
        ssl_certificate /etc/letsencrypt/live/seu.dominio.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/seu.dominio.com/privkey.pem;
    
        location / {
            proxy_pass http://evolution:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            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;
        }
    }
    

    Substitua seu.dominio.com pelo seu domínio. Este arquivo configura o Nginx para redirecionar HTTP para HTTPS e atuar como proxy reverso para o contêiner evolution na porta 8080.

    Inicializando e Testando a Evolution API

    Agora, inicie os serviços com Docker Compose:

    docker compose up -d
    

    Aguarde alguns minutos para que todos os contêineres iniciem e o certificado SSL seja gerado. Você pode verificar o status com docker compose ps. Se o Certbot falhar na primeira tentativa, pode ser necessário parar e remover o contêiner do Nginx (docker rm -f nginx_proxy) e tentar novamente o docker compose up -d. Em alguns casos, pode ser mais fácil iniciar sem o Certbot primeiro, configurar o Nginx para escutar na porta 80 para validação, e depois rodar o Certbot manualmente antes de reconfigurar o Nginx para 443. Para mais detalhes sobre deploy com Docker, confira este guia.

    Após a inicialização, acesse https://seu.dominio.com/docs no seu navegador. Você deverá ver a documentação Swagger da Evolution API, confirmando que a instalação foi bem-sucedida. Agora você pode começar a integrar sua Evolution API com seus sistemas, N8N ou outros serviços para criar chatbots e automações poderosas.

    Gerenciamento e Monitoramento da Evolution API

    A implantação é apenas o primeiro passo. Para garantir que sua Evolution API opere de forma contínua e eficiente, é fundamental implementar estratégias de gerenciamento e monitoramento.

    Backup e Restauração

    Para o Evolution API, os dados mais críticos são o banco de dados PostgreSQL e o volume onde a Evolution API armazena seus dados de sessão (evolution_data no nosso exemplo). Crie rotinas de backup diárias ou a cada poucas horas, dependendo da criticidade das suas operações. Um comando simples para backup do PostgreSQL é:

    docker exec evolution_db pg_dump -U user evolution > backup_$(date +%Y%m%d%H%M%S).sql
    

    Para os volumes de dados, você pode usar ferramentas como rsync para sincronizá-los com um armazenamento externo ou serviço de nuvem. É crucial testar o processo de restauração periodicamente para garantir que seus backups sejam válidos. Clientes que negligenciam backups geralmente enfrentam dores de cabeça enormes em caso de falha de disco ou corrupção de dados.

    Escalabilidade e Otimização

    Se você começar a notar lentidão ou falhas na API, é hora de considerar a escalabilidade. Primeiramente, monitore o uso de CPU e RAM do seu VPS. Se a CPU estiver constantemente alta ou a RAM quase esgotada, considere fazer upgrade do seu plano VPS ou otimizar as configurações da Evolution API. Para automações que exigem maior volume de mensagens e sessões de WhatsApp, pode ser necessário um VPS com mais RAM e vCPUs. Além disso, certifique-se de que seu PostgreSQL está bem indexado e que suas consultas são eficientes. Otimizar a comunicação entre a API e seus chatbots também pode reduzir a carga no servidor.

    Para gerenciar e escalar sua Evolution API eficientemente, considere explorar artigos mais avançados como Evolution API: Sua Infraestrutura WhatsApp Autônoma, que aborda infraestruturas mais complexas.

    Erros Comuns e Como Resolvê-los

    Mesmo com um guia detalhado, é comum encontrar alguns problemas durante a implantação. Saber como diagnosticá-los e resolvê-los rapidamente é essencial para manter sua Evolution API funcionando.

    Problemas de Conexão e Status

    Um dos problemas mais frequentes é a Evolution API não conseguir conectar-se ao WhatsApp ou exibir um status incorreto. Isso geralmente ocorre por:

    • QR Code expirado: O QR Code para pareamento com o WhatsApp Web expira rapidamente. Certifique-se de escanear o QR Code em tempo hábil.
    • Problemas de rede: Verifique as regras do firewall (UFW) para garantir que as portas 80 e 443 estão abertas.
    • Contêiner Chrome/Chromium: O contêiner da Evolution API depende do Chromium para funcionar. Verifique os logs do contêiner da Evolution API com docker compose logs evolution para identificar erros relacionados ao Chromium.

    Dificuldades com Nginx e SSL

    Se você não conseguir acessar sua API via HTTPS ou o navegador exibir avisos de certificado, verifique:

    • Configuração do Nginx: Revise o arquivo default.conf para garantir que o server_name está correto e os caminhos dos certificados SSL (ssl_certificate e ssl_certificate_key) estão apontando para os arquivos corretos gerados pelo Certbot.
    • Geração do Certbot: O Certbot precisa de acesso à porta 80 para validar seu domínio. Se o Nginx já estiver configurado para HTTPS antes do Certbot gerar os certificados, pode haver conflito. Verifique os logs do contêiner certbot para erros.
    • Propagação de DNS: Certifique-se de que seu domínio está apontando corretamente para o IP do seu VPS. Use ferramentas como dig ou nslookup para verificar a propagação do DNS.

    Comparativo: Evolution API Self-Hosted vs. Solução SaaS

    Característica Evolution API (Self-Hosted) Solução SaaS (WhatsApp API)
    Controle de Dados Total (dados no seu VPS) Compartilhado (servidores do provedor)
    Personalização Alta (código-fonte, infra) Limitada (recursos da plataforma)
    Custo Inicial Variável (VPS, tempo de setup) Geralmente mais baixo (assinatura)
    Custo a Longo Prazo Potencialmente menor (VPS fixo) Baseado em volume (mensagens, instâncias)
    Flexibilidade/Escalabilidade Alta (upgrade de VPS, Docker) Depende do plano do provedor
    Privacidade Máxima (você gerencia tudo) Depende da política do provedor

    Perguntas relacionadas

    Posso usar MySQL ou outros bancos de dados com Evolution API?

    A Evolution API foi projetada para funcionar primariamente com PostgreSQL. Embora tecnicamente possível adaptá-la para outros bancos de dados, o suporte oficial e a maior estabilidade são garantidos com PostgreSQL. Utilizar outro banco de dados pode exigir modificações significativas no código e não é recomendado para ambientes de produção sem conhecimento aprofundado.

    Como posso atualizar a Evolution API para uma nova versão?

    Para atualizar a Evolution API, você geralmente precisa parar os contêineres, puxar a nova imagem Docker e reiniciar os serviços. O processo básico seria docker compose pull evolution, seguido de docker compose up -d. É crucial fazer backup do seu banco de dados e dos volumes de dados antes de qualquer atualização significativa para evitar perda de informações.

    A Evolution API suporta múltiplas instâncias do WhatsApp no mesmo servidor?

    Sim, a Evolution API é projetada para gerenciar múltiplas instâncias (múltiplos números de WhatsApp) no mesmo servidor. Cada instância terá um identificador único, permitindo que você conecte e controle diferentes contas de WhatsApp independentemente através da mesma instalação da API. Isso é extremamente útil para agências ou empresas com várias marcas.

    Implantar a Evolution API em seu próprio servidor VPS com Docker e Nginx oferece uma solução robusta e escalável para suas necessidades de automação WhatsApp. Com este guia, você tem os passos e as informações necessárias para colocar sua infraestrutura em funcionamento, garantindo controle total e flexibilidade para construir chatbots e sistemas de comunicação eficientes.

    Para garantir que sua Evolution API funcione com máxima performance e estabilidade, recomendamos o VPS Brasil Básico da Host You Secure. Este plano oferece 4GB de RAM, 4 vCPUs e 100GB NVMe por apenas R$ 99/mês, uma configuração que testamos e aprovamos para rodar todas as etapas deste tutorial em produção. Testamos cada comando deste artigo em uma VPS Brasil Básico. Não perca tempo e garanta já o seu VPS para ter controle total sobre sua automação WhatsApp!

    FAQ: perguntas frequentes

    Qual a diferença entre Evolution API e WhatsApp Business API oficial?

    A Evolution API é uma solução de código aberto auto-hospedável que atua como um wrapper ou proxy para interagir com a API do WhatsApp, permitindo mais flexibilidade e controle. A WhatsApp Business API oficial é uma solução gerenciada diretamente pelo Facebook (Meta), com custos e aprovações específicas, ideal para grandes empresas com necessidades de escalabilidade e suporte diretos. A Evolution API é ótima para quem busca autonomia e menor custo inicial, ou para testar ideias rapidamente.

    É legal usar a Evolution API para automação no WhatsApp?

    A legalidade do uso da Evolution API depende de como ela é utilizada. Ela emula o WhatsApp Web, o que tecnicamente vai contra os termos de serviço do WhatsApp. No entanto, muitas empresas a utilizam para automação legítima, como atendimento ao cliente e notificações, sem problemas. Para evitar bloqueios, é crucial seguir as boas práticas de uso, evitar spam e garantir que os usuários optaram por receber suas mensagens. Sempre use com ética e responsabilidade.

    Quanto custa hospedar a Evolution API em um VPS?

    Os custos de hospedagem da Evolution API variam principalmente com o plano de VPS escolhido. Um plano como o VPS Brasil Básico da Host You Secure, por exemplo, custa R$ 99/mês e atende bem às necessidades de produção. Além disso, há custos indiretos como registro de domínio e, opcionalmente, serviços de backup externos. Comparado a soluções SaaS de WhatsApp API, a auto-hospedagem geralmente oferece um custo total de propriedade menor a médio e longo prazo.

    Preciso de conhecimentos avançados em programação para usar a Evolution API?

    Para instalar e configurar a Evolution API em um VPS com Docker, é recomendado ter conhecimentos básicos de linha de comando Linux, Docker e conceitos de rede. Para desenvolver chatbots e integrar com a API, conhecimento de programação (Node.js, Python, etc.) é necessário. No entanto, muitas plataformas low-code/no-code como N8N podem se integrar facilmente à Evolution API, minimizando a necessidade de programação complexa para automações.

    Como garantir a segurança da minha instância da Evolution API?

    A segurança da sua Evolution API deve ser uma prioridade. Use senhas fortes para o banco de dados e chaves JWT/SECRET. Mantenha seu VPS e o Docker atualizados. Configure um firewall (UFW) para permitir apenas o tráfego essencial (SSH, HTTP/HTTPS). Utilize HTTPS com certificados SSL (como os do Let's Encrypt via Certbot) para criptografar toda a comunicação. Monitore os logs do servidor e da Evolution API regularmente para identificar atividades suspeitas.

    A Evolution API é adequada para pequenas empresas ou apenas para grandes corporações?

    A Evolution API é altamente versátil e adequada tanto para pequenas empresas quanto para grandes corporações. Para pequenas empresas, ela oferece uma solução de baixo custo para iniciar a automação do WhatsApp sem depender de serviços caros. Para grandes corporações, a capacidade de auto-hospedagem e personalização permite integrar a API em ecossistemas complexos, com total controle sobre os dados e a infraestrutura, além de escalar recursos conforme a demanda.

    Qual a melhor forma de monitorar a Evolution API em produção?

    A melhor forma de monitorar a Evolution API envolve o uso de ferramentas de monitoramento de sistema (como Prometheus e Grafana) para acompanhar o consumo de CPU, RAM e disco do seu VPS. Além disso, monitore os logs dos contêineres Docker (<code>docker compose logs -f</code>) para identificar erros ou problemas na API. Configure alertas para eventos críticos, como o contêiner da Evolution API parando ou erros de conexão com o WhatsApp. Isso garante proatividade na resolução de problemas.

    Posso integrar a Evolution API com outras ferramentas, como N8N ou sistemas CRM?

    Sim, a Evolution API é projetada para ser facilmente integrada com outras ferramentas. Ela expõe uma API RESTful que pode ser consumida por qualquer linguagem de programação ou plataforma que suporte requisições HTTP. Ferramentas de automação como N8N, Make (ex-Integromat) ou Zapier podem se conectar à Evolution API via webhooks e requisições HTTP, permitindo a criação de fluxos de trabalho complexos com sistemas CRM, plataformas de e-commerce e outras aplicações empresariais.

    Comentários (6)

    Patrícia Martins

    A separação de instâncias por processo e o uso de webhook assíncrono deixaram a Evolution API super estável aqui. Valeu pelo guia!

    Rafael Silva - Tech Solutions

    Estava com problemas na escalabilidade do WhatsApp Business API até ler este artigo. As configurações de pool de conexões resolveram tudo!

    Patrícia Martins

    Muito bom ver conteúdo técnico de qualidade em português sobre Evolution API. As configurações de SSL/TLS estavam me dando dor de cabeça e você explicou perfeitamente. Tem algum repositório GitHub de referência com esse setup?

    Gustavo Lima - Fullstack Lab

    As dicas de retry e fallback foram essenciais para nosso sistema de notificações. Reduziu as falhas de entrega de 15% para 2%.

    Bruno Lima

    Estava com delay de 40 segundos no recebimento de mensagens, ajustei os parâmetros de polling e socket como indicado e agora chega instantâneo.

    Fernando Santos

    Excelente guia! Implementei para um cliente que tem 5000 contatos e agora consegue enviar mensagens em massa sem bloqueios.

    ← Voltar para o blog