Ir al contenido
  1. Posts/

Open WebUI: la interfaz que le faltaba a Ollama en tu homelab

En el post sobre Ollama expliqué cómo montar modelos de lenguaje en local. Lo que no conté es que usar Ollama directamente por terminal tiene sus limitaciones. Funciona, pero no es cómodo para el uso diario.

Open WebUI resuelve eso. Es una interfaz web para Ollama que se parece mucho a ChatGPT en apariencia y funcionalidad, pero corre en tu propia red, sin enviar datos a nadie, y sin límites de uso.

Llevo meses con esto montado en Phatt y ha cambiado cómo interactúo con los modelos. Te cuento cómo está configurado y qué le saco.

Qué es Open WebUI
#

Open WebUI (antes llamado Ollama WebUI) es una aplicación web que actúa como frontend para Ollama. También soporta APIs compatibles con OpenAI, así que puedes conectarlo a otros proveedores si quieres.

Las cosas que hace bien:

  • Conversaciones con historial guardado localmente
  • Selección de modelo sin tocar el terminal
  • Sistema de prompts para configurar comportamientos por defecto
  • Multiusuario con cuentas individuales e historial separado
  • Soporte de imágenes si tienes modelos de visión (LLaVA, Gemma Vision, etc.)
  • RAG (Retrieval Augmented Generation) para preguntar sobre documentos propios
  • Búsqueda web integrada si la configuras
  • TTS/STT para voz, aunque no lo uso

Lo que no hace: no mejora los modelos. Si tu modelo es lento o poco capaz, la interfaz no cambia eso. Pero sí hace que usarlo sea radicalmente más cómodo.

Mi setup en Phatt
#

Tengo Open WebUI conectado a Ollama, que corre en el mismo servidor. La configuración más simple posible.

Ollama escucha en el puerto 11434 del servidor. Open WebUI apunta ahí con la variable OLLAMA_BASE_URL.

Docker Compose:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
version: '3.8'

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    ports:
      - "8085:8080"
    environment:
      - OLLAMA_BASE_URL=http://TU_IP_SERVIDOR:11434
      - TZ=Europe/Madrid
    volumes:
      - ./data:/app/backend/data

Si tienes Ollama en el mismo host que Open WebUI, puedes usar http://host.docker.internal:11434 en vez de la IP.

Lo que guarda en ./data:

  • Base de datos SQLite con conversaciones y usuarios
  • Documentos subidos para RAG
  • Configuración de prompts y modelos

Tamaño: después de meses de uso, unos 200MB entre conversaciones y documentos.

Los modelos que tengo cargados
#

En Phatt tengo 17 modelos distintos. No todos los uso igual. Estos son los que más activo:

Para trabajo general:

  • qwen3:32b para razonamiento complejo, análisis de texto y programación. Es el que más tiempo de GPU ocupa pero los resultados son los mejores de lo que tengo
  • qwen3:14b para tareas más rápidas donde no necesito toda la potencia
  • gemma3:12b cuando quiero respuestas más concisas y directas

Para código:

  • phi4 funciona sorprendentemente bien para Python y JavaScript
  • deepseek-r1:14b cuando hay que pensar el problema antes de responder

Para imágenes:

  • llava:13b para analizar capturas de pantalla, fotos del lab, o pedir que me describa algo visual

Que no uso casi:

  • samantha-mistral: lo instalé para probar un roleplay conversacional, no es para trabajo
  • deepseek-r1:1.5b: demasiado pequeño para que sea útil, lo tengo de referencia

La realidad es que el 80% del tiempo uso qwen3 en alguna variante.

Cómo está organizada la interfaz
#

La pantalla principal es un chat limpio. Arriba a la izquierda el selector de modelo. Historial de conversaciones en el panel lateral izquierdo.

Lo que más configuro:

System prompts por modelo. Cada modelo puede tener un prompt de sistema por defecto. Para el que uso de trabajo tengo algo como “responde en español, sé conciso, si no sabes algo dilo”. Para el de código, le pido que siempre explique qué hace antes de dar el código.

Workspaces. Puedo tener varios usuarios en la misma instancia. Mi mujer tiene su propia cuenta con su historial separado. Cada uno tiene sus conversaciones, sus documentos subidos, sus prompts.

Carpetas de conversaciones. Las organizo por proyecto o tema. Tengo una carpeta para cosas del homelab, otra para trabajo, otra para escritura. El historial se vuelve utilizable.

RAG: preguntar sobre tus propios documentos
#

Esto es lo que más me ha cambiado el flujo de trabajo.

RAG (Retrieval Augmented Generation) permite subir documentos y luego hacer preguntas sobre ellos. Open WebUI lo implementa de forma bastante sencilla.

El proceso:

  1. Subes un PDF, Markdown, o texto plano
  2. Open WebUI lo procesa y crea embeddings (vectores) del contenido
  3. Cuando preguntas algo, recupera los fragmentos relevantes y los pasa al modelo como contexto

Para embeddings uso nomic-embed-text que también tengo en Ollama. Es específicamente para esto, pequeño y rápido.

Casos de uso reales que tengo:

  • Manuales técnicos en PDF (tengo el manual del DS1621+ y de varios switches)
  • Notas de proyectos en Markdown
  • Documentación de APIs que uso habitualmente

La calidad depende mucho del modelo y del tamaño del documento. Con documentos grandes y modelos pequeños los resultados son mediocres. Con qwen3:32b y documentos bien estructurados, funciona bastante bien.

Multimodal: LLaVA para imágenes
#

Con modelos de visión como LLaVA puedes arrastrar una imagen al chat y preguntar sobre ella.

Cosas que uso:

  • Subir una captura de error y preguntar qué significa
  • Pedir que describa el contenido de una imagen del lab
  • Analizar gráficas de Grafana (“qué está pasando aquí”)

No es magia. LLaVA de 13B tiene limitaciones claras con texto pequeño o imágenes muy detalladas. Pero para una lectura rápida de contexto visual funciona.

Rendimiento en Phatt
#

Phatt tiene dos NVIDIA A2000 12GB. Ollama usa las GPUs para inferencia.

Tiempos aproximados con las GPUs:

  • qwen3:14b: respuestas en 3-5 segundos para consultas normales
  • qwen3:32b: 8-15 segundos dependiendo de la longitud
  • gemma3:12b: 2-4 segundos, muy ágil
  • llava:13b: 5-10 segundos para analizar una imagen

Sin GPU (solo CPU), los mismos modelos tardarían 10 veces más. Para modelos grandes como qwen3:32b seria prácticamente inutilizable en tiempo real.

Si tienes una máquina sin GPU discreta, los modelos de 7B o menos son perfectamente usables en CPU. Phi4 en un Mac mini M1 va bien.

Instalación paso a paso
#

Si ya tienes Ollama funcionando, añadir Open WebUI es trivial.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
mkdir -p ~/docker/open-webui && cd ~/docker/open-webui

cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    ports:
      - "8085:8080"
    environment:
      - OLLAMA_BASE_URL=http://TU_IP:11434
      - TZ=Europe/Madrid
    volumes:
      - ./data:/app/backend/data
EOF

docker compose up -d

Primera vez que entras a http://tu-ip:8085:

  1. Crea la cuenta de administrador (el primero es admin automáticamente)
  2. En Settings → Connections verifica que detecta Ollama y los modelos
  3. Opcional: en Settings → Models puedes ocultar los que no uses

Si Ollama no detecta los modelos, revisa que OLLAMA_BASE_URL es correcta y que el puerto 11434 es accesible desde el contenedor.

Exponer al exterior con seguridad
#

Yo lo tengo detrás de Cloudflare Tunnel con autenticación. No lo expongo directamente a internet sin protección.

Opciones para acceso externo:

Opción 1: Tailscale (la más simple). Solo accedes cuando estás en tu red Tailscale. Sin más configuración.

Opción 2: Cloudflare Tunnel + Access. Lo expones via tunnel y añades Cloudflare Access para que pida autenticación antes de llegar a Open WebUI. Muy cómodo para acceso desde cualquier sitio.

Opción 3: VPN tradicional. WireGuard o similar, solo accedes estando conectado a la VPN.

Lo que no haría: exponerlo directamente con solo la autenticación de Open WebUI. El sistema de usuarios es suficiente para uso local, pero para internet necesitas una capa extra.

Lo que Open WebUI no reemplaza
#

Siendo honesto, para algunas cosas sigo usando Claude o ChatGPT:

  • Cuando necesito los últimos datos de internet y no he configurado la búsqueda web
  • Para tareas donde el tamaño del contexto importa mucho (documentos enormes)
  • Para código muy específico donde Claude 3.7 es claramente superior a lo que tengo local

Pero para el uso diario del homelab, consultas técnicas, redacción de textos en español, análisis de logs, o simplemente experimentar con modelos, Open WebUI en local cubre el 70-80% de lo que antes hacía en ChatGPT.

La diferencia más importante: privacidad. Las conversaciones del trabajo no salen de casa. Para algunas cosas eso vale más que tener el mejor modelo del mercado.

Actualizar Open WebUI
#

La imagen ghcr.io/open-webui/open-webui:main es la rama principal, se actualiza frecuentemente. Para actualizar:

1
2
docker compose pull
docker compose up -d

Las conversaciones y configuración están en ./data y se preservan. El proceso tarda menos de un minuto.

Con Watchtower puedes automatizarlo si quieres, aunque yo prefiero hacerlo manualmente para evitar sorpresas.

Conclusión
#

Si tienes Ollama en el homelab y lo usas por terminal, Open WebUI es la siguiente pieza lógica. El salto en comodidad es enorme.

La instalación son literalmente cinco minutos si ya tienes Ollama. Las conversaciones guardadas, el selector de modelos, el RAG básico y el soporte multimodal hacen que el uso diario sea radicalmente más cómodo.

Si todavía no tienes Ollama, empieza por ahí y luego vuelve a este post. El orden importa.