🔓 Como instalar o CRM Evolution no Portainer – Docker Swarm

Nesta aula vamos instalar o Evo CRM (Evolution) do zero na sua VPS, usando Portainer, Docker Swarm e Traefik. Diferente de tutoriais genéricos, aqui cada passo existe para evitar que os microsserviços do Evo falhem na comunicação ou entrem em crash loop. Siga estritamente na ordem.

Pré-requisitos

Antes de começar, seu ambiente já precisa ter rodando:

  • Portainer (gerenciador do Docker Swarm).

  • Traefik (proxy reverso, com rede traefik_public e resolver de SSL le configurado).

  • PostgreSQL (acessível na rede digital_network pelo hostname postgres).

  • DNS Configurado: Você precisará apontar o seu domínio principal (ex: crm.zappronto.com.br) e o subdomínio da API (api-crm.zappronto.com.br) para o IP do seu servidor.

Link das Aulas Pré-requisitas abaixo:

Passo 1: Autenticar no Docker Hub (Evita erro toomanyrequests)

A stack do Evo CRM possui 7 imagens diferentes. Se você tentar baixar todas de uma vez sem estar logado, o Docker Hub vai bloquear seu IP por excesso de requisições.

Faça login no Docker Hub direto no terminal do servidor:

				
					docker login
				
			

Por que esse passo existe: Evita que os serviços fiquem travados em rejected logo no início do deploy.

Passo 2: Baixar as imagens manualmente antes do deploy

O Docker Swarm pode se perder ao tentar fazer o pull simultâneo de tantas imagens pesadas. Baixe as imagens da versão 1.0.0-rc6 uma a uma:

				
					docker pull evoapicloud/evo-auth-service-community:1.0.0
docker pull evoapicloud/evo-ai-crm-community:1.0.0
docker pull evoapicloud/evo-ai-frontend-community:1.0.0
docker pull evoapicloud/evo-ai-processor-community:1.0.0
docker pull evoapicloud/evo-ai-core-service-community:1.0.0
docker pull evoapicloud/evo-bot-runtime:1.0.0
docker pull evoapicloud/evo-crm-gateway:1.0.0
				
			

Passo 3: Criar o banco de dados no PostgreSQL

O Evo CRM precisa de um banco de dados dedicado. Acesse o container do seu Postgres (substitua o comando se usar banco externo):

				
					PG=$(docker ps -qf name=postgres)
docker exec -i $PG psql -U postgres -c "CREATE DATABASE evo_community;"
				
			

Passo 4: Criar os volumes externos

Os serviços do Evo (Redis, Processor e CRM) guardam dados estáticos, mídias e logs em volumes. Crie-os previamente no servidor:

				
					docker volume create evo_redis_data
docker volume create evo_processor_logs
docker volume create evo_crm_storage
				
			

Por que esse passo existe: Impede que o Swarm crie volumes efêmeros atrelados a um nó específico, garantindo a persistência dos arquivos mesmo se o container reiniciar.

Passo 5: Gerar as chaves de segurança

O Evo CRM usa várias chaves secretas para comunicação interna (Gateways, JWTs, Rails e Processor). Gere 6 chaves fortes diferentes executando este comando 6 vezes e anotando os resultados:

				
					openssl rand -hex 32
				
			

Agora, prepare o seu bloco de Environment Variables (você vai colar isso no Portainer na hora do deploy). Preencha com as chaves geradas e os dados do seu banco/SMTP:

				
					# ==========================================
# BANCO DE DADOS (POSTGRESQL)
# ==========================================
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=sua_senha_do_banco_aqui
POSTGRES_DATABASE=evo_community
POSTGRES_SSLMODE=disable

# ==========================================
# SEGURANÇA E CHAVES SECRETAS
# ==========================================
SECRET_KEY_BASE=cole_a_chave_1_aqui
JWT_SECRET_KEY=cole_a_chave_2_aqui
DOORKEEPER_JWT_SECRET_KEY=cole_a_chave_3_aqui
EVOAI_CRM_API_TOKEN=cole_a_chave_4_aqui
ENCRYPTION_KEY=cole_a_chave_5_aqui

# ==========================================
# COMUNICAÇÃO INTERNA DOS SERVIÇOS
# ==========================================
BOT_RUNTIME_SECRET=cole_a_chave_6_aqui
PROCESSOR_PASSWORD=senha_segura_para_o_processor

# ==========================================
# CONFIGURAÇÃO DE DISPARO DE E-MAIL (SMTP)
# ==========================================
MAILER_SENDER_EMAIL=contato@zappronto.com.br
SMTP_ADDRESS=smtp.seuprovedor.com
SMTP_PORT=587
SMTP_DOMAIN=zappronto.com.br
SMTP_AUTHENTICATION=plain
SMTP_ENABLE_STARTTLS_AUTO=true
SMTP_USERNAME=seu_usuario_smtp
SMTP_PASSWORD=sua_senha_smtp

# ==========================================
# GERAIS E PERFORMANCE
# ==========================================
ORGANIZATION_NAME=Zappronto
MFA_ISSUER=Zappronto CRM
SIDEKIQ_CONCURRENCY=5
				
			

Passo 6: Ajustar e colar a stack no Portainer

Vá em Stacks → Add stack, dê o nome de evo-crm e cole o código docker-compose.yml da aplicação.

Atenção aos ajustes manuais direto no código da stack:

  1. Domínios: Use a lupa/pesquisa (Ctrl+F ou Cmd+F) e substitua TODAS as ocorrências de SEU.SUBDOMINIO.com.br pelo seu domínio real (ex: crm.zappronto.com.br). Cuidado para não apagar o prefixo api- onde ele existir.

  2. Facebook App (Opcional): Nas sessões evo_crm e evo_core, há variáveis como SEU_ID_FACE e chaves do Facebook. Se não for usar agora, pode deixar como está, mas lembre-se de configurar depois.

  3. Variáveis de Ambiente: Abaixo do editor de código web do Portainer, ative a opção Environment variables, clique em Advanced mode e cole todo o bloco de texto do Passo 5 configurado.

Clique em Deploy the stack.

				
					version: "3.8"

services:
  # ---------------------------------------------------------------------------
  # Redis dedicado do Evo CRM
  # ---------------------------------------------------------------------------
  evo_redis:
    image: redis:7-alpine
    command: redis-server --appendonly yes --appendfsync everysec --maxmemory-policy noeviction
    volumes:
      - evo_redis_data:/data
    networks:
      - digital_network
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        condition: any
        delay: 10s
        max_attempts: 10
        window: 180s

  # =============================================================================
  # Evo CRM Gateway — API pública via Traefik
  # =============================================================================
  evo_gateway:
    image: evoapicloud/evo-crm-gateway:1.0.0
    environment:
      AUTH_UPSTREAM: evo_auth:3001
      CRM_UPSTREAM: evo_crm:3000
      CORE_UPSTREAM: evo_core:5555
      PROCESSOR_UPSTREAM: evo_processor:8000
      BOT_RUNTIME_UPSTREAM: evo_bot_runtime:8080
      STORAGE_UPSTREAM: evo_crm:3000
      PROCESSOR_PASSWORD: ${PROCESSOR_PASSWORD}
    networks:
      - traefik_public
      - digital_network
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        condition: any
      labels:
        - traefik.enable=true
        - traefik.docker.network=traefik_public
        - traefik.http.routers.evo_gateway.rule=Host(`api-crm.zappronto.com.br`)
        - traefik.http.routers.evo_gateway.entrypoints=websecure
        - traefik.http.routers.evo_gateway.tls.certresolver=le
        - traefik.http.routers.evo_gateway.service=evo_gateway
        - traefik.http.middlewares.evo-crm-limit-body.buffering.maxRequestBodyBytes=52428800
        - traefik.http.routers.evo_gateway.middlewares=evo-crm-limit-body
        - traefik.http.services.evo_gateway.loadbalancer.server.port=3030
        - traefik.http.services.evo_gateway.loadbalancer.passHostHeader=true

  # =============================================================================
  # Evo Auth Service — Rails
  # =============================================================================
  evo_auth:
    image: evoapicloud/evo-auth-service-community:1.0.0
    command: >
      sh -c "bundle exec rails db:migrate 2>&1 || echo 'Migration had errors, continuing...';
      bundle exec rails s -p 3001 -b 0.0.0.0"
    environment:
      RAILS_ENV: production
      RAILS_MAX_THREADS: 10
      SECRET_KEY_BASE: ${SECRET_KEY_BASE}
      JWT_SECRET_KEY: ${JWT_SECRET_KEY}
      DOORKEEPER_JWT_SECRET_KEY: ${DOORKEEPER_JWT_SECRET_KEY}
      EVOAI_CRM_API_TOKEN: ${EVOAI_CRM_API_TOKEN}
      POSTGRES_HOST: ${POSTGRES_HOST}
      POSTGRES_PORT: ${POSTGRES_PORT}
      POSTGRES_USERNAME: ${POSTGRES_USERNAME}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DATABASE: ${POSTGRES_DATABASE}
      POSTGRES_SSLMODE: ${POSTGRES_SSLMODE}
      REDIS_URL: redis://evo_redis:6379/0
      FRONTEND_URL: https://crm.zappronto.com.br
      BACKEND_URL: https://api-crm.zappronto.com.br
      CORS_ORIGINS: https://crm.zappronto.com.br,https://api-crm.zappronto.com.br
      MAILER_SENDER_EMAIL: ${MAILER_SENDER_EMAIL}
      SMTP_ADDRESS: ${SMTP_ADDRESS}
      SMTP_PORT: ${SMTP_PORT}
      SMTP_DOMAIN: ${SMTP_DOMAIN}
      SMTP_AUTHENTICATION: ${SMTP_AUTHENTICATION}
      SMTP_ENABLE_STARTTLS_AUTO: ${SMTP_ENABLE_STARTTLS_AUTO}
      SMTP_USERNAME: ${SMTP_USERNAME}
      SMTP_PASSWORD: ${SMTP_PASSWORD}
      DOORKEEPER_JWT_ALGORITHM: hs256
      DOORKEEPER_JWT_ISS: evo-auth-service
      MFA_ISSUER: ${MFA_ISSUER}
      SIDEKIQ_CONCURRENCY: ${SIDEKIQ_CONCURRENCY}
      ACTIVE_STORAGE_SERVICE: local
      ACTIVE_STORAGE_URL: https://api-crm.zappronto.com.br
    volumes:
      - evo_auth_storage:/app/storage
    networks:
      - digital_network
    stop_grace_period: 300s
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        condition: any

  # =============================================================================
  # Evo Auth Sidekiq — mantido em 0 por enquanto
  # =============================================================================
  evo_auth_sidekiq:
    image: evoapicloud/evo-auth-service-community:1.0.0
    command: ["bundle", "exec", "sidekiq", "-C", "config/sidekiq.yml"]
    environment:
      RAILS_ENV: production
      SECRET_KEY_BASE: ${SECRET_KEY_BASE}
      JWT_SECRET_KEY: ${JWT_SECRET_KEY}
      DOORKEEPER_JWT_SECRET_KEY: ${DOORKEEPER_JWT_SECRET_KEY}
      EVOAI_CRM_API_TOKEN: ${EVOAI_CRM_API_TOKEN}
      POSTGRES_HOST: ${POSTGRES_HOST}
      POSTGRES_PORT: ${POSTGRES_PORT}
      POSTGRES_USERNAME: ${POSTGRES_USERNAME}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DATABASE: ${POSTGRES_DATABASE}
      POSTGRES_SSLMODE: ${POSTGRES_SSLMODE}
      REDIS_URL: redis://evo_redis:6379/0
      FRONTEND_URL: https://crm.zappronto.com.br
      BACKEND_URL: https://api-crm.zappronto.com.br
      CORS_ORIGINS: https://crm.zappronto.com.br,https://api-crm.zappronto.com.br
      MAILER_SENDER_EMAIL: ${MAILER_SENDER_EMAIL}
      SMTP_ADDRESS: ${SMTP_ADDRESS}
      SMTP_PORT: ${SMTP_PORT}
      SMTP_DOMAIN: ${SMTP_DOMAIN}
      SMTP_AUTHENTICATION: ${SMTP_AUTHENTICATION}
      SMTP_ENABLE_STARTTLS_AUTO: ${SMTP_ENABLE_STARTTLS_AUTO}
      SMTP_USERNAME: ${SMTP_USERNAME}
      SMTP_PASSWORD: ${SMTP_PASSWORD}
      DOORKEEPER_JWT_ALGORITHM: hs256
      DOORKEEPER_JWT_ISS: evo-auth-service
      MFA_ISSUER: ${MFA_ISSUER}
      SIDEKIQ_CONCURRENCY: ${SIDEKIQ_CONCURRENCY}
      ACTIVE_STORAGE_SERVICE: local
      ACTIVE_STORAGE_URL: https://api-crm.zappronto.com.br
    volumes:
      - evo_auth_storage:/app/storage
    networks:
      - digital_network
    stop_grace_period: 300s
    deploy:
      replicas: 0
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        condition: any

  # =============================================================================
  # Evo CRM Service — Rails
  # =============================================================================
  evo_crm:
    image: evoapicloud/evo-ai-crm-community:1.0.0
    command: >
      sh -c "until wget -qO- http://evo_auth:3001/health >/dev/null 2>&1;
      do echo 'Waiting for auth...'; sleep 5; done;
      bundle exec rails db:migrate 2>&1 || echo 'Migration had errors, continuing...';
      bundle exec rails s -p 3000 -b 0.0.0.0"
    environment:
      RAILS_ENV: production
      RAILS_MAX_THREADS: 10
      RAILS_SERVE_STATIC_FILES: "true"
      RAILS_LOG_TO_STDOUT: "true"
      SECRET_KEY_BASE: ${SECRET_KEY_BASE}
      JWT_SECRET_KEY: ${JWT_SECRET_KEY}
      EVOAI_CRM_API_TOKEN: ${EVOAI_CRM_API_TOKEN}
      POSTGRES_HOST: ${POSTGRES_HOST}
      POSTGRES_PORT: ${POSTGRES_PORT}
      POSTGRES_USERNAME: ${POSTGRES_USERNAME}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DATABASE: ${POSTGRES_DATABASE}
      POSTGRES_SSLMODE: ${POSTGRES_SSLMODE}
      REDIS_URL: redis://evo_redis:6379/0
      EVO_AUTH_SERVICE_URL: http://evo_auth:3001
      EVO_AI_CORE_SERVICE_URL: http://evo_core:5555
      BACKEND_URL: https://api-crm.zappronto.com.br
      FRONTEND_URL: https://crm.zappronto.com.br
      CORS_ORIGINS: https://crm.zappronto.com.br,https://api-crm.zappronto.com.br
      DISABLE_TELEMETRY: "true"
      LOG_LEVEL: info
      ENABLE_ACCOUNT_SIGNUP: "true"
      ENABLE_PUSH_RELAY_SERVER: "true"
      ENABLE_INBOX_EVENTS: "true"
      BOT_RUNTIME_URL: http://evo_bot_runtime:8080
      BOT_RUNTIME_SECRET: ${BOT_RUNTIME_SECRET}
      BOT_RUNTIME_POSTBACK_BASE_URL: http://evo_crm:3000
      ACTIVE_STORAGE_SERVICE: local
      ACTIVE_STORAGE_URL: https://api-crm.zappronto.com.br
      FACEBOOK_APP_ID: 869446355727984
      FACEBOOK_CLIENT_SECRET: 32f3a1a03fb44484e153fb344ad57ad7
      FACEBOOK_CALLBACK_URL: https://api-crm.zappronto.com.br/facebook/callback
    volumes:
      - evo_crm_storage:/app/storage
    networks:
      - digital_network
    stop_grace_period: 300s
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        condition: any

  # =============================================================================
  # Evo CRM Sidekiq — processa mensagens, webhooks, realtime e mídia
  # =============================================================================
  evo_crm_sidekiq:
    image: evoapicloud/evo-ai-crm-community:1.0.0
    command: ["bundle", "exec", "sidekiq", "-C", "config/sidekiq.yml", "-q", "critical", "-q", "high", "-q", "default", "-q", "low", "-q", "mailers", "-q", "realtime"]
    environment:
      RAILS_ENV: production
      RAILS_MAX_THREADS: 10
      RAILS_LOG_TO_STDOUT: "true"
      SECRET_KEY_BASE: ${SECRET_KEY_BASE}
      JWT_SECRET_KEY: ${JWT_SECRET_KEY}
      EVOAI_CRM_API_TOKEN: ${EVOAI_CRM_API_TOKEN}
      POSTGRES_HOST: ${POSTGRES_HOST}
      POSTGRES_PORT: ${POSTGRES_PORT}
      POSTGRES_USERNAME: ${POSTGRES_USERNAME}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DATABASE: ${POSTGRES_DATABASE}
      POSTGRES_SSLMODE: ${POSTGRES_SSLMODE}
      REDIS_URL: redis://evo_redis:6379/0
      EVO_AUTH_SERVICE_URL: http://evo_auth:3001
      EVO_AI_CORE_SERVICE_URL: http://evo_core:5555
      BACKEND_URL: https://api-crm.zappronto.com.br
      FRONTEND_URL: https://crm.zappronto.com.br
      CORS_ORIGINS: https://crm.zappronto.com.br,https://api-crm.zappronto.com.br
      BOT_RUNTIME_URL: http://evo_bot_runtime:8080
      BOT_RUNTIME_SECRET: ${BOT_RUNTIME_SECRET}
      BOT_RUNTIME_POSTBACK_BASE_URL: http://evo_crm:3000
      ACTIVE_STORAGE_SERVICE: local
      ACTIVE_STORAGE_URL: https://api-crm.zappronto.com.br
    volumes:
      - evo_crm_storage:/app/storage
    networks:
      - digital_network
    stop_grace_period: 300s
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        condition: any

  # =============================================================================
  # Evo Core Service — Go
  # =============================================================================
  evo_core:
    image: evoapicloud/evo-ai-core-service-community:1.0.0
    environment:
      DB_HOST: ${POSTGRES_HOST}
      DB_PORT: ${POSTGRES_PORT}
      DB_USER: ${POSTGRES_USERNAME}
      DB_PASSWORD: ${POSTGRES_PASSWORD}
      DB_NAME: ${POSTGRES_DATABASE}
      DB_SSLMODE: ${POSTGRES_SSLMODE}
      DB_MAX_IDLE_CONNS: 10
      DB_MAX_OPEN_CONNS: 100
      DB_CONN_MAX_LIFETIME: 1h
      DB_CONN_MAX_IDLE_TIME: 30m
      PORT: "5555"
      SECRET_KEY_BASE: ${SECRET_KEY_BASE}
      JWT_SECRET_KEY: ${JWT_SECRET_KEY}
      JWT_ALGORITHM: HS256
      ENCRYPTION_KEY: ${ENCRYPTION_KEY}
      EVOLUTION_BASE_URL: http://evo_crm:3000
      EVO_AUTH_BASE_URL: http://evo_auth:3001
      AI_PROCESSOR_URL: http://evo_processor:8000
      AI_PROCESSOR_VERSION: v1
      FACEBOOK_APP_ID: 869446355727984
      FACEBOOK_CLIENT_SECRET: 32f3a1a03fb44484e153fb344ad57ad7
      FACEBOOK_CALLBACK_URL: https://api-crm.zappronto.com.br/facebook/callback
    networks:
      - digital_network
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        condition: any

  # =============================================================================
  # Evo Processor — Python / FastAPI (CORRIGIDO)
  # =============================================================================
  evo_processor:
    image: evoapicloud/evo-ai-processor-community:1.0.0
    command: >
      sh -c "alembic upgrade head 2>&1 || echo 'Alembic migration had errors, continuing...';
      python -m scripts.run_seeders;
      uvicorn src.main:app --host 0.0.0.0 --port 8000"
    environment:
      POSTGRES_CONNECTION_STRING: postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DATABASE}?sslmode=disable
      EVO_AUTH_BASE_URL: http://evo_auth:3001
      EVOLUTION_BASE_URL: http://evo_crm:3000
      EVO_AI_CRM_URL: http://evo_crm:3000
      CORE_SERVICE_URL: http://evo_core:5555/api/v1
      REDIS_HOST: evo_redis
      REDIS_PORT: 6379
      REDIS_PASSWORD: ""
      REDIS_SSL: "false"
      REDIS_DB: 0
      REDIS_KEY_PREFIX: "a2a:"
      REDIS_TTL: 3600
      HOST: 0.0.0.0
      PORT: "8000"
      DEBUG: "false"
      SECRET_KEY_BASE: ${SECRET_KEY_BASE}
      ENCRYPTION_KEY: ${ENCRYPTION_KEY}
      EVOAI_CRM_API_TOKEN: ${EVOAI_CRM_API_TOKEN}
      PROCESSOR_PASSWORD: ${PROCESSOR_PASSWORD}
      APP_URL: https://api-crm.zappronto.com.br
      API_TITLE: Agent Processor Community
      API_DESCRIPTION: Agent Processor Community for Evo AI
      API_VERSION: 1.0.0
      API_URL: https://api-crm.zappronto.com.br
      ORGANIZATION_NAME: ${ORGANIZATION_NAME}
      TOOLS_CACHE_ENABLED: "true"
      TOOLS_CACHE_TTL: 3600
    volumes:
      - evo_processor_logs:/app/logs
    networks:
      - digital_network
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        condition: any

  # =============================================================================
  # Evo Bot Runtime — Go
  # =============================================================================
  evo_bot_runtime:
    image: evoapicloud/evo-bot-runtime:1.0.0
    environment:
      LISTEN_ADDR: 0.0.0.0:8080
      REDIS_URL: redis://evo_redis:6379/0
      AI_PROCESSOR_URL: http://evo_processor:8000
      BOT_RUNTIME_SECRET: ${BOT_RUNTIME_SECRET}
      AI_CALL_TIMEOUT_SECONDS: 30
    networks:
      - digital_network
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        condition: any

  # =============================================================================
  # Evo Frontend — React / Nginx
  # =============================================================================
  evo_frontend:
    image: evoapicloud/evo-ai-frontend-community:1.0.0
    environment:
      VITE_APP_ENV: production
      VITE_API_URL: https://api-crm.zappronto.com.br
      VITE_AUTH_API_URL: https://api-crm.zappronto.com.br
      VITE_WS_URL: wss://api-crm.zappronto.com.br
      VITE_EVOAI_API_URL: https://api-crm.zappronto.com.br
      VITE_AGENT_PROCESSOR_URL: https://api-crm.zappronto.com.br
      VITE_EVOFLOW_API_URL: https://api-crm.zappronto.com.br
    networks:
      - traefik_public
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        condition: any
      labels:
        - traefik.enable=true
        - traefik.docker.network=traefik_public
        - traefik.http.routers.evo_frontend.rule=Host(`crm.zappronto.com.br`)
        - traefik.http.routers.evo_frontend.entrypoints=websecure
        - traefik.http.routers.evo_frontend.tls.certresolver=le
        - traefik.http.routers.evo_frontend.service=evo_frontend
        - traefik.http.services.evo_frontend.loadbalancer.server.port=80
        - traefik.http.services.evo_frontend.loadbalancer.passHostHeader=true

networks:
  traefik_public:
    external: true
    name: traefik_public
  digital_network:
    external: true
    name: digital_network

volumes:
  evo_redis_data:
  evo_processor_logs:
  evo_crm_storage:
  evo_auth_storage:
				
			

Passo 7: Acompanhar o Boot e as Migrations (Ordem de Inicialização)

O Evo CRM é uma arquitetura complexa. Os serviços dependem uns dos outros.
Acompanhe os logs do Auth Service primeiro, pois ele roda as migrações do banco:

				
					docker service logs evo-crm_evo_auth --tail 50 -f
				
			

Você deverá ver as tabelas sendo criadas no Rails. O serviço evo_crm possui um comando until wget ... waiting for auth..., ou seja, ele só vai iniciar o boot dele próprio depois que o evo_auth estiver 100% online (rodando na porta 3001).

Faça o mesmo para o Processor, que usa Alembic para criar as tabelas de IA:

				
					docker service logs evo-crm_evo_auth --tail 50 -f
				
			

Passo 8: Primeiro Acesso

Quando todos os serviços estiverem com status Running (em verde) no Portainer, e as migrações tiverem concluído:

  1. Acesse o domínio do frontend: [https://crm.zappronto.com.br](https://crm.zappronto.com.br).

  2. Como habilitamos ENABLE_ACCOUNT_SIGNUP: "true" na stack, você verá a tela de registro/login.

  3. Crie sua conta de administrador.

Resolução de Problemas Comuns no Evo CRM

SintomaCausaSolução
Gateway retornando 502 Bad GatewayTraefik não encontra a rota ou Gateway não acessa os upstreams internos.Confirme se a rede digital_network está no serviço e se os microsserviços internos iniciaram sem erro.
Frontend quebrado (Tela Branca)Falta de variável do EvoFlow na RC6 (Bug EVO-1906).A stack fornecida já corrige isso adicionando VITE_EVOFLOW_API_URL apontando para a API no serviço evo_frontend.
Serviços param e reiniciam sem pararBanco de dados inacessível ou senha incorreta nas variáveis de ambiente.Revise o bloco de variáveis no Portainer (especialmente POSTGRES_PASSWORD).
E-mails não chegamSMTP mal configurado ou bloqueio de porta 587 no provedor VPS.Verifique logs do serviço evo_crm_sidekiq que processa a fila mailers.
COMPARTILHAR