Como instalar o N8N no Ubuntu 24.04 LTS
PHP Developer, Laravel Lover ❤️, Entrepreneur, Founder @ Bee Delivery
Cadastre-se na DigitalOcean, basta usar o meu link e ganhar $200 dólares para seus projetos, válidos por 60 dias! Clique em: QUERO OS 200tão
Este tutorial esta disponível em vídeo no YouTube: https://www.youtube.com/watch?v=KZh9Wodsa40
Atualizando o sistema operacional
1º Passo - Atualize o sistema operacional.
sudo apt update && sudo apt upgrade -y
Instalação do Node e NPM
No site oficial do node.js você pode baixar os binários mais recentes como mostra a figura abaixo. Na data que escrevo, a versão LTS(long time support) é a 22.19.0. Usaremos ela neste tutorial.
2º Passo - Use o comando abaixo no seu terminal para baixar os binários.
curl -o node.tar.xz https://nodejs.org/dist/v22.19.0/node-v22.19.0-linux-x64.tar.xz
3º Passo - Use o comando abaixo para descompatar o pacote e entrar na pasta.
tar -xf node.tar.xz && cd node-v22.19.0-linux-x64
4º Passo - Com o comando abaixo, vamos copiar os arquivos para que fiquem disponíveis globalmente.
sudo cp -R * /usr/local/
Pronto! Feito isso o noje deve estar disponível para uso. Execute os comandos abaixo para verificar.
node -v && npm -v && cd ..
Se tudo estiver correto, você deve ver algo como mostrado na figura.

Instalação do PostgresSQL
5º Passo - Instale o PostgreSQL
sudo apt install postgresql postgresql-contrib -y
6º Passo - Verifique se o serviço está ativo:
sudo systemctl status postgresql
7º Passo - Entre no usuário administrativo postgres:
sudo -i -u postgres
8º Passo - Abra o prompt do PostgreSQL:
psql
9º Passo - Agora execute os comandos SQL:
⚠️ Não esqueça de trocar pela sua própria senha segura.
-- Criar um novo usuario
CREATE ROLE n8n_user WITH LOGIN PASSWORD 'coloque-sua-senha-super-forte-aqui';
-- Criar banco de dados
CREATE DATABASE n8n_db OWNER n8n_user;
-- Dar permissões ao usuário no banco
GRANT ALL PRIVILEGES ON DATABASE n8n_db TO n8n_user;
GRANT ALL ON SCHEMA public TO n8n_user;
ALTER SCHEMA public OWNER TO n8n_user;
10º Passo - Agora desconecte do banco
\q
11º Passo - Desconecte do usuário postgres
exit
Instalação do N8N
12º Passo -Instale o N8N
npm install n8n -g
13º Passo - Crie um usuário específico para o n8n:
sudo adduser --system --group --home /home/n8n n8n
14º Passo - Configure o diretório onde o n8n armazenará arquivos e credenciais.
sudo mkdir -p /home/n8n/.n8n
sudo chown -R n8n:n8n /home/n8n/.n8n
15º Passo - Gere uma chave de criptografia nova com o comando abaixo, vamos usar em seguida.
openssl rand -base64 48
16º Passo - Crie um arquivo .env para o serviço (centraliza configs e fica fácil de manter):
sudo nano /home/n8n/.n8n/.env
17º Passo - Copie o conteúdo abaixo no arquivo .env que você acabou de criar.
# ===== Core =====
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
N8N_USER_FOLDER=/home/n8n/.n8n
N8N_HOST=IP-DO-SEU-SERVIDOR
N8N_PORT=5678
# Se for expor publicamente, defina BASE_URL (https://seu-dominio):
# N8N_EDITOR_BASE_URL=https://seu-dominio
# WEBHOOK_URL=https://seu-dominio/
N8N_RUNNERS_ENABLED=true
N8N_SECURE_COOKIE=false
# ===== Banco (Postgres) =====
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=127.0.0.1
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n_db
DB_POSTGRESDB_USER=n8n_user
DB_POSTGRESDB_PASSWORD=coloque-sua-senha-super-forte-aqui
# Pool (opcional, melhora estabilidade)
DB_POSTGRESDB_POOL_SIZE=10
# ===== Segurança (ajuste conforme seu cenário) =====
# Basic Auth no editor
#N8N_BASIC_AUTH_ACTIVE=true
#N8N_BASIC_AUTH_USER=admin
#N8N_BASIC_AUTH_PASSWORD=outra-senha-super-forte
# Chave de criptografia para credenciais
N8N_ENCRYPTION_KEY=COLOQUE-AQUI-A-CHAVE-DE-CRIPTOGRAFIA-QUE-VOCE-GEROU
# ===== Filas (opcional) - se usar filas com Redis =====
# QUEUE_BULL_REDIS_HOST=127.0.0.1
# QUEUE_BULL_REDIS_PORT=6379
18º Passo - Aplique permissões restritivas:
sudo chmod 600 /home/n8n/.n8n/.env
19º Passo - Crie o arquivo de serviço para rodar o n8n com o systemd.
Isso garante que o n8n seja iniciado automaticamente junto com o servidor e seja monitorado.
sudo nano /etc/systemd/system/n8n.service
20º Passo - Copie o conteúdo abaixo para o arquivo que você acabou de criar.
[Unit]
Description=n8n Automation (Workflow) Service
After=network-online.target postgresql.service
Wants=network-online.target
[Service]
# Usuário dedicado
User=n8n
Group=n8n
EnvironmentFile=/home/n8n/.n8n/.env
WorkingDirectory=/home/n8n
# Início do app
ExecStart=/usr/local/bin/n8n start
Restart=always
RestartSec=5
# Limites e robustez
LimitNOFILE=65535
# Logs no journal (journalctl)
StandardOutput=journal
StandardError=journal
# Hardening (ajuste se precisar de acesso fora do home)
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=read-only
ReadWritePaths=/home/n8n /tmp /var/tmp
# Se o n8n precisar bindar portas <1024, remova a linha abaixo
CapabilityBoundingSet=
AmbientCapabilities=
# Timeout maior para migrações iniciais
TimeoutStartSec=120
[Install]
WantedBy=multi-user.target
21º Passo - Recarregue o systemd, habilite o serviço do n8n na inicialização e inicie-o imediatamente.
sudo systemctl daemon-reload
sudo systemctl enable n8n
sudo systemctl start n8n
22º Passo - Verifique se o serviço está rodando corretamente.
systemctl status n8n
journalctl -u n8n -f
Solução de Problemas
Se aparecer erro de migração/permite no Postgres, rode um teste manual:
sudo -u n8n env $(cat /home/n8n/.n8n/.env | xargs) n8n start
Assim você vê erros com as mesmas variáveis do serviço.
Te ajudei?
Me paga uma cerveja! 🍺😁
PIX QrCode
