Conceptos

Arquitectura
┌───────────────────────────────────────────────────────────────┐
│ USUARIO │
│───────────────────────────────────────────────────────────────│
│ 💬 Usa navegador web (Chrome, Firefox, etc.) │
│ 🌐 Accede a http://tu-servidor:3000 │
└───────────────┬───────────────────────────────────────────────┘
│ 1️⃣ Escribe / envía prompt
▼
┌──────────────────────────────────────────────────────────────────────┐
│ 🖥️ Open WebUI (contenedor Docker) │
│──────────────────────────────────────────────────────────────────────│
│ - Interfaz tipo ChatGPT │
│ - Guarda historiales de chat (persistencia) │
│ - Tiene “Knowledge Base” (memoria larga / aprendizaje) │
│ - Llama al modelo LLM a través de API local │
└───────────────┬──────────────────────────────────────────────────────┘
│ 2️⃣ Envía prompt al motor de IA local (Ollama)
▼
┌──────────────────────────────────────────────────────────────────────┐
│ 🧠 Ollama (host, fuera del contenedor) │
│──────────────────────────────────────────────────────────────────────│
│ - Maneja modelos LLM (Llama 3, Mistral, Phi-3, etc.) │
│ - Usa GPU vía CUDA para acelerar inferencia │
│ - Expone API local http://localhost:11434 │
│ - Compatible con múltiples modelos y embeddings │
└───────────────┬──────────────────────────────────────────────────────┘
│ 3️⃣ Llama a la GPU para procesar el modelo
▼
┌──────────────────────────────────────────────────────────────────────┐
│ ⚙️ NVIDIA Container Toolkit + Drivers CUDA │
│──────────────────────────────────────────────────────────────────────│
│ - “Puentea” la GPU física hacia los contenedores │
│ - Permite ejecutar CUDA/Tensor ops dentro de Docker │
│ - Asegura compatibilidad entre driver y librerías del contenedor │
└───────────────┬──────────────────────────────────────────────────────┘
│ 4️⃣ Acceso a la GPU física
▼
┌──────────────────────────────────────────────────────────────────────┐
│ 💻 GPU Física (RTX, CUDA cores, VRAM) │
│──────────────────────────────────────────────────────────────────────│
│ - Ejecuta el modelo LLM en paralelo masivo │
│ - Usa librerías CUDA/cuDNN/TensorRT instaladas en Ubuntu │
│ - Devuelve resultados procesados a Ollama │
└──────────────────────────────────────────────────────────────────────┘
Requisitos
Ubuntu 24.04 o superior instalado
Drivers Nvidia instalados
-
Ollama → ejecuta el modelo LLM local (usa tu GPU NVIDIA).
-
Open WebUI → interfaz web tipo ChatGPT con historial persistente, usuarios, adjuntos y memoria/Knowledge Base.
-
(Opcional) ChromaDB → memoria vectorial para que “aprenda” de tus chats y documentos (RAG).
Instalar OLLAMA
curl -fsSL https://ollama.com/install.sh | sh
# Arranca el servicio (si no arrancó solo):
sudo systemctl enable --now ollama
Prueba el modelo (descarga automática y usa la GPU si la detecta):
ollama run llama3.1
Consejo: si el prompt responde fluido y
nvidia-smimuestra uso durante la generación, está usando GPU.Ejecuta el contenedor usando CPU solo
Open WebUI corre dentro de Docker y usa Ollama o PyTorch como backend IA.
Instalar
crea un fichero docker-compose.yaml con el contenido:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:11434
volumes:
- open-webui:/app/backend/data
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
volumes:
open-webui:
Levanta el contenedor:
docker compose up -d
Elegir y preparar el modelo
Modelos conversacionales muy buenos y “ligeros”:
En Open WebUI → Settings → Models selecciona tu modelo por defecto (ej. llama3.1).
After installation, you can access Open WebUI at http://localhost:3000. Enjoy! 😄