Este artigo explica os passos necessários para a Instalação do Servidor N8N Docker. 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/.
🔍 Introdução a Instalação do Servidor N8N Docker
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. Com o Ubuntu 24.04, podemos configurar um ambiente robusto sem depender de fontes externas.
🖥️ Requisitos do Sistema
- Ubuntu Server 24.04
- 2 CPUs
- 4GB de RAM
- 50GB de armazenamento
🔧 Configurações Iniciais
🔐 Atualizações Automáticas
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
Utilize o UFW para permitir acesso às portas necessárias:
- 22/tcp (SSH)
- 443/tcp (HTTPS)
- 5432/tcp (PostgreSQL)GitHub
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
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
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.
📚 Referências
- Documentação oficial do n8n – Docker Setup
- PostgreSQL 16 Documentation – Authentication Methods
- NGINX Configuration Best Practices
Caso tenha alguma dúvida a respeito deste tópico sinta-se à vontade para entrar em contato