Automação com n8n Self-Hosted: Slack, Google Sheets e Fila Redis

10 min de leitura Automação
Automação com n8n Self-Hosted: Slack, Google Sheets e Fila Redis

Introdução à Automação com n8n Self-Hosted

No cenário atual de infraestrutura de TI e desenvolvimento de software, a capacidade de reagir instantaneamente a eventos é um diferencial crítico. Seja para alertar uma equipe sobre falhas em servidores, sincronizar dados entre sistemas legados ou disparar notificações operacionais, a automação deixa de ser um luxo e torna-se uma necessidade operacional. Para profissionais que buscam controle total sobre seus dados e privacidade, o n8n surge como a solução ideal. Diferente de plataformas SaaS tradicionais, o n8n é uma ferramenta de automação de fluxos de trabalho (workflow) fair-code, que pode ser facilmente implantada em sua própria infraestrutura via Docker.

Neste tutorial técnico, vamos construir um workflow robusto que conecta Google Sheets, processa dados e envia notificações em tempo real para o Slack. Utilizaremos uma stack moderna baseada em Docker, com armazenamento persistente em PostgreSQL e otimização de cache via Redis. Este setup garante alta disponibilidade, escalabilidade e a flexibilidade necessária para ambientes de produção ou laboratórios de desenvolvimento no Brasil.

Arquitetura da Solução

Antes de executar os comandos, é fundamental compreender a arquitetura que iremos montar. O n8n funciona como o orquestrador central (o "cérebro") do workflow. Para que ele persista informações sobre o estado dos nós e dados de execução entre reinicializações, precisamos de um banco de dados relacional robusto. Escolhemos o PostgreSQL por sua estabilidade e suporte nativo a JSONB, permitindo armazenar payloads complexos de forma eficiente.

Além disso, para garantir que o n8n responda rapidamente sob carga, configuraremos o Redis como cache. Isso acelera a recuperação de credenciais salvas e dados de sessões, reduzindo a latência nas chamadas de API. O container principal do n8n se comunicará com os serviços externos (Google Sheets e Slack) através da internet, mas manterá o estado interno seguro dentro do nosso ambiente Docker.

Passo 1: Preparação do Ambiente Docker

A primeira etapa é criar a estrutura de diretórios que abrigará as configurações e dados persistentes. Isso evita que, ao atualizar ou reiniciar os containers, você perca o histórico de execuções ou credenciais configuradas.

Crie um diretório raiz para o projeto, por exemplo, n8n-automation. Dentro dele, criaremos pastas específicas para o banco de dados e para configurações do n8n.

mkdir -p n8n-automation/db/data
mkdir -p n8n-automation/n8n/config
cd n8n-automation

Agora, vamos criar o arquivo docker-compose.yml. Este arquivo definirá os serviços necessários: o banco de dados PostgreSQL, o cache Redis e a instância principal do n8n. Copie e cole o seguinte conteúdo no seu editor de texto:

version: '3.8'

services:
  db:
    image: postgres:15-alpine
    restart: always
    environment:
      POSTGRES_USER: n8n_user
      POSTGRES_PASSWORD: senha_forte_aqui
      POSTGRES_DB: n8n_db
    volumes:
      - ./db/data:/var/lib/postgresql/data
    networks:
      - n8n_network

  redis:
    image: redis:7-alpine
    restart: always
    command: redis-server --appendonly yes
    volumes:
      - ./redis/data:/data
    networks:
      - n8n_network

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=db
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_USER=n8n_user
      - DB_POSTGRESDB_PASSWORD=senha_forte_aqui
      - DB_POSTGRESDB_DATABASE=n8n_db
      - N8N_SECURE_COOKIE=false
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=168
    ports:
      - "5678:5678"
    volumes:
      - ./n8n/config:/home/node/.n8n
      - n8n_data:/home/node/.n8n
    depends_on:
      - db
      - redis
    networks:
      - n8n_network

volumes:
  n8n_data:

networks:
  n8n_network:
    driver: bridge

Nota de Segurança: Substitua senha_forte_aqui por uma senha complexa e única. Em produção, utilize variáveis de ambiente gerenciadas ou secrets do Docker para não expor senhas em texto plano no arquivo compose.

Passo 2: Inicialização dos Serviços

Com o arquivo docker-compose.yml configurado, inicie os containers. O Docker irá baixar as imagens necessárias (PostgreSQL, Redis e n8n) e montar os volumes persistentes.

docker compose up -d

Aguarde alguns instantes para que o banco de dados inicialize. Você pode verificar o status dos containers com:

docker compose ps

Todos os serviços devem aparecer com o status "Up". Acesse http://localhost:5678 no seu navegador. Você verá a tela de criação da conta administrativa do n8n. Crie um usuário e senha locais para acessar a interface web (Editor). Uma vez logado, você estará pronto para construir o workflow.

Passo 3: Configuração do Google Sheets

O nosso workflow será acionado quando uma nova linha for adicionada a uma planilha específica. Para isso, precisamos configurar as credenciais de API do Google Cloud.

  1. Crie um Projeto no Google Cloud Console: Acesse o console.google.com, crie um novo projeto e ative a Google Sheets API.
  2. Crie uma Conta de Serviço: Vá em "IAM e Administração" > "Contas de Serviço". Crie uma nova conta com permissão de editor na planilha.
  3. Gere a Chave JSON: Na aba "Chaves" da conta de serviço, clique em "Adicionar chave" > "Criar chave nova" > "JSON". Baixe o arquivo e renomeie-o para google-credentials.json.
  4. Compartilhe a Planilha: Abra sua planilha no Google Sheets e compartilhe o email da conta de serviço criada como "Editor". Isso é crucial; sem essa permissão, o n8n não conseguirá ler os dados.

No n8n, vá até o ícone de engrenagem (Configurações) > "Credential Types". Procure por Google Sheets, faça upload do arquivo JSON ou cole as credenciais manualmente. Salve a credencial com um nome descritivo, como GSheet_Creds.

Passo 4: Configuração do Slack Webhook

Para enviar notificações ao Slack sem precisar configurar OAuth completo (que é mais complexo para workflows simples de saída), utilizaremos um Incoming Webhook.

  1. Acesse api.slack.com/apps e crie um novo aplicativo.
  2. Nas configurações do app, ative Incoming Webhooks.
  3. Crie um novo Webhook e selecione o canal do Slack onde deseja receber os alertas (ex: #devops-alerts).
  4. Copie a URL do Webhook. Ela se parece com https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX.

No n8n, adicione um novo nó de credencial chamado Slack Webhook. Cole a URL copiada. O n8n validará a conexão e permitirá que você use esse nó para enviar mensagens.

Passo 5: Construindo o Workflow no Editor

Agora entra a parte criativa da automação. No editor do n8n, adicione os seguintes nós em sequência:

5.1 Gatilho: Google Sheets Trigger

Adicione o nó Google Sheets (Trigger). Configure-o para:

  • Credential: Selecione as credenciais configuradas no Passo 3.
  • Spreadsheet ID: Cole o ID da sua planilha (encontrado na URL da planilha).
  • Sheet Name: Selecione a aba específica.
  • Trigger Event: Escolha New Row.

Este nó ficará em espera, monitorando a planilha. Quando uma nova linha for inserida, ele disparará o workflow e enviará os dados da linha como JSON para o próximo nó.

5.2 Processamento: Transformação de Dados

Adicione um nó Edit Fields (ou Set). Aqui, você pode formatar a mensagem que será enviada. Por exemplo, se sua planilha tem colunas "Nome", "Prioridade" e "Descrição", você pode criar uma variável message no formato:

Novo Ticket: {{ $json["Nome"] }}
Prioridade: {{ $json["Prioridade"] }}
Detalhes: {{ $json["Descrição"] }}

Isso garante que a notificação no Slack seja legível e contextualizada, em vez de apenas jogar o JSON cru.

5.3 Ação: Slack Webhook

Adicione o nó Slack Webhook. Configure:

  • Credential: Selecione o Webhook configurado no Passo 4.
  • Channel: O canal de destino (se não for definido na URL do webhook).
  • Message: Use a expressão para inserir o texto formatado criado no nó anterior. Ex: {{ $json["message"] }}.

Passo 6: Teste e Validação

Com o workflow conectado, clique em Ativar (toggle switch no topo). O nó do Google Sheets mudará para "Listening".

Agora, vá até sua planilha no Google Sheets e insira uma nova linha com dados de teste. Aguarde alguns segundos. Você deve receber uma notificação instantânea no canal do Slack configurado. Se a mensagem chegar corretamente, seu workflow está funcional.

Se houver erros, verifique:

  1. As permissões da conta de serviço no Google Cloud.
  2. A URL do Webhook do Slack não foi alterada ou revogada.
  3. Os logs do container n8n via docker compose logs -f n8n para identificar erros de conexão.

Otimizações e Boas Práticas para Produção

Embora o setup básico funcione bem, ambientes de produção exigem considerações adicionais de performance e segurança.

Gestão de Memória

O n8n pode consumir bastante memória RAM dependendo do volume de execuções. Em seu docker-compose.yml, você pode limitar os recursos:

  n8n:
    image: docker.n8n.io/n8nio/n8n
    deploy:
      resources:
        limits:
          memory: 2G
    environment:
      - N8N_EXECUTIONS_DATA_PRUNE=true
      - N8N_EXECUTIONS_DATA_MAX_AGE=168

As variáveis N8N_EXECUTIONS_DATA_PRUNE e N8N_EXECUTIONS_DATA_MAX_AGE são cruciais. Elas limpam automaticamente o histórico de execuções antigas, evitando que seu banco de dados PostgreSQL cresça indefinidamente.

Segurança de Acesso

Não exponha a porta 5678 diretamente na internet sem proteção. Utilize um proxy reverso como Nginx ou Traefik, configurando autenticação básica e certificados SSL/TLS (Let's Encrypt). Isso protege seu painel administrativo contra acessos não autorizados.

Backup do Banco de Dados

Como estamos usando PostgreSQL em um volume Docker, é vital implementar backups automáticos. Você pode utilizar uma imagem auxiliar como prodrigestivill/postgres-backup-local para rodar dumps diários do banco n8n_db para um bucket S3 ou diretório local montado.

Conclusão

A combinação de n8n self-hosted, Docker, PostgreSQL e Redis oferece uma plataforma de automação poderosa, segura e altamente personalizável. Ao integrar com ferramentas como Google Sheets e Slack, você cria loops de feedback instantâneos que melhoram a eficiência operacional da sua equipe.

Este tutorial forneceu as bases para um workflow de notificação simples, mas a lógica pode ser expandida para incluir processamento de imagens, integração com CRMs, envio de e-mails ou controle de infraestrutura cloud. A chave é experimentar com os nós disponíveis na vasta biblioteca do n8n e manter sua stack de containers atualizada.

Com esta implementação, você não apenas automatiza tarefas repetitivas, mas também ganha visibilidade total sobre seus processos de dados, alinhando-se às melhores práticas de DevOps e SRE para equipes modernas no Brasil.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000