Implantação do Embed
Este guia explica como implantar o n8n embarcado em ambiente de produção, cobrindo segurança, autenticação, performance, monitoramento, exemplos de deployment e troubleshooting para garantir integração robusta e segura com sua aplicação.
Segurança e Boas Práticas
Checklist de Segurança para Iframes
- Use
ouX-Frame-Options: SAMEORIGIN
para restringir domíniosALLOW-FROM
- Implemente
para limitar origens do embedContent-Security-Policy
- Ative HTTPS obrigatório para todas as comunicações
- Restrinja tokens de autenticação por tempo e escopo
- Valide permissões do usuário a cada requisição
Exemplo de headers Nginx
add_header X-Frame-Options "ALLOW-FROM https://app.suaempresa.com" always;
add_header Content-Security-Policy "frame-ancestors 'self' https://app.suaempresa.com" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
SSO e Autenticação
Passos para SSO Empresarial
- Configure SAML, OAuth2 ou LDAP conforme o sistema da empresa
- Mapeie usuários e permissões automaticamente
- Use tokens JWT ou API Key para autenticação do embed
- Exemplo de configuração SAML:
N8N_SAML_ENABLED=true
N8N_SAML_ISSUER=https://sso.suaempresa.com
N8N_SAML_ENTRY_POINT=https://sso.suaempresa.com/sso
N8N_SAML_CERT=/path/to/certificate.pem
- Exemplo de configuração OAuth2:
N8N_OAUTH2_AUTH_URL=https://sso.suaempresa.com/oauth/authorize
N8N_OAUTH2_TOKEN_URL=https://sso.suaempresa.com/oauth/token
N8N_OAUTH2_CLIENT_ID=seu_client_id
N8N_OAUTH2_CLIENT_SECRET=seu_client_secret
Performance e Otimização
Recomendações
- Use lazy loading para carregar o embed apenas quando necessário
- Ative cache de assets estáticos (CSS, JS, imagens)
- Monitore o tempo de carregamento do iframe
- Utilize CDN para servir arquivos estáticos do n8n
- Limite o número de workflows carregados por vez
Exemplo de cache Nginx
location ~* \.(js|css|png|jpg|svg)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000";
}
Monitoramento e Troubleshooting
Logs e Alertas
- Ative logs de acesso e auditoria no backend do n8n
- Configure alertas para falhas de autenticação e erros de integração
- Use webhooks para notificar eventos críticos (ex: workflow.error, workflow.saved)
- Exemplo de webhook para monitoramento:
{
"event": "workflow.error",
"workflowId": "abc123",
"user": "user@empresa.com",
"timestamp": "2024-06-01T12:00:00Z",
"error": "Token inválido"
}
Estratégias de Fallback
- Exiba mensagens de erro amigáveis no embed
- Implemente retry automático para falhas temporárias
- Redirecione para tela de login em caso de sessão expirada
- Mantenha logs detalhados para análise de incidentes
Exemplos de Deployment
Docker Compose para Produção
version: '3.8'
services:
n8n:
image: n8nio/n8n
environment:
- N8N_HOST=n8n.suaempresa.com
- N8N_PROTOCOL=https
- N8N_PORT=5678
- N8N_USER_MANAGEMENT_DISABLED=false
- N8N_RBAC_ENABLED=true
- N8N_THEME_PRIMARY_COLOR=#ea4b71
- N8N_THEME_LOGO_URL=https://suaempresa.com/logo.png
- N8N_SAML_ENABLED=true
- N8N_SAML_ISSUER=https://sso.suaempresa.com
- N8N_SAML_ENTRY_POINT=https://sso.suaempresa.com/sso
- N8N_SAML_CERT=/path/to/certificate.pem
volumes:
- n8n_data:/home/node/.n8n
ports:
- "5678:5678"
restart: always
depends_on:
- postgres
postgres:
image: postgres:15
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=senha_forte
- POSTGRES_DB=n8n
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
n8n_data:
pg_data:
Proxy Reverso com Nginx
server {
listen 443 ssl http2;
server_name n8n.suaempresa.com;
ssl_certificate /etc/letsencrypt/live/n8n.suaempresa.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.suaempresa.com/privkey.pem;
add_header X-Frame-Options "ALLOW-FROM https://app.suaempresa.com" always;
add_header Content-Security-Policy "frame-ancestors 'self' https://app.suaempresa.com" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
CI/CD para Automação de Deployment
- Use GitHub Actions, GitLab CI ou outra ferramenta para automatizar build e deploy
- Exemplo de job para deploy automático:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy para servidor
run: |
docker-compose pull
docker-compose up -d
Checklist de Produção
- HTTPS obrigatório e certificado válido
- Domínios permitidos configurados (CORS e CSP)
- SSO e autenticação integrados
- Permissões e RBAC revisados
- Monitoramento e alertas ativos
- Mensagens de erro amigáveis e logs detalhados
- Backup e restore testados
- CI/CD automatizado para deploy
Dica Pro
Automatize o deploy do embed com CI/CD e monitore o uso do iframe para identificar gargalos de performance.
Importante
Nunca exponha o n8n embed sem HTTPS e sem restrição de domínios. Teste todos os fluxos de autenticação e fallback antes de liberar para produção.