Pular para o conteúdo
SelfHostBR
Guia Testado na prática

Instalar n8n com Node.js (sem Docker)

Instalação do n8n via npm, sem Docker e sem root, com medições reais de tempo e memória em perfis de 1 GB e 2 GB.

CSCaio Servidor Publicado em 13/10/2026 7 min de leitura

Testado em 13/10/2026. O teste rodou num servidor Linux compartilhado (Alpine Linux, x86_64), não numa VPS dedicada, como usuário comum: sem root e sem instalar pacotes do sistema. Simulei uma VPS pequena limitando o heap do Node.js (--max-old-space-size) e fixando a CPU com taskset. O disco e a rede do servidor são melhores que os de uma VPS de entrada, então os tempos podem ser piores na sua máquina.

Antes de começar: ao iniciar, o n8n 2.43.4 avisa que “Running n8n outside a container is deprecated. Future versions will require running n8n via the official Docker image.” Ou seja, a instalação via npm ainda funciona, mas o próprio n8n indica que vai deixar de suportá-la. Para produção, prefira o guia com Docker Compose.

Versões usadas

  • Node.js v24.21.0 (LTS “Krypton”, build musl de unofficial-builds.nodejs.org, porque o Alpine usa musl). O pacote n8n no npm exige node >= 24.0.0.
  • npm 11.19.0
  • n8n 2.43.4 (versão latest no npm em 13/10/2026), com o banco padrão SQLite.

1. Instale o Node.js na sua pasta (sem root)

mkdir -p ~/n8n-lab && cd ~/n8n-lab
V=v24.21.0
curl -fsSLO https://nodejs.org/dist/$V/node-$V-linux-x64.tar.xz   # em Alpine/musl use unofficial-builds.nodejs.org (…-linux-x64-musl)
tar xf node-$V-linux-x64.tar.xz
export PATH=$PWD/node-$V-linux-x64/bin:$PATH
node -v

Numa VPS com Ubuntu/Debian você também pode instalar o Node pelo gerenciador de pacotes ou pelo nvm. O importante é ter a versão 24.

2. Instale o n8n localmente

mkdir app && cd app && npm init -y
npm install [email protected]
./node_modules/.bin/n8n --version

No teste, o npm install levou 162 s e a pasta node_modules ficou com cerca de 2,8 a 3,1 GB. Reserve esse espaço em disco.

3. Inicie ouvindo só em localhost

export N8N_HOST=127.0.0.1 N8N_LISTEN_ADDRESS=127.0.0.1 N8N_PORT=5678
export GENERIC_TIMEZONE=America/Sao_Paulo
export NODE_OPTIONS=--max-old-space-size=768   # perfil de 1 GB
./node_modules/.bin/n8n start

O n8n também abre o Task Broker em 127.0.0.1:5679, e só pode haver uma instância por porta. Para acessar de fora, coloque um proxy reverso com HTTPS na frente (Caddy, Nginx ou Traefik) e nunca exponha a porta 5678 diretamente. Para manter rodando depois de fechar o terminal, use um serviço do systemd ou o pm2.

Resultados medidos

Workflow de teste: Webhook → Edit Fields → Respond to Webhook, importado com n8n import:workflow e ativado com n8n publish:workflow. Chamadas via curl a partir do próprio servidor. A memória é o RSS somado do processo principal e do task runner.

PerfilStartup até /healthz/readinessRSS ocioso200 chamadas sequenciais200 chamadas, 20 em paraleloRSS de pico
heap 768 MB, 1 CPU14,5 s~455 MB200/200 OK em 24,4 s200/200 OK em 22,7 s~795 MB
heap 1536 MB, 2 CPUs10,4 s~462 MB200/200 OK em 15,5 s(veja abaixo)~640 MB

Erros encontrados (e o que aprendi)

  • ulimit -v derruba o Node.js. Limitar a memória virtual com ulimit -v para imitar uma VPS de 1 GB fez o processo morrer na hora (Fatal process out of memory). Com um limite folgado de 16 GB, ele morreu durante a rajada de 20 chamadas em paralelo (Failed to reserve virtual memory for CodeRange), mesmo com RSS de só ~600 MB. O V8 reserva muito espaço virtual que não usa de fato. Não use ulimit -v com n8n. Para limitar memória de verdade, use o heap do Node (--max-old-space-size) ou limites de cgroup (systemd MemoryMax=, ou o mem_limit do Docker). Sem ulimit -v, o perfil de 1 GB passou nas 200 chamadas em paralelo, como mostra a tabela.
  • update:workflow está obsoleto: use n8n publish:workflow --id=.... Sem publicar, o webhook responde Published version not found for workflow.
  • N8N_RUNNERS_ENABLED não é mais necessário (o n8n avisa que a variável é obsoleta).
  • O aviso sobre o task runner Python (“virtual environment is missing”) não impede o funcionamento, a não ser que você use Python no nó Code.

Conclusão

Para um teste ou uso pessoal leve, 1 GB de RAM livre para o n8n bastou neste workflow simples, com pico de ~800 MB numa rajada de 20 chamadas em paralelo. Para produção, a VPS precisa de folga para o sistema e o proxy, e o caminho recomendado pelo próprio n8n é o Docker. Veja a calculadora e a tabela de preços.

CS

Escrito por

Caio Servidor

Desenvolvedor brasileiro, mantenho meus próprios servidores e automações. Viu um erro ou preço desatualizado? Me avise.

Continue lendo