Executando o n8n com ffmpeg usando docker compose
by Renato Monteiro Batista
Executando n8n com FFmpeg usando Docker Compose
O n8n é uma excelente ferramenta de automação, mas a imagem oficial não vem com o FFmpeg instalado. Isso limita bastante quem precisa trabalhar com processamento de vídeo, áudio, conversão de arquivos ou extração de thumbnails dentro dos workflows.
Por isso criei a imagem renatomb/n8n-ffmpeg, que é basicamente a imagem oficial do n8n com o FFmpeg adicionado.
Por que usar n8n com FFmpeg?
Alguns casos de uso comuns:
- Converter vídeos para diferentes formatos
- Extrair áudio de vídeos
- Gerar thumbnails de vídeos
- Processar arquivos de áudio (corte, normalização, conversão)
- Automatizar tarefas de mídia
Se você precisa fazer qualquer uma dessas coisas dentro do n8n, a imagem oficial não resolve. A imagem renatomb/n8n-ffmpeg foi feita exatamente para isso.
Usando com Docker Compose (Recomendado)
A forma mais prática e recomendada de rodar é através do docker-compose. Crie um arquivo docker-compose.yml com o seguinte conteúdo:
services:
n8n:
image: renatomb/n8n-ffmpeg:latest
container_name: n8n-ffmpeg
restart: unless-stopped
ports:
- "5678:5678"
volumes:
- n8n_data:/home/node/.n8n
- ./files:/files
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=sua_senha_aqui
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_PROTOCOL=http
- WEBHOOK_URL=http://localhost:5678/
volumes:
n8n_data:
Executando o container
Depois de criar o arquivo, basta rodar:
docker compose up -d
O n8n vai subir normalmente, mas já com o FFmpeg disponível dentro do container.
Usando o FFmpeg dentro do n8n
Depois de subir o container, você pode usar o FFmpeg de duas formas principais:
1. Usando o nó “Execute Command”
Esse é o jeito mais simples. Basta criar um nó Execute Command e rodar comandos do FFmpeg normalmente:
Exemplo de comando para extrair áudio de um vídeo:
ffmpeg -i /files/video.mp4 -vn -acodec libmp3lame /files/audio.mp3
2. Usando o nó “Code”
Você também pode executar comandos via Node.js dentro do nó Code:
const { exec } = require('child_process');
const command = 'ffmpeg -i /files/input.mp4 -vf "scale=320:-1" /files/thumbnail.jpg';
exec(command, (error, stdout, stderr) => {
if (error) {
console.error(`Erro: ${error}`);
return;
}
console.log('Thumbnail gerado com sucesso!');
});
Volume para arquivos
No exemplo de docker-compose.yml acima, criei um volume mapeado:
- ./files:/files
Dessa forma, você pode colocar os arquivos que quer processar na pasta files do seu computador que eles ficarão disponíveis dentro do container em /files.
Imagem disponível
A imagem está publicada no Docker Hub:
- Docker Hub: renatomb/n8n-ffmpeg
- GitHub: github.com/renatomb/n8n-ffmpeg
A tag latest sempre aponta para a versão mais recente baseada na imagem oficial do n8n.
Considerações finais
Se você usa n8n para automações que envolvem mídia (vídeo ou áudio), essa imagem resolve um problema que a versão oficial não cobre. O uso via Docker Compose é a forma mais prática de manter o ambiente organizado e persistente.
Se você já usa n8n e precisa de FFmpeg, recomendo testar. É só trocar a imagem no seu docker-compose.yml atual.
Se tiver alguma sugestão ou encontrar algum problema, pode abrir uma issue no repositório.
tags: docker - compose - n8n - ffmpeg - automacao