n8n en Docker

n8n Ollama GenAI Agentic AI MCP HomeLab

Una de las ventajas de n8n es el poder activar un entorno de desarrollo completamente funcional de forma local con Docker para ejecutar workflows en nuestro propio homelab.

José R Sosa https://josersosa.github.io/personalweb/
04-26-2025

Referencias

Empezando con n8n

Desde tu terminal, ejecuta:

docker pull docker.n8n.io/n8nio/n8n
docker volume create n8n_data
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

Este comando descargará todas las imágenes n8n requeridas e iniciará su contenedor, expuesto en el puerto 5678. Para guardar su trabajo entre reinicios del contenedor, también monta un volumen de Docker, n8n_data, para conservar sus datos localmente.

Luego puedes acceder a n8n abriendo: http://localhost:5678

Utilizando bases de datos Postgres

De forma predeterminada, n8n usa SQLite para guardar credenciales , ejecuciones pasadas y flujos de trabajo. n8n también admite PostgresDB configurable mediante variables de entorno como se detalla a continuación.

Para utilizar n8n con Postgres, debemos crear la base de datos y luego proporcione el siguiente comando:

Para la ejecución de n8n como servicio

docker volume create n8n_data

docker run -d \
 --name n8n \
 --network homelab \
 -p 5678:5678 \
 -e DB_TYPE=postgresdb \
 -e DB_POSTGRESDB_DATABASE=n8n_db \
 -e DB_POSTGRESDB_HOST=postgres \
 -e DB_POSTGRESDB_PORT=5432 \
 -e DB_POSTGRESDB_USER=postgres \
 -e DB_POSTGRESDB_PASSWORD=kukenan\
 -e N8N_SECURE_COOKIE=false \ 
 -v n8n_data:/home/node/.n8n \
 -v D:\Archivos:/mnt/disco
 docker.n8n.io/n8nio/n8n

Error de overlay en el montaje de discos

En mi version de WSL en Windows 11 da una error de overlay en los montajes de discos locales en los contenedores docker, por lo que no aparece el contenido que existe en dichos discos montados. Para resolver esto, he tenido que instanciar la imagen docker desde el power shell y no desde al distro de WSL, algo así:

docker run -it --rm -v D:\Archivos:/mnt/disco ubuntu /bin/bash

Por la que la ejecución de n8n si deseamos compartir un disco local, por ejemplo para la carga de uns KB desde el disco local, debemos instanciarlo desde Powershell así:

docker run -d --name n8n --network homelab -p 5678:5678 -e DB_TYPE=postgresdb -e DB_POSTGRESDB_DATABASE=n8n_db -e DB_POSTGRESDB_HOST=postgres -e DB_POSTGRESDB_PORT=5432 -e DB_POSTGRESDB_USER=postgres -e DB_POSTGRESDB_PASSWORD=kukenan -e N8N_SECURE_COOKIE=false -v n8n_data:/home/node/.n8n -v D:\Archivos:/mnt/disco docker.n8n.io/n8nio/n8n

URL pública para instancia local con ngrok

En algunos casos necesitaremos contar cinnun URL https para n8n, como por ejemplo, cuando queremos usar cabales como Telegram o Whatsapp desde nuestra instancia contenerizada local. Para esto usaremos el comando ngrok con la URL local de n8n así:

ngrok http://localhost:5678
                                                                                                         Create instant endpoints for local containers within Docker Desktop → https://ngrok.com/r/docker
                                                                                                      Session Status                online
Account                       Jose Sosa (Plan: Free)
Update                        update available (version 3.30.0, Ctrl-U to update)
Version                       3.22.1
Region                        South America (sa)
Latency                       115ms
Web Interface                 http://127.0.0.1:4040
Forwarding                    https://78bcd28b8daf.ngrok-free.app -> http://localhost:5678

Connections                   ttl     opn     rt1     rt5     p50     p90
                              283     0       0.00    0.05    0.21    10.26

Esto expondrá nuestra instancia con una URL pública, que deberemos usar para la variable de entorno WEBHOOK_URL, al momento de levantar el servicio n8n en docker así:

docker run -d -e WEBHOOK_URL=https://78bcd28b8daf.ngrok-free.app --name n8n --network homelab -p 5678:5678 -e DB_TYPE=postgresdb -e DB_POSTGRESDB_DATABASE=n8n_db -e DB_POSTGRESDB_HOST=postgres -e DB_POSTGRESDB_PORT=5432 -e DB_POSTGRESDB_USER=postgres -e DB_POSTGRESDB_PASSWORD=kukenan -e N8N_SECURE_COOKIE=false -v n8n_data:/home/node/.n8n -v D:\Archivos:/mnt/disco docker.n8n.io/n8nio/n8n

Backups

Primero respaldaremos el volumen de Docker, mientras el contenedor de n8n esta activo:

cd /mnt/d/Archivos/Proyectos/AI_Models/Models/n8n/n8n_volume
docker exec n8n tar -czvf backup_n8n_volumen.tar.gz /home/node/.n8n
docker cp n8n:/home/node/backup_n8n_volumen.tar.gz ./backup_n8n_volumen.tar.gz 

Luego respaldamos la base de datos:

pg_dump -f backup_n8n_db.backup n8n_db 
docker cp postgres:backup_n8n_db.backup ./backup_n8n_db.backup

Esto crea un respaldo de la BD dentro del contenedor y luego lo copiamos en nuestro directorio local

Hosting para n8n

Servicio en la nube especializados para n8n: - Hostinger - Never Pay for n8n Again! Self-Host for FREE, For LIFE on Oracle Cloud. video - Render.com

Como construir servicios MCP en n8n

Conexiones importantes a configurar

Las credenciales que debemos configurar, son: - [x] Servicios de IA Generativa - [x] HuggingFace - [x] OpenAI - [ ] Mistral - [x] Groq - [ ] Anthropic - [x] Ollama - [x] DeepSeek - [x] OpenRouter - [x] Google Cloud - Consola de Google GCP - Integracion con Google Calendar - Cómo usar OAuth 2.0 para acceder a las API de Google - Video: Getting Google OAuth Credentials for n8n - Documentacion de google maps apis - [x] Google Drive - [x] Google Gmail - [x] Google Calendar - [x] Google Sheets - [x] Google Docs - [x] Google Gemini - [ ] Microsoft Azure - Integración con la nube de MS - Getting Microsoft OAuth Credentials for n8n - Microsoft Teams node - Microsoft credentials - # Depuración del bot de chat de IA mediante la herramienta de prueba de aplicaciones de Teams - [ ] outlook - [ ] Teams - [ ] OneDrive - [ ] Azure OpenAI - [x] GitHub - Personal access tokens (classic) - [ ] Bases de datos - [x] MongoDB - [x] PostgresSQL - [ ] Redis - [x] Pinecone - [ ] ChromaDB - [x] Qdrant - [ ] Mensajería - [ ] Whatsapp - Video: Cómo CONECTAR un Agente IA de N8N a WhatsApp - https://developers.facebook.com/ - [x] Twilio - [x] Telegram - Cómo obtener API ID y API HASH de una cuenta de TELEGRAM
- n8n docs: Telegram credentials

Templates

Flujos a preparar

Integraciones

n8n to Python

https://78bcd28b8daf.ngrok-free.app/webhook-test/5e4f3385-e3a3-4d56-9e65-112076b607f4/webhook

Recursos

Escalamiento de n8n

Halucinaciones

Alternativas a n8n

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Citation

For attribution, please cite this work as

Sosa (2025, April 26). Blog de José R Sosa: n8n en Docker. Retrieved from https://josersosa.github.io/personalweb/posts/2026-02-01-n8n-en-docker/

BibTeX citation

@misc{sosa2025n8n,
  author = {Sosa, José R},
  title = {Blog de José R Sosa: n8n en Docker},
  url = {https://josersosa.github.io/personalweb/posts/2026-02-01-n8n-en-docker/},
  year = {2025}
}