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.
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/n8nEste 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
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/n8nEn 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/bashPor 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/n8nEn 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.26Esto 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/n8nPrimero 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.backupEsto crea un respaldo de la BD dentro del contenedor y luego lo copiamos en nuestro directorio local
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
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
https://78bcd28b8daf.ngrok-free.app/webhook-test/5e4f3385-e3a3-4d56-9e65-112076b607f4/webhook
If you see mistakes or want to suggest changes, please create an issue on the source repository.
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}
}