Este guia tem dois objetivos principais:
- Migrar uma instância existente do n8n em modo normal para o modo fila.
- Configurar uma nova instância do n8n diretamente no modo fila.
A configuração contempla:
- Banco de dados: PostgreSQL
- Redis para gerenciamento de filas.
- 3 instâncias separadas:
- Editor (interface gráfica do n8n)
- Webhook (responsável pelos gatilhos)
- Worker (processamento das fluxos)
- Configuração de concorrência: 5.
- Clone o repositório com os arquivos de configuração
git clone https://github.com/AlexSzefezuk/n8n-config.git
-
Recupere a encryption key da instância antiga
- A chave está no arquivo
config
dentro da pasta.n8n
localizada no container do n8n. - Geralmente você terá uma volume mapeado, basta buscar pelo buscar no volume pelo arquivo.
- A chave está no arquivo
-
Aponte um domínio provisório para a sua VPS.
-
Atualize todas as variáveis de ambiente no arquivo
.env
.cp .env.example .env
-
Exporte os workflows da instância antiga:
- Entre no container antigo:
docker ps # pegue o id do seu container antigo
docker exec -it <ID_DO_CONTAINER> /bin/sh
- Execute o comando de exportação de workflows:
Nota: Altere o caminho do output para o volume configurado no seu ambiente.
n8n export:workflow --all --output=/home/node/.n8n/workflows.json
- Entre no container antigo:
-
Exporte as credenciais da instância antiga:
- Ainda dentro do container:
Nota: Altere o caminho do output para o volume configurado no seu ambiente.
n8n export:credentials --all --output=/home/node/.n8n/credentials.json
- Ainda dentro do container:
-
Crie os volumes necessários:
docker volume create n8n_queue_data && \ docker volume create n8n_db_storage && \ docker volume create n8n_redis_storage
-
Suba o novo container:
-
No arquivo
docker-compose.yml
deixei a versão do n8n de forma fixa, sugiro que faça o mesmo, assim você pode controlar sempre que quiser fazer a atualização. -
Para ver qual a versão mais recente estável na sua data basta acessar o Docker Hub do n8n ou o GitHub do n8n.
-
Quando for mudar de versão, lembre-se de alterar nas 3 instancias dentro do
docker-compose.yml
n8n_editor
n8n_webhook
n8n_worker
-
Comando para subir a os containers
docker compose up -d
- Mova os arquivos de workflows e credenciais para o volume mapeado.
- No caso da configuração deste repo, basta mover os arquivos
workflows.json
ecredentials.json
que você criou nos passos5
e6
para dentro da pasta projects na raiz onde esta o seudocker-compose.yml
pois o volume ja esta mapeado - Crie a pasta se necessário
mkdir projects
-
Importe os workflows e credenciais no novo container:
- Workflows:
n8n import:workflow --input=/home/projects/workflows.json
- Credenciais:
n8n import:credentials --input=/home/projects/credentials.json
- Workflows:
-
Configure o NGINX para apontar o domínio provisório para o novo container:
- Crie um arquivo de configuração, por exemplo,
n8nprovisorio.conf
: - Você também pode fazer uma cópia do arquivo
n8n.conf
para dentro da sua pasta de configuração do nginx
server { server_name n8n-provisorio.seudominio.com.br; location ~* /webhook/ { proxy_pass http://localhost:56782; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; } location / { proxy_pass http://localhost:56781; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; } }
Ative a configuração e gere um SSL:
- Crie um arquivo de configuração, por exemplo,
sudo ln -s /etc/nginx/sites-available/n8nprovisorio.conf /etc/nginx/sites-enabled/
nginx -t # Verifique se tudo esta correto
certbot --nginx # Gera o certificado SSL
sudo systemctl reload nginx # Recarrega o nginx
-
Ative os workflows necessários:
- Se houver workflows de gatilhos como o do Facebook Lead Ads Trigger, desative-os na instância antiga antes de ativá-los na nova.
-
Finalize a migração:
- Atualize a variável de domínio no arquivo
.env
para o domínio correto. - Configure o
NGINX
para apontar para o novo container, conforme o arquivon8n.conf
. - Desative a configuração do domínio provisório no
NGINX
, basta apagar o arquivo provisório e rodar o comando que recarrega oNGINX
. - Derrube o container da sua instância antiga.
- Sugiro que não apague ela até passar alguns dias com sua instancia nova rodando sem erros
- Atualize a variável de domínio no arquivo
Caso esteja criando uma nova instância do zero no modo fila, siga os passos abaixo:
-
Clone o repositório com os arquivos de configuração:
git clone https://github.com/AlexSzefezuk/n8n-config.git
-
Atualize o arquivo
.env
com as variáveis de ambiente necessárias.cp .env.example .env
-
Crie os volumes necessários:
docker volume create n8n_queue_data && \ docker volume create n8n_db_storage && \ docker volume create n8n_redis_storage
-
Suba o container:
docker compose up -d
-
Configure o NGINX para apontar o domínio para o novo container:
cp n8n.conf /etc/nginx/sites-available/n8n.conf
- Não esqueça de atualizar com o seu domínio
- Essa configuração nao precisa de um subdomínio separado para o webhook, ambos ficam no mesmo domínio
Ative a configuração:
sudo ln -s /etc/nginx/sites-available/n8n.conf /etc/nginx/sites-enabled/
nginx -t # Verifique se tudo esta correto
certbot --nginx # Gera o certificado SSL
sudo systemctl reload nginx # Recarrega o nginx
- Acesse a interface do n8n no navegador e comece a configurar seus workflows.
-
Certifique-se de que os containers estão rodando corretamente com:
docker ps
-
Monitore os logs para verificar possíveis erros:
docker logs <ID_DO_CONTAINER>
ou dentro da pasta onde esta seu compose
docker-compose logs
-
A configuração foi projetada para separar as funções de edição, webhooks e processamento, garantindo maior desempenho e escalabilidade.