Guia de Self-Hosting

Sua Infra, Suas Regras.

Aprenda a configurar o API Connector no seu próprio servidor com Docker puro, Portainer/Traefik ou EasyPanel. Do desktop à produção, temos o guia certo para você.

Conceitos Fundamentais

Entenda as peças do quebra-cabeça antes de começar.

Docker

Imagine como "containers" isolados onde a aplicação mora. Isso garante que ela rode igual no seu PC e no servidor, sem conflitos de dependências.

Portainer

É o seu painel de controle visual. Em vez de comandos infinitos no terminal, você gerencia seus containers, logs e redes através de uma interface web.

Traefik

O "guarda de trânsito". Ele recebe as visitas da internet, decide para qual container enviar e gera o cadeado (SSL/HTTPS) automaticamente.

Pré-Requisitos de Infra

O que você precisa preparar no seu servidor.

Domínio e DNS

Você precisa de um domínio (ou subdomínio) registrado apontando para o seu servidor.

Configuração no Provedor (Cloudflare, etc):

Tipo: A | Nome: apiconnector | Alvo: IP.DO.VPS

Rede Externa no Docker

Se for usar Traefik, crie a rede pública manualmente via SSH:

docker network create traefik_public

Variáveis no Portainer

Defina o domínio na aba Environment variables ao criar a Stack:

FRONTEND_DOMAINapiconnector.seusite.com

Domínio no EasyPanel

Crie quatro rotas no seu projeto:

Rota 1: Frontend

  • • Host: apiconnector.seusite.com
  • • Path: /
  • • Porta: 80 | Service: frontend

Rota 2: Backend (API)

  • • Host: apiconnector.seusite.com
  • • Path: /api
  • • Porta: 3000 | Service: api

Rota 3: WhatsApp (Baileys)

  • • Host: apiconnector.seusite.com
  • • Path: /whatsapp
  • • Porta: 8080 | Service: baileys

Rota 4: Claude MCP Server

  • • Host: apiconnector.seusite.com
  • • Path: /server-mcp
  • • Porta: 3100 | Service: mcp

Passo a Passo Interativo

Escolha seu método de deploy e siga as instruções.

docker-compose.yml
Baixar
# docker-compose.yml

services:
  redis:
    image: redis:7-alpine
    container_name: api-connector-redis
    restart: unless-stopped
    volumes:
      - redis_data:/data
    networks:
      - connector_net
    healthcheck:
      test: [ "CMD", "redis-cli", "ping" ]
      interval: 5s
      timeout: 3s
      retries: 5

  api:
    image: registry.gitlab.com/andrealencar/chatwoot-api-connector/api_connector_backend:1.4.1.29
    container_name: api-connector-api
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DATABASE_URL=file:/app/data/database.db
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - PORT=3000
      - MCP_OAUTH_CLIENT_ID=api-connector-claude
      - JWT_SECRET=${JWT_SECRET:-supersecretkey}
      - JWT_REFRESH_SECRET=<defina_na_stack>
      - ENCRYPTION_KEY=<defina_na_stack>
    volumes:
      - api_data:/app/data
      - api_logs:/app/logs
    depends_on:
      redis:
        condition: service_healthy
    networks:
      - connector_net

  frontend:
    image: registry.gitlab.com/andrealencar/chatwoot-api-connector/api_connector_frontend:1.4.1.29
    container_name: api-connector-frontend
    restart: unless-stopped
    ports:
      - "80:80"
    depends_on:
      - api
    networks:
      - connector_net

  baileys:
    image: registry.gitlab.com/andrealencar/chatwoot-api-connector/api_connector_baileys:1.4.1.30
    container_name: api-connector-baileys
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      - WEBHOOK_URL=http://api:3000/api/webhooks/baileys
      - PUBLIC_URL=http://localhost:8080
    volumes:
      - baileys_data:/data
    depends_on:
      - api
    networks:
      - connector_net

  mcp:
    image: registry.gitlab.com/andrealencar/chatwoot-api-connector/api_connector_mcp:1.4.1.29
    container_name: api-connector-mcp
    restart: unless-stopped
    ports:
      - "3100:3100"
    environment:
      - API_BASE_URL=http://api:3000
      - API_TOKEN=${JWT_SECRET:-supersecretkey}
      - MCP_OAUTH_CLIENT_ID=api-connector-claude
      - MCP_OAUTH_REDIRECT_URIS=http://127.0.0.1:4391/callback,http://localhost:4391/callback,https://claude.ai/api/mcp/auth_callback
      - MCP_OAUTH_STATE_PATH=/app/data/mcp-oauth-state.json
    volumes:
      - mcp_data:/app/data
    depends_on:
      - api
    networks:
      - connector_net

networks:
  connector_net:
    driver: bridge

volumes:
  redis_data:
  api_data:
  api_logs:
  baileys_data:
  mcp_data:

Sobre este método

Ideal para testes rápidos ou instâncias únicas em VPS.

Comando Principaldocker compose up -d

Security First

Nossas imagens são "Zero-Config". Isso significa que chaves de criptografia e JWT já estão embutidas.

Dica: Mantenha sempre o seu Docker atualizado para evitar brechas de segurança no kernel.