0%
Loading ...

🚀 Instalando um Servidor N8N Docker com NGINX no Ubuntu 24.04

O Servidor N8N Docker é uma solução poderosa para automação de fluxos de trabalho, permitindo a integração de diversos serviços de forma eficiente.

🖥️ Requisitos do Sistema para Servidor N8N Docker

Ubuntu Server 24.04 (previamente instalado) em Hardware Físico ou Virtual com 2 CPUs, 4GB de RAM e 50GB de armazenamento.

🔧 Configurações Iniciais do Servidor N8N Docker

Atualizações Automáticas – Mantenha Seu Servidor Seguro!

Configure as atualizações automáticas para manter o sistema seguro. Você pode seguir nosso artigo, Como Configurar Atualizações Automáticas de Segurança em Servidores Linux Ubuntu, disponível aqui em nosso blog.

Configuração do Firewall – Libere Somente o Necessário

Utilize o UFW para permitir acesso às portas necessárias: 22/tcp (SSH), 80/tcp (HTTP), 443/tcp (HTTPS) e 5432/tcp (PostgreSQL).

Se precisar de ajuda, temos um artigo detalhado, Como Configurar e Utilizar o Firewall do Ubuntu com UFW, disponível aqui em nosso blog.

🗄️ Instalando o PostgreSQL

Vamos instalar o PostgreSQL localmente:

sudo apt install postgresql

Configurando o Usuário

Acesse o console do PostgreSQL:

sudo -u postgres psql

Altere a senha do usuário postgres:

ALTER USER postgres PASSWORD 'sua_senha_segura';

Permitindo Conexões Remotas

Edite o arquivo pg_hba.conf:

sudo nano /etc/postgresql/16/main/pg_hba.conf

Adicione ao final:

host    all             all             192.168.0.0/16          scram-sha-256

Edite o arquivo postgresql.conf:

sudo vi /etc/postgresql/16/main/postgresql.conf

Altere:

listen_addresses = '*'

Reinicie o serviço:

sudo systemctl restart postgresql

Garanta que o serviço do postresql será iniciado na inicialização do servidor

sudo systemctl enable postgresql

Criando Usuário e Banco de Dados para o N8N

Acesse o PostgreSQL:

sudo -u postgres psql

Crie o usuário:

CREATE USER n8nuser WITH PASSWORD 'senha_n8n';

Crie o banco de dados:

CREATE DATABASE n8ndb OWNER n8nuser;

🐳 Instalando o Docker

Instale o Docker e o Docker Compose:

sudo apt install docker.io docker-compose

Crie o diretório para o N8N:

sudo mkdir /home/node/
cd /home/node/

Arquivo .env

Crie o arquivo .env:

sudo vi .env

Conteúdo:

DB_TYPE=postgresdb
DB_POSTGRESDB_DATABASE=n8ndb
DB_POSTGRESDB_HOST=[END.IP.DO.SERVIDOR]
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_USER=n8nuser
DB_POSTGRESDB_SCHEMA=public
DB_POSTGRESDB_PASSWORD=senha_n8n
GENERIC_TIMEZONE="America/Sao_Paulo"
N8N_DEFAULT_LOCALE=pt_BR
N8N_HOST=n8n.seudominio.com.br
N8N_PROTOCOL=http
N8N_PORT=5678
N8N_TEMPLATES_HOST=https://n8n.seudominio.com.br
WEBHOOK_URL=https://n8n.seudominio.com.br
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
N8N_RUNNERS_ENABLED=true
N8N_SECURE_COOKIE=false
N8N_ENCRYPTION_KEY=chave_secreta
N8N_RUNNERS_BROKER_PORT=5679

Arquivo docker-compose.yml

Crie o arquivo docker-compose.yml:

sudo vi docker-compose.yml

Conteúdo:

version: "3.8"
services:
n8n:
container_name: n8n
image: docker.n8n.io/n8nio/n8n:latest
restart: always
ports:
- "127.0.0.1:5678:5678"
- "127.0.0.1:5679:5679"
environment:
- N8N_PORT=${N8N_PORT}
- N8N_PROTOCOL=${N8N_PROTOCOL}
- DB_TYPE=${DB_TYPE}
- DB_POSTGRESDB_HOST=${DB_POSTGRESDB_HOST}
- DB_POSTGRESDB_PORT=${DB_POSTGRESDB_PORT}
- DB_POSTGRESDB_DATABASE=${DB_POSTGRESDB_DATABASE}
- DB_POSTGRESDB_USER=${DB_POSTGRESDB_USER}
- DB_POSTGRESDB_PASSWORD=${DB_POSTGRESDB_PASSWORD}
- DB_POSTGRESDB_SCHEMA=${DB_POSTGRESDB_SCHEMA}
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- N8N_DEFAULT_LOCALE=${N8N_DEFAULT_LOCALE}
- N8N_HOST=${N8N_HOST}
- N8N_TEMPLATES_HOST=${N8N_TEMPLATES_HOST}
- N8N_WEBHOOK_URL=${N8N_WEBHOOK_URL}
- WEBHOOK_URL=${WEBHOOK_URL}
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=${N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS}
- N8N_SECURE_COOKIE=${N8N_SECURE_COOKIE}
- N8N_RUNNERS_ENABLED=${N8N_RUNNERS_ENABLED}
- N8N_RUNNERS_BROKER_PORT=${N8N_RUNNERS_BROKER_PORT}
volumes:
- ./.n8n:/home/node/.n8n
volumes:
n8n_data:
external: true

Crie o diretório de dados:

sudo mkdir .n8n

Inicie o container:

sudo docker-compose up -d

Para verificar os logs do container execute:

sudo docker logs --tail=100 -f n8n

Para parar o container:

sudo docker stop n8n

Para iniciar o container:

sudo docker n8n start

Para remover o container, por exemplo para atualizar a imagem do docker:

sudo docker-compose down

Após atualizar a imagem, crie novamente o container com o comando docker-compose visto anteriormente.

Configure o Docker para iniciar no boot:

sudo systemctl enable docker.service
sudo systemctl enable docker.socket

Configurando o NGINX para Servidor N8N Docker

Instale o NGINX:

sudo apt install nginx

Copie os certificados SSL para /etc/ssl/ e ajuste as permissões:Rocketseat+1Hugo Aguiar+1

sudo chmod 644 /etc/ssl/cert.pem
sudo chgrp www-data /etc/ssl/cert.pem
sudo chmod 640 /etc/ssl/cert.key
sudo chgrp www-data /etc/ssl/cert.key

Configure o site SSL:

sudo vi /etc/nginx/sites-available/n8n

Conteúdo:

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
root /var/www/html;
index index.html;
underscores_in_headers on;
server_name n8n.seudominio.com.br;
ssl_certificate /etc/ssl/cert.pem
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/cert.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA HIGH !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

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 Origin https://$host;
proxy_redirect off;
proxy_buffering off;
proxy_cache off;
chunked_transfer_encoding off;
}
}

Ativando o site e reiniciando o NGINX

Agora, ative o site SSL criado e reinicie o NGINX para aplicar as configurações:

cd /etc/nginx/sites-enabled
sudo ln -s ../sites-available/n8n .
sudo systemctl restart nginx
sudo systemctl enable nginx

Essa configuração irá expor a aplicação N8N na porta 443 com suporte completo a HTTPS, utilizando o proxy reverso para redirecionar as requisições ao container Docker na porta 5678.


Acessando a interface do Servidor N8N Docker

Com tudo configurado, acesse a interface web da ferramenta através do seu navegador, utilizando o endereço configurado no NGINX:

https://n8n.seudominio.com.br/

Na primeira execução, será solicitado que você crie a conta de administrador, e também poderá ativar a licença gratuita do n8n.

Esse painel web será a principal interface para criação, edição e monitoramento de seus workflows automatizados.

Dicas adicionais de segurança para produção

  • Utilize senhas fortes e armazene-as em ferramentas seguras como o KeePassXC.
  • Considere proteger a interface do N8N com autenticação por IP ou uma camada extra via autenticação básica no NGINX.
  • Ative backups automáticos do diretório .n8n que contém os workflows.
  • Monitore os logs do container com ferramentas como logrotate, ou envie para uma solução centralizada.

Considerações finais do Servidor N8N Docker

Instalar um Servidor N8N Docker no Ubuntu 24.04 com NGINX é uma excelente forma de estruturar uma solução de automação de processos que seja leve, segura e escalável.

Com o uso de containers, é possível realizar manutenções, atualizações e escalabilidade com muito mais controle, separando as dependências da aplicação do sistema base. Ao adicionar o NGINX com HTTPS e PostgreSQL como banco de dados dedicado, você estabelece um ambiente pronto para produção e com boas práticas desde o início.

O n8n tem se consolidado como uma plataforma de automação extremamente flexível, com dezenas de integrações nativas e uma comunidade ativa. Com essa base bem configurada, seu próximo passo é criar seus primeiros fluxos e conectar APIs, bancos de dados, ferramentas de e-mail e muito mais.

Fizemos aqui uma tradução e adaptação do guia oficial da n8n sobre instalação via Docker, disponível em: https://docs.n8n.io/hosting/installation/docker/.


📚 Referências

Caso tenha alguma dúvida a respeito deste tópico sinta-se à vontade para entrar em contato

Escrito por Rodrigo Tomazini em 23/05/2025

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *


Rolar para cima