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.