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.