kb.erickguedes.com
N8N: Automação Low-Code

Deploy e Avancado

Aula 6 de 6

Deployment

Diferentes formas de colocar N8N em producao, do simples ao escalavel.

echo "=== Opcoes de Deploy ==="
echo ""
echo "Docker Compose (recomendado):"
echo "  - Facil gerenciamento de servicos"
echo "  - Volumes persistentes"
echo "  - Rede interna para banco + redis"
echo ""
echo "PM2 (Node.js puro):"
echo "  - Simples, sem Docker"
echo "  - Auto-restart em falha"
echo "  - Load balancing (cluster mode)"
echo ""
echo "Railway / Render / Heroku:"
echo "  - Cloud PaaS, facil deploy"
echo "  - Escalabilidade automatica"
echo "  - Banco de dados gerenciado"
echo ""
echo "Kubernetes (K8s):"
echo "  - Maxima escalabilidade"
echo "  - Orquestracao de containers"
echo "  - Auto-scaling, rolling updates"
echo "=== Docker Compose Exemplo ==="
echo ""
echo "version: '3.8'"
echo "services:"
echo "  n8n:"
echo "    image: n8nio/n8n"
echo "    ports:"
echo "      - '5678:5678'"
echo "    environment:"
echo "      - N8N_HOST=n8n.exemplo.com"
echo "      - N8N_PROTOCOL=https"
echo "      - DB_TYPE=postgresdb"
echo "      - DB_POSTGRESDB_HOST=postgres"
echo "    volumes:"
echo "      - n8n_data:/home/node/.n8n"
echo "    depends_on:"
echo "      - postgres"
echo ""
echo "  postgres:"
echo "    image: postgres:15"
echo "    environment:"
echo "      - POSTGRES_DB=n8n"
echo "      - POSTGRES_USER=n8n"
echo "      - POSTGRES_PASSWORD=change-me"
echo "    volumes:"
echo "      - postgres_data:/var/lib/postgresql/data"

Versionamento (Git / Export)

echo "=== Versionamento de Workflows ==="
echo ""
echo "Exportar workflow (JSON):"
echo "  UI: Workflow > Settings > Download"
echo "  API: GET /rest/workflows/:id"
echo ""
echo "Importar workflow:"
echo "  UI: Workflow > Settings > Upload"
echo "  CLI: n8n import:workflow --input=workflow.json"
echo ""
echo "Git Flow recomendado:"
echo "  1. Exportar workflows como JSON"
echo "  2. Commitar no repositorio"
echo "  3. Versionar com tags semanticas"
echo "  4. CI/CD: Importar no ambiente alvo"
echo ""
echo "Boas praticas:"
echo "  - Nao commitar credenciais (usa env vars)"
echo "  - Manter um workflow por arquivo"
echo "  - Documentar dependencias externas"

Workflow Templates

echo "=== Templates de Workflow ==="
echo ""
echo "O N8N oferece templates nativos e comunidade:"
echo ""
echo "Templates populares:"
echo "  - Enviar email quando webhook receber dados"
echo "  - Backup automatico de banco"
echo "  - Integracao lead -> CRM -> Slack"
echo "  - Gerar relatorio e enviar por email"
echo "  - Moderacao de conteudo com AI"
echo ""
echo "Acessar: Settings > Templates"
echo "Ou: https://n8n.io/workflows/"

AI Nodes

echo "=== Nodes de Inteligencia Artificial ==="
echo ""
echo "OpenAI Node:"
echo "  - Chat Completion (GPT-4, GPT-3.5)"
echo "  - Text Completion"
echo "  - Image Generation (DALL-E)"
echo "  - Embeddings"
echo "  - Moderation"
echo ""
echo "Anthropic Node:"
echo "  - Messages (Claude 3 Opus/Sonnet/Haiku)"
echo "  - Text Completions"
echo ""
echo "LangChain Node:"
echo "  - Chains: LLM Chain, Retrieval QA"
echo "  - Memory: Buffer, Summary"
echo "  - Tools: Calculator, Search, Custom"
echo "  - Agents: Conversational, React"
echo ""
echo "Hugging Face Node:"
echo "  - Inference API"
echo "  - Modelos de texto, imagem, audio"
echo "=== Exemplo: Chat com OpenAI ==="
echo ""
echo "1. Trigger: Webhook POST /chat"
echo "   Body: { message: 'Ola!' }"
echo ""
echo "2. OpenAI Node: Chat Completion"
echo "   Model: gpt-4"
echo "   Messages:"
echo "     - role: system"
echo "       content: 'Voce e um assistente de vendas'"
echo "     - role: user"
echo "       content: '{{ \$json.message }}'"
echo ""
echo "3. Responder webhook:"
echo "   Response: { reply: {{ \$json.choices[0].message.content }} }"

Webhook Response Customization

echo "=== Customizando Resposta do Webhook ==="
echo ""
echo "Response Mode:"
echo "  - Last Node: Ultimo node define a resposta"
echo "  - First Node: Primeiro node define"
echo "  - Manual: Code node define"
echo ""
echo "Response Data:"
echo "  - All Entries: Array completo"
echo "  - First Entry: Primeiro item apenas"
echo "  - JSON: Customizado via expressao"
echo ""
echo "Exemplo de resposta customizada (Code Node):"
echo "  return [{"
echo "    json: {"
echo "      status: 'success',"
echo "      data: {"
echo "        orderId: '12345',"
echo "        estimatedDelivery: '2024-01-15'"
echo "      }"
echo "    }"
echo "  }];"

Static Webhook URLs

echo "=== Static Webhook URLs ==="
echo ""
echo "Por padrao, cada vez que um webhook e ativado,"
echo "uma nova URL e gerada."
echo ""
echo "Static Webhook URL: URL fixa independente de ativacao"
echo ""
echo "Vantagens:"
echo "  - URL unica para dev/prod"
echo "  - Ideal para integracoes externas fixas"
echo "  - Nao precisa reconfigurar APIs a cada deploy"
echo ""
echo "Configuracao:"
echo "  N8N_WEBHOOK_URL=https://n8n.exemplo.com/"
echo "  Usar path fixo: /webhook/meu-endpoint"

Workflows como API Endpoint

echo "=== Workflows como API ==="
echo ""
echo "Padrao: Workflow N8N como microservico"
echo ""
echo "Estrutura:"
echo "  POST /api/orders -> Webhook Node"
echo "    -> Code Node (validar)"
echo "    -> Code Node (processar)"
echo "    -> HTTP Request (ERP)"
echo "    -> Responder webhook"
echo ""
echo "Vantagens:"
echo "  - Logica visual, nao codigo"
echo "  - Facil manutencao"
echo "  - Credenciais centralizadas"
echo "  - Retry nativo"
echo "  - Monitoramento integrado"
echo ""
echo "Limitacoes:"
echo "  - Nao substitui API completa (alto throughput)"
echo "  - Latencia adicional vs codigo puro"
echo "  - Ideal para automacoes e integracoes"

Lab: Deploy Completo

cat > deploy_completo.sh << 'EOF'
echo "=== Lab: Deploy Completo N8N ==="
echo ""

echo "1. Docker Compose (producao)"
echo "  docker-compose up -d"
echo ""

echo "2. Configurar Nginx reverse proxy"
echo "  server {"
echo "    listen 443 ssl;"
echo "    server_name n8n.exemplo.com;"
echo "    location / {"
echo "      proxy_pass http://localhost:5678;"
echo "      proxy_http_version 1.1;"
echo "      proxy_set_header Upgrade \$http_upgrade;"
echo "      proxy_set_header Connection 'upgrade';"
echo "    }"
echo "  }"
echo ""

echo "3. Variaveis de ambiente"
echo "  export N8N_PROTOCOL=https"
echo "  export N8N_HOST=n8n.exemplo.com"
echo "  export WEBHOOK_URL=https://n8n.exemplo.com/"
echo ""

echo "4. Backup automato"
echo "  docker exec n8n_db pg_dump -U n8n > backup.sql"
echo ""

echo "5. Monitoramento"
echo "  docker logs -f n8n"
echo "  docker stats"
echo ""
EOF

O N8N e uma plataforma completa de automacao. De deploy simples com Docker a workflows como microservicos, o limite e sua criatividade.