Despliega tu propio Chat con LLM y Base de Datos Vectorial usando Docker Compose
¿Te gustaría montar en tu servidor un chat moderno, privado y enriquecido con inteligencia artificial totalmente sin depender de servicios externos? Hoy te propongo un proyecto avanzado pero espectacular: un stack de chat con un modelo LLM local, almacenamiento de contexto usando una VectorDB (Qdrant), y un frontend web listo para conversar.
¿Para qué sirve este proyecto?
- Chat privado con un modelo de lenguaje (por ejemplo, Ollama o OpenChat) funcionando en tu VPS, sin enviar tus datos fuera de casa.
- Almacenamiento vectorial: guarda preguntas y respuestas, permitiendo que el chat “recuerde” lo que has consultado gracias a una base vectorial.
- Frontend web: una interfaz bonita y fácil desde la que conversar en tu navegador.
- Ideal para desarrolladores, hacklabers y techies que desean experimentar con IA, chatbots y recuperación de información en local.

¿Qué servicios incluye el docker-compose?
- LLM API con Ollama (modelo open-source como llama2, mistral o phi3)
- Qdrant como VectorDB para el almacenamiento semántico
- Chat frontend open-source (Open WebUI) listo para conectar
¡Y con una sola orden lo tendrás todo funcionando y conectado!
Fichero docker-compose.yml completo
version: "3.8"
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
restart: unless-stopped
environment:
- OLLAMA_MODELS=llama3
qdrant:
image: qdrant/qdrant:latest
container_name: qdrant
ports:
- "6333:6333"
volumes:
- qdrant_data:/qdrant/storage
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
environment:
- OLLAMA_API_URL=http://ollama:11434
- QDRANT_URL=http://qdrant:6333
restart: unless-stopped
depends_on:
- ollama
- qdrant
volumes:
ollama_data:
qdrant_data:
¿Cómo lo despliego?
- Copia el
docker-compose.yml
anterior a una carpeta en tu servidor/VPS. - Asegúrate de tener Docker y Docker Compose instalados.
- Ejecuta en consola:
docker-compose up -d
- Cuando termine, visita en tu navegador:
http://TU-IP-O-DOMINIO:3000 - ¡Ya puedes chatear!
¿Cómo funciona por dentro?
- El contenedor ollama expone una API de LLM local (elige tu modelo favorito o descarga otro a posteriori).
- Qdrant almacena los vectores semánticos de las conversaciones: la memoria del chat.
- Open WebUI sirve el frontend y, por debajo, enruta mensajes entre ambos servicios (LLM y VectorDB).
Opcional: Personalización y modelos
- Puedes cambiar el modelo por defecto de Ollama editando la línea
OLLAMA_MODELS
. Por ejemplo:mistral
ophi3
. - Para añadir protección por contraseña instala un proxy inverso delante (nginx, traefik, caddy) o utiliza la autenticación built-in de Open WebUI.
- ¿Quieres conectar desde fuera? Recuerda abrir los puertos o configurarlo tras una VPN.
Extra: Consejos y troubleshooting
- ¿El chat no responde? Espera un par de minutos la primera vez: descargar el modelo lleva un poco, especialmente si eliges uno grande.
- Error de conexión entre servicios: Asegúrate de haber copiado bien las variables de entorno (
OLLAMA_API_URL
yQDRANT_URL
deben apuntar a los nombres de los servicios, no localhost). - Para usar otro modelo (ejemplo:
llama3
), entra por consola al contenedor ollama y ejecutaollama pull llama3
. - ¿Quisieras añadir persistencia a largo plazo para las conversaciones? Qdrant ya lo persiste en su volumen, ¡solo haz backups de la carpeta
qdrant_data
!
¿Te ha gustado este combo de IA personal? Hasta el próximo hack, ¡deja preguntas o sugerencias en los comentarios!