n8n en Windows: Docker, WSL y errores típicos
En Windows, el bloqueo habitual no es n8n: son Docker Desktop, WSL, virtualización, rutas, puertos y reinicios. Esta lección te da una ruta de diagnóstico antes de conectar Ollama, Qdrant o Telegram.
Objetivos de aprendizaje
- Preparar Windows para n8n con Docker y WSL.
- Diagnosticar errores antes de culpar al workflow.
- Arrancar un stack mínimo que luego puedas conectar con Ollama.
En cristiano: self-hosted. Significa que tú gestionas la instancia: contenedores, volumen de datos, backups, URL pública y actualizaciones. Ganas control; también ganas responsabilidad.
Checklist antes de instalar
- Windows actualizado.
- Virtualización activada en BIOS/UEFI.
- WSL 2 instalado y con una distro Linux funcional.
- Docker Desktop usando backend WSL 2.
- Reinicio completo después de activar características de Windows.
Terminal
# En PowerShell wsl --status wsl --list --verbose docker version docker compose version # Si Docker no responde, abre Docker Desktop y espera a que indique "Engine running". # Después prueba: docker run --rm hello-world
Idea clave. Si `hello-world` no funciona, n8n tampoco va a funcionar. No saltes a credenciales, nodos o IA hasta arreglar Docker.
Stack mínimo con volumen persistente
Para pruebas locales puedes empezar con SQLite. En producción conviene Postgres y una URL pública con HTTPS, pero primero necesitamos una instancia que arranque siempre igual.
Terminal
# docker-compose.yml
services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_PROTOCOL=http
- N8N_SECURE_COOKIE=false
- TZ=Europe/Madrid
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data: Terminal
docker compose up -d docker compose logs -f n8n # Abre: # http://localhost:5678
Cuidado. No expongas n8n a internet con `N8N_SECURE_COOKIE=false`. Esa opción solo es cómoda para pruebas locales. Para producción usa HTTPS, credenciales fuertes, backups y mínimo privilegio.
Errores típicos y lectura rápida
- Puerto ocupado: cambia `5678:5678` por `5680:5678`.
- Docker no arranca: revisa WSL, virtualización y reinicio.
- Datos desaparecen: no montaste volumen persistente.
- Ollama no conecta: desde Docker, `localhost` apunta al contenedor, no a Windows.
- Execute Command no ve tus programas: ejecuta dentro del contenedor, no en el host.
Comprueba que funciona. Crea un workflow con Webhook → Set → Respond to Webhook antes de meter IA. Si eso falla, el problema es infraestructura, no el modelo.
Guardar y reabrir el proyecto.
Cuando n8n arranque estable, ya puedes conectar Ollama, Open WebUI, Qdrant o Telegram. Antes de eso, cualquier workflow complejo solo multiplicará errores.