Este post cobre como instalar e configurar o N8N no Debian, expor ele com Cloudflare Tunnel e aplicar variáveis de ambiente que transformam a instância em uma solução profissional e segura para automações.
1. Instalação do N8N no Debian
Pré-requisitos:
sudo apt update
sudo apt install -y nodejs npm
sudo npm install -g n8n
Teste local:
n8n
Ele inicia em http://localhost:5678
.
2. Expor com Cloudflare Tunnel
No painel da Cloudflare:
- Vá até Access > Tunnels e crie um novo túnel.
- Configure o túnel com destino
http://localhost:5678
. - Associe o domínio:
n8n.seudominio.com.br
.
3. Problema: N8N gera Webhook com localhost
Por padrão, ao criar um Webhook, o N8N usa http://localhost:5678
na URL. Isso é inútil se sua aplicação estiver exposta via domínio público.
4. Solução: Variável WEBHOOK_URL
Defina a seguinte variável para instruir o N8N a gerar URLs públicas corretas:
WEBHOOK_URL=https://n8n.seudominio.com.br
1. Via arquivo .env
(mais limpo)
Crie um arquivo .env
em um diretório como /opt/n8n/
:
sudo mkdir -p /opt/n8n sudo vi /opt/n8n/.env
Conteúdo:
WEBHOOK_URL=https://n8n.seudominio.com.br N8N_HOST=0.0.0.0 N8N_PORT=5678
E no seu systemd
(ex: /etc/systemd/system/n8n.service
), adicione:
EnvironmentFile=/opt/n8n/.env
Depois:
sudo systemctl daemon-reload sudo systemctl restart n8n
2. Direto no systemd (sem .env
)
No arquivo n8n.service
, defina assim:
[Service] Environment=WEBHOOK_URL=https://n8n.seudominio.com.br ExecStart=/usr/bin/n8n
3. Exportando manualmente (modo teste ou desenvolvimento)
No terminal:
export WEBHOOK_URL=https://n8n.seudominio.com.br n8n
Isso serve para execução direta, útil em ambientes de desenvolvimento, mas não persiste após reboot.
Para produção, o ideal é usar método 1 ou 2, com preferência para o .env
se você quiser centralizar a configuração.
Quer que eu valide seu n8n.service
atual e adapto ele com as variáveis?
5. Outras Variáveis Essenciais
A seguir, um conjunto completo de variáveis que você pode adicionar no seu ambiente:
# Acesso externo
N8N_HOST=0.0.0.0
N8N_PORT=5678
WEBHOOK_URL=https://n8n.seudominio.com.br
# Autenticação básica
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=SenhaForteAqui
# Diretório personalizado
N8N_USER_FOLDER=/opt/n8n/data
# Logs
N8N_LOG_LEVEL=info
N8N_LOG_OUTPUT=console
# Banco PostgreSQL (opcional caso use DB)
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8nuser
DB_POSTGRESDB_PASSWORD=senhabanco
# Redis para fila (modo produção)
QUEUE_MODE=redis
QUEUE_REDIS_HOST=127.0.0.1
QUEUE_REDIS_PORT=6379
# Módulos permitidos em Function Node
NODE_FUNCTION_ALLOW_BUILTIN=*
NODE_FUNCTION_ALLOW_EXTERNAL=axios,lodash
# Ativar recursos experimentais
N8N_ENABLE_EXPERIMENTAL_FEATURES=true
6. Execução via Systemd
Crie o arquivo de serviço:
sudo vi /etc/systemd/system/n8n.service
Conteúdo:
[Unit]
Description=n8n workflow automation
After=network.target
[Service]
Type=simple
EnvironmentFile=/opt/n8n/.env
ExecStart=/usr/bin/n8n
Restart=always
User=n8n
WorkingDirectory=/opt/n8n
[Install]
WantedBy=multi-user.target
7. Ativar e Iniciar
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable n8n
sudo systemctl start n8n
8. Teste final
Acesse:
https://n8n.seudominio.com.br
Crie um workflow com gatilho Webhook. A URL gerada agora deve respeitar o seu domínio público.
Considerações Finais
Essa configuração eleva o N8N de uma instância local para um ambiente de produção com segurança, escalabilidade e controle. O uso de banco externo, Redis e variáveis refinadas permite que ele seja integrado facilmente em pipelines CI/CD e ambientes de automação profissional.