Skip to main content

Command Palette

Search for a command to run...

Como instalar o N8N no Ubuntu 24.04 LTS

Updated
4 min read
L

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