Evolution API (WhatsApp) na VPS com Docker

Henrique Siqueira

Henrique Siqueira

Última atualização em Sep 29, 2026

A Evolution API expõe o WhatsApp como uma API HTTP e é o par mais comum do n8n nas VPS da LuraHosting. Requisitos: Docker, um subdomínio apontado (ex.: evo.seudominio.com) e, de preferência, 4 GB de RAM se for dividir com o n8n.

Se já tem o Traefik do guia do n8n, reaproveite; abaixo o Compose completo para começar do zero.

1. Compose

mkdir -p /opt/evolution && cd /opt/evolution
nano docker-compose.yml
services:
  traefik:
    image: traefik:v3
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --certificatesresolvers.le.acme.tlschallenge=true
      - --certificatesresolvers.le.acme.email=seu@email.com
      - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
    ports: ["80:80", "443:443"]
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - traefik_le:/letsencrypt
    restart: unless-stopped

  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: evolution
      POSTGRES_USER: evolution
      POSTGRES_PASSWORD: TROQUE-ESTA-SENHA
    volumes: ["pg_data:/var/lib/postgresql/data"]
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    command: redis-server --appendonly yes
    volumes: ["redis_data:/data"]
    restart: unless-stopped

  evolution:
    image: evoapicloud/evolution-api:latest
    environment:
      SERVER_URL: https://evo.seudominio.com
      AUTHENTICATION_API_KEY: TROQUE-POR-UMA-CHAVE-LONGA
      DATABASE_ENABLED: "true"
      DATABASE_PROVIDER: postgresql
      DATABASE_CONNECTION_URI: postgresql://evolution:TROQUE-ESTA-SENHA@postgres:5432/evolution
      CACHE_REDIS_ENABLED: "true"
      CACHE_REDIS_URI: redis://redis:6379/1
      LANGUAGE: pt-BR
    volumes: ["evo_instances:/evolution/instances"]
    labels:
      - traefik.enable=true
      - traefik.http.routers.evo.rule=Host(`evo.seudominio.com`)
      - traefik.http.routers.evo.entrypoints=websecure
      - traefik.http.routers.evo.tls.certresolver=le
      - traefik.http.services.evo.loadbalancer.server.port=8080
    depends_on: [postgres, redis]
    restart: unless-stopped

volumes:
  pg_data:
  redis_data:
  evo_instances:
  traefik_le:
docker compose up -d && docker compose logs -f evolution

2. Conectar um número

  1. Abra https://evo.seudominio.com/manager e entre com a AUTHENTICATION_API_KEY.
  2. Criar instância, dê um nome e clique em Conectar: aparece o QR code.
  3. No celular: WhatsApp → Dispositivos conectados → Conectar dispositivo → leia o QR.

Teste de envio:

curl -X POST https://evo.seudominio.com/message/sendText/NOME-DA-INSTANCIA \
  -H "apikey: SUA-CHAVE" -H "Content-Type: application/json" \
  -d '{"number":"5511999999999","text":"Teste da VPS"}'

3. Integrar com o n8n

Se o n8n roda na mesma VPS e na mesma rede Docker, use http://evolution:8080 como URL interna e a API key. Se estiver em outro lugar, use a URL pública. No n8n, o nó "Evolution API" (community) ou nós HTTP Request resolvem; webhooks de mensagens recebidas são configurados por instância no manager (URL do webhook do n8n).

4. Cuidados

  • Nunca deixe a instalação sem AUTHENTICATION_API_KEY forte: a API controla o seu WhatsApp.
  • Faça backup dos volumes pg_data e evo_instances (backup automático); perder evo_instances desconecta os números.
  • Envio em massa/spam pode banir o número. Use com moderação e respeite as regras do WhatsApp.
  • Atualizar: docker compose pull && docker compose up -d.