Docker Compose para stack completo de IA local

Un stack local útil no debe ser una carpeta llena de comandos sueltos. Docker Compose te permite levantar interfaz, automatización y base vectorial con volúmenes, perfiles y una ruta clara de backup.

Objetivos de aprendizaje
  • Separar servicios base de servicios opcionales con perfiles.
  • Guardar estado en volúmenes persistentes.
  • Evitar el clásico “funciona en mi terminal, pero no sé repetirlo”.
En cristiano: perfil de Compose. Un perfil permite activar servicios opcionales solo cuando los necesitas. Por ejemplo: base, RAG, automatización o GPU.
Terminal
services:
  qdrant:
    image: qdrant/qdrant:latest
    ports: ["6333:6333"]
    volumes:
      - qdrant_data:/qdrant/storage

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    ports: ["3000:8080"]
    volumes:
      - open_webui_data:/app/backend/data
    environment:
      - OLLAMA_BASE_URL=http://host.docker.internal:11434

  n8n:
    image: n8nio/n8n:latest
    profiles: ["automation"]
    ports: ["5678:5678"]
    volumes:
      - n8n_data:/home/node/.n8n
    environment:
      - N8N_ENCRYPTION_KEY=change-me

volumes:
  qdrant_data:
  open_webui_data:
  n8n_data:
Idea clave. En portátiles y Windows suele ir mejor ejecutar Ollama nativo en el host y dejar Docker para Open WebUI, n8n y Qdrant. Así reduces fricción de GPU dentro de contenedores.
Terminal
# Base: Qdrant + Open WebUI
docker compose up -d

# Añadir automatización con n8n
docker compose --profile automation up -d

# Ver estado y logs
docker compose ps
docker compose logs -f open-webui

# Backup mínimo
docker run --rm -v open_webui_data:/data -v "$PWD:/backup" alpine   tar czf /backup/open-webui-backup.tgz /data
Cuidado. No publiques este stack directamente a internet. Antes necesitas HTTPS, autenticación, backups probados, secretos fuera del repo y revisar qué puertos quedan expuestos.
Comprueba que funciona. Reinicia el ordenador y vuelve a levantar el stack. Si pierdes usuarios, chats o colecciones, tus volúmenes no están bien montados.
Guardar y reabrir el proyecto.
Un buen compose no es el más grande. Es el que puedes parar, actualizar, restaurar y explicar seis meses después.