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
.n8nque 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
- 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
Escrito por Rodrigo Tomazini em 23/05/2025
