Pular para o conteúdo

Automatizar fluxos de trabalho com n8n no Linux via VPS

Por Equipe Técnica AviraHost · 13 min de leitura · Atualizado em · n8n, automação, linux, vps, integrações, workflow, docker, aviahost · 0

Automatizar fluxos de trabalho com n8n no Linux significa configurar o n8n como serviço permanente em uma VPS para executar integrações entre APIs, bancos de dados e aplicações sem intervenção manual. Para colocar isso em produção, siga estes passos:

  1. Instale Node.js 22 LTS ou use Docker na VPS Linux
  2. Configure o n8n com variáveis de ambiente e banco de dados
  3. Crie um serviço systemd ou container com reinício automático
  4. Configure proxy reverso com Nginx e SSL
  5. Crie workflows com triggers de cron, webhook ou eventos
  6. Monitore execuções e configure backups periódicos

Pré-requisitos

  • VPS Linux com Ubuntu 24.04 LTS ou Debian 13, acesso root via SSH
  • Domínio apontado para o IP da VPS (para proxy reverso com SSL)
  • Node.js 22 LTS ou 24 LTS instalado, ou Docker e Docker Compose
  • Nginx instalado para servir como proxy reverso
  • Certbot e plugin Nginx instalados (apt install certbot python3-certbot-nginx)
  • Conhecimento básico de systemd e variáveis de ambiente
  • Porta 443 e 80 liberadas no firewall da VPS

Instalando o n8n para automação de workflows

A automação de workflows com n8n depende de uma instalação estável que não quebre a cada atualização do sistema. Existem duas rotas principais no Linux: instalação via npm direto no sistema, ou via Docker, que isola dependências. Para quem já passou pela instalação básica, o artigo n8n no VPS Linux: instale e automatize em 2026 cobre o setup inicial em detalhes — aqui o foco é configurar automações recorrentes e mantê-las rodando de forma confiável.

Se optar por Docker, crie um diretório dedicado, ajuste as permissões para o usuário interno do container (UID 1000) e edite o arquivo docker-compose.yml:

mkdir -p /opt/n8n/data
chown -R 1000:1000 /opt/n8n/data
cd /opt/n8n
nano docker-compose.yml

Conteúdo do arquivo:

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - N8N_HOST=seudominio.com.br
      - N8N_PROTOCOL=https
      - N8N_PORT=5678
      - WEBHOOK_URL=https://seudominio.com.br/
      - GENERIC_TIMEZONE=America/Sao_Paulo
    volumes:
      - ./data:/home/node/.n8n

Em produção, prefira fixar uma versão específica no lugar de latest (ex.: docker.n8n.io/n8nio/n8n:1.x.y) para evitar migrações de banco involuntárias ao recriar o container. Suba o container:

docker compose up -d

A política restart: unless-stopped garante que o n8n volte automaticamente após reinicialização do Docker ou do próprio VPS, sem precisar de script manual.

Configurando banco de dados e persistência de workflows

Workflows criados no n8n e suas execuções precisam de armazenamento confiável para não se perderem em falhas. Por padrão, o n8n usa SQLite, o que funciona bem para poucos fluxos, mas pode gerar contenção e serialização de escritas quando várias automações rodam ao mesmo tempo. Para produção, configure PostgreSQL adicionando variáveis ao compose:

environment:
  - DB_TYPE=postgresdb
  - DB_POSTGRESDB_HOST=postgres
  - DB_POSTGRESDB_PORT=5432
  - DB_POSTGRESDB_DATABASE=n8n
  - DB_POSTGRESDB_USER=n8n_user
  - DB_POSTGRESDB_PASSWORD=senha_forte_aqui

Inclua o serviço do PostgreSQL no mesmo docker-compose.yml ou aponte para uma instância já existente na VPS. Guarde a senha em um arquivo .env separado em vez de deixá-la hardcoded no compose, e restrinja a leitura desse arquivo:

chmod 600 .env

Atenção: trocar o banco de dados não migra os dados automaticamente. Antes de alterar DB_TYPE, exporte os workflows e credenciais existentes de dentro do container:

docker compose exec n8n n8n export:workflow --all --output=/home/node/.n8n/workflows-backup.json
docker compose exec n8n n8n export:credentials --all --output=/home/node/.n8n/credentials-backup.json

Configure o PostgreSQL com a mesma N8N_ENCRYPTION_KEY utilizada no SQLite, suba o container e reimporte:

docker compose exec n8n n8n import:workflow --input=/home/node/.n8n/workflows-backup.json
docker compose exec n8n n8n import:credentials --input=/home/node/.n8n/credentials-backup.json

A variável N8N_ENCRYPTION_KEY também deve ser definida e preservada — ela criptografa credenciais salvas nos workflows. Perder essa chave torna as credenciais existentes irrecuperáveis, mesmo com backup do banco.

Expondo o n8n com proxy reverso e SSL

O proxy reverso com Nginx protege o n8n de exposição direta na internet e permite certificado SSL válido. Como o container está publicado só em 127.0.0.1:5678, ele não é acessível externamente sem essa camada. Crie um bloco de servidor em /etc/nginx/sites-available/n8n.conf:

server {
    listen 80;
    server_name seudominio.com.br;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Ative o site e recarregue o Nginx:

ln -s /etc/nginx/sites-available/n8n.conf /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

Saída esperada do teste de configuração:

nginx: configuration file /etc/nginx/nginx.conf test is successful

Instale o Certbot e o plugin para Nginx caso ainda não estejam presentes, e então emita o certificado:

apt install certbot python3-certbot-nginx
certbot --nginx -d seudominio.com.br

Para detalhes de configuração avançada do Nginx, como limites de conexão simultânea que ajudam a proteger a interface do n8n contra picos de tráfego, veja o artigo sobre limite de conexões simultâneas no Nginx. Para uma camada extra de proteção antes do login do n8n, configure autenticação HTTP no Nginx com auth_basic e auth_basic_user_file, excluindo as rotas /webhook/ e /webhook-test/ para não bloquear chamadas externas. O gerenciamento de usuários nativo do n8n, com suporte a 2FA, controla o acesso à interface da aplicação.

Criando workflows automatizados e triggers

Integrações com n8n ganham valor real quando os workflows disparam sozinhos, sem clique manual. O n8n oferece três tipos principais de trigger: Schedule Trigger (agendamento recorrente), Webhook (chamada HTTP externa) e eventos de aplicativos conectados via nós nativos. Para um workflow agendado, adicione o nó "Schedule Trigger" e defina o intervalo — por exemplo, a cada 15 minutos para sincronizar um CRM com uma planilha.

Para integrações disparadas por sistemas externos, use o nó "Webhook", que gera uma URL única como https://seudominio.com.br/webhook/abc123. Essa URL pode ser chamada por outro serviço, por um formulário ou por outro script na mesma VPS. Combine isso com nós de HTTP Request para consumir APIs REST, e com nós de transformação de dados (Edit Fields (Set) e Code) para ajustar o payload antes de enviá-lo adiante.

Se o objetivo for automatizar deploys ou pipelines de CI/CD junto com os workflows do n8n, vale revisar como funciona o deploy contínuo com webhooks e PM2, já que a lógica de disparo via webhook é semelhante.

Protegendo o acesso com firewall

Restringir portas abertas na VPS reduz a superfície de ataque contra o n8n e o banco de dados associado. Como o n8n só precisa ser acessado via Nginx nas portas 80 e 443, a porta 5678 não deve ficar exposta publicamente — e com o bind em 127.0.0.1 já configurado, ela nem aparece como acessível externamente. Ainda assim, configure um firewall para bloquear qualquer porta não utilizada:

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Para um controle mais granular com nftables, incluindo regras específicas por IP de origem para a porta SSH, consulte o guia de firewall com nftables em VPS Linux.

Problemas comuns e como resolver

Sintoma: n8n não inicia após reboot da VPS

Causa: o container Docker não foi configurado com política de reinício, ou o serviço systemd não está habilitado para iniciar no boot.
Solução: confirme a política com docker inspect n8n --format='{{.HostConfig.RestartPolicy.Name}}'; se não for unless-stopped, recrie o container com essa opção no compose. Para instalação via systemd, habilite e inicie a unidade com systemctl enable --now n8n, garantindo que a seção [Install] contenha WantedBy=multi-user.target.

Sintoma: webhooks retornam erro 502 Bad Gateway

Causa: o container do n8n está parado ou o Nginx está apontando para a porta errada.
Solução: verifique se o container está ativo com docker ps e confira os logs do Nginx em /var/log/nginx/error.log. Confirme que proxy_pass aponta para 127.0.0.1:5678 e que a porta coincide com a exposta no compose.

Sintoma: execuções de workflow travam ou demoram para processar

Causa: uso de SQLite sob carga concorrente, gerando contenção e serialização de escritas entre execuções simultâneas.
Solução: antes de migrar, exporte os dados existentes com docker compose exec n8n n8n export:workflow --all --output=/home/node/.n8n/workflows-backup.json e docker compose exec n8n n8n export:credentials --all --output=/home/node/.n8n/credentials-backup.json. Configure o PostgreSQL com a mesma N8N_ENCRYPTION_KEY, suba o container apontando para o novo banco e reimporte com os comandos import:workflow e import:credentials. Monitore também a fila de execuções no painel do n8n para identificar workflows com loops ou chamadas HTTP lentas sem timeout definido.

Perguntas frequentes

O n8n precisa de banco de dados externo para funcionar?

Não obrigatoriamente, pois o n8n pode usar SQLite por padrão para pequenos volumes de automações. Porém, para produção com múltiplos workflows e execuções simultâneas, recomenda-se configurar PostgreSQL via variáveis de ambiente DB_TYPE e DB_POSTGRESDB_* para reduzir a contenção e a serialização de escritas do SQLite e melhorar a concorrência sob carga.

Como faço para o n8n rodar permanentemente mesmo após reiniciar o VPS?

Execute via Docker com a política de reinício restart: unless-stopped, que faz o container voltar automaticamente após reboot. Para instalação via systemd, configure Restart=always na unit e habilite o serviço para iniciar no boot com systemctl enable --now n8n, garantindo que a seção [Install] contenha WantedBy=multi-user.target. Apenas configurar Restart=always sem habilitar a unit não é suficiente para iniciar o serviço após reinicialização da VPS.

É seguro expor o n8n diretamente na internet sem proxy reverso?

Não é recomendado, pois a interface do n8n sem proteção adicional fica vulnerável a acessos não autorizados. O ideal é usar um proxy reverso como Nginx com SSL via Let's Encrypt e ativar o gerenciamento de usuários nativo do n8n, que inclui suporte a 2FA. Para uma camada extra antes do login, configure auth_basic no Nginx excluindo as rotas /webhook/ e /webhook-test/ para não bloquear chamadas externas, ou restrinja o acesso por IP de origem.

Qual a diferença entre rodar n8n com Docker e instalação via npm no Linux?

A instalação via Docker isola dependências, facilita atualizações e evita conflitos com a versão do Node.js do sistema, sendo a opção mais recomendada para produção. Já a instalação via npm é mais simples para testes rápidos, mas exige gerenciamento manual de versões do Node.js 22 ou 24 LTS e das dependências do sistema.

Como faço backup dos workflows e credenciais do n8n?

No setup com Docker Compose descrito neste artigo, os dados persistentes ficam em /opt/n8n/data no host (mapeado para /home/node/.n8n no container). Faça backup regular desse diretório e do banco de dados — use pg_dump para PostgreSQL; para SQLite, pare o container antes de copiar o arquivo para garantir consistência. Preserve também o valor de N8N_ENCRYPTION_KEY (definido no arquivo .env ou como variável de ambiente), pois sem ela as credenciais salvas não podem ser descriptografadas mesmo com o banco intacto. Teste periodicamente a restauração para validar os backups.

Conclusão

  • Use Docker com política de reinício automático para manter o n8n sempre disponível na VPS
  • Migre para PostgreSQL antes de colocar workflows críticos em produção, exportando e reimportando os dados existentes
  • Proteja o acesso com proxy reverso SSL, gerenciamento de usuários nativo do n8n e firewall restrito às portas necessárias

Leia também

Precisa de ajuda com automação n8n na VPS?

Configurar e manter workflows do n8n em produção exige uma VPS estável, com recursos previsíveis para execuções simultâneas. Conheça os planos de VPS da AviraHost e escolha a configuração ideal para suas automações.

Ver planos de VPS Linux


Esta resposta foi útil?