# Como instalar o N8N no Ubuntu 24.04 LTS

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](https://m.do.co/c/b7582264f56f)

Este tutorial esta disponível em vídeo no YouTube: [https://www.youtube.com/watch?v=KZh9Wodsa40](https://www.youtube.com/watch?v=KZh9Wodsa40)

## Atualizando o sistema operacional

**1º Passo** - Atualize o sistema operacional.

```plaintext
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.

```plaintext
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.

```plaintext
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.

```plaintext
sudo cp -R * /usr/local/
```

Pronto! Feito isso o noje deve estar disponível para uso. Execute os comandos abaixo para verificar.

```plaintext
node -v && npm -v && cd ..
```

Se tudo estiver correto, você deve ver algo como mostrado na figura.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1743533596855/4f82b112-2e6d-482d-b538-2dfd5244b576.png?auto=compress,format&format=webp align="center")

## Instalação do PostgresSQL

**5º Passo** - Instale o PostgreSQL

```plaintext
sudo apt install postgresql postgresql-contrib -y
```

**6º Passo** - Verifique se o serviço está ativo:

```plaintext
sudo systemctl status postgresql
```

**7º Passo** - Entre no usuário administrativo `postgres`:

```plaintext
sudo -i -u postgres
```

**8º Passo** - Abra o prompt do PostgreSQL:

```plaintext
psql
```

**9º Passo** - Agora execute os comandos SQL:

⚠️ Não esqueça de trocar pela sua própria senha segura.

```plaintext
-- 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

```bash
\q
```

**11º Passo** - Desconecte do usuário `postgres`

```bash
exit
```

## Instalação do N8N

**12º Passo** -Instale o N8N

```bash
npm install n8n -g
```

**13º Passo** - Crie um usuário específico para o n8n:

```bash
sudo adduser --system --group --home /home/n8n n8n
```

**14º Passo** - Configure o diretório onde o n8n armazenará arquivos e credenciais.

```bash
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.

```bash
openssl rand -base64 48
```

**16º Passo** - Crie um arquivo `.env` para o serviço (centraliza configs e fica fácil de manter):

```bash
sudo nano /home/n8n/.n8n/.env
```

**17º Passo** - Copie o conteúdo abaixo no arquivo `.env` que você acabou de criar.

```bash
# ===== 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:

```bash
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.

```bash
sudo nano /etc/systemd/system/n8n.service
```

**20º Passo** - Copie o conteúdo abaixo para o arquivo que você acabou de criar.

```bash
[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.

```bash
sudo systemctl daemon-reload
sudo systemctl enable n8n
sudo systemctl start n8n
```

**22º Passo** - Verifique se o serviço está rodando corretamente.

```bash
systemctl status n8n
journalctl -u n8n -f
```

## Solução de Problemas

Se aparecer erro de migração/permite no Postgres, rode um teste manual:

```bash
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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1726095550809/4e01f0a4-4231-47ac-9baf-7c1c7d263fb4.png?auto=compress,format&format=webp align="left")
