N8N no Debian com Cloudflare Tunnel e Configurações de Ambiente Profissionais

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.

Rolar para cima