Por qué añadir Open-WebUI a tu servidor Ollama
Ollama expone una API REST compatible con OpenAI — eficiente para desarrolladores, inaccesible para otros miembros del equipo. Open-WebUI cierra esa brecha: una interfaz web completa que se conecta a Ollama (o cualquier proveedor compatible con OpenAI) y convierte un servidor de inferencia en una herramienta colaborativa.
Con más de 150 000 estrellas en GitHub (licencia MIT), Open-WebUI se ha convertido en el frontend de referencia para Ollama. Su crecimiento fue amplificado por la Serie B de Ollama — 65 millones de dólares recaudados en julio de 2026 — que aceleró la adopción del motor de inferencia en equipos de desarrollo.
El proyecto está activo, se mantiene de forma continua y publica etiquetas estables (v0.6.x en el momento de este artículo). Su madurez le permite cubrir necesidades que van mucho más allá del chat: RAG sobre archivos locales, gestión de múltiples modelos, grupos de usuarios e integración SSO mediante OpenID Connect.
Lo que Open-WebUI aporta concretamente a tu stack Ollama
- Interfaz multiusuario: cada miembro del equipo tiene su cuenta, historial y conversaciones — sin acceso a la API bruta ni a la línea de comandos.
- RAG nativo: importa archivos PDF, Markdown o Word directamente desde la interfaz; Open-WebUI los indexa y los inyecta en el contexto de cada conversación.
- Gestión de modelos: descarga, elimina y activa modelos de Ollama desde la interfaz web, sin pasar por
docker exec. - SSO con OpenID Connect: conecta Open-WebUI a tu proveedor de identidad (Keycloak, Authentik, Google Workspace…) para acceso unificado y revocación centralizada.
- Grupos y roles: define quién accede a qué modelos, quién puede subir archivos, quién tiene derechos de administración.
- Sin dependencia de la nube: todos los tokens, conversaciones y archivos permanecen en tu infraestructura.
Requisitos de hardware y software
Open-WebUI se ejecuta en un contenedor Docker y se conecta a Ollama a través de la red Docker interna. Ambos pueden coexistir en el mismo VPS.
Para un equipo de 5 a 10 personas con modelos 7B cuantizados (Q4), planifica como mínimo:
- 8 GB de RAM (6 GB para el modelo + margen para Open-WebUI y el sistema)
- 4 vCPU: la inferencia en CPU es lenta con menos núcleos; pasa a 8 vCPU para un uso diario cómodo
- 30 GB de almacenamiento SSD mínimo, más espacio para tus modelos (un modelo 7B Q4 ≈ 4,5 GB, un modelo 13B ≈ 8 GB)
- Docker y Docker Compose instalados
- Un nombre de dominio apuntando a tu VPS (necesario para TLS y SSO)
- Un proxy inverso con HTTPS — Nginx, Traefik o Caddy (Open-WebUI requiere HTTPS para las cookies de sesión seguras)
Desplegar Open-WebUI y Ollama con Docker Compose
Crear el archivo Docker Compose
Crea un directorio de trabajo y escribe el archivo de composición:
mkdir -p /opt/openwebui && cd /opt/openwebuiContenido de
compose.yml:services: ollama: image: ollama/ollama:latest container_name: ollama volumes: - ollama_data:/root/.ollama restart: unless-stopped open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui depends_on: - ollama ports: - "127.0.0.1:3000:8080" environment: - OLLAMA_BASE_URL=http://ollama:11434 - WEBUI_SECRET_KEY=cambia-esto-por-una-cadena-aleatoria volumes: - open_webui_data:/app/backend/data restart: unless-stopped volumes: ollama_data: open_webui_data:La clave
WEBUI_SECRET_KEYdebe ser una cadena aleatoria larga: genera una conopenssl rand -hex 32.Iniciar el stack
Lanza los dos servicios:
docker compose up -dVerifica que ambos contenedores estén activos:
docker compose psDescargar un primer modelo
Desde el host, descarga un modelo mediante Ollama:
docker exec -it ollama ollama pull llama3.1:8bTambién puedes hacerlo desde la interfaz Open-WebUI una vez conectado, en Panel de administración → Modelos → Descargar desde Ollama.com.
Configurar el proxy inverso Nginx con HTTPS
Open-WebUI escucha en
127.0.0.1:3000. Crea un virtual host en Nginx para exponerlo en HTTPS:server { listen 443 ssl; server_name openwebui.yourdomain.com; ssl_certificate /etc/letsencrypt/live/openwebui.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/openwebui.yourdomain.com/privkey.pem; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 300s; } }Obtén el certificado con Certbot:
certbot --nginx -d openwebui.yourdomain.comCrear la cuenta de administrador
Abre
https://openwebui.yourdomain.comen tu navegador. La primera cuenta creada se convierte automáticamente en administrador. Introduce un correo y una contraseña.
Configurar el SSO con OpenID Connect
Open-WebUI admite de forma nativa la autenticación mediante OpenID Connect (OIDC). Puedes integrarlo con Keycloak, Authentik, Authelia o cualquier proveedor compatible (incluido Google Workspace o Microsoft Entra).
En compose.yml, añade las siguientes variables de entorno al servicio open-webui:
environment:
- OAUTH_CLIENT_ID=tu-client-id
- OAUTH_CLIENT_SECRET=tu-client-secret
- OPENID_PROVIDER_URL=https://tu-idp.example.com/.well-known/openid-configuration
- OAUTH_PROVIDER_NAME=Mi SSO
- ENABLE_OAUTH_SIGNUP=trueLa URL de callback que debes declarar en tu proveedor de identidad es https://openwebui.yourdomain.com/oauth/oidc/callback.
Reinicia el stack tras la modificación:
docker compose up -dPara restringir el acceso SSO a un dominio de correo específico (p. ej. @tu-empresa.com), configura la restricción directamente en tu proveedor de identidad, no en Open-WebUI. Keycloak y Authentik permiten filtrar por dominio a nivel del cliente OIDC — es el punto de control más seguro, ya que también cubre la API.
Activar el RAG sobre tus documentos
Open-WebUI integra un pipeline RAG (Generación Aumentada por Recuperación) que permite consultar tus documentos locales en una conversación. El procesamiento se realiza completamente en tu VPS — ningún documento se envía a un servicio externo.
Para activar el RAG:
1. Desde la interfaz, haz clic en el clip en la zona de entrada de una conversación, o usa la pestaña Documentos en el menú lateral.
2. Importa un archivo PDF, Markdown, DOCX o TXT. Open-WebUI lo trocea, vectoriza y almacena en su base de datos local.
3. En la conversación, prefija tu mensaje con # seguido del nombre del documento para inyectarlo como contexto.
Open-WebUI, AnythingLLM, LibreChat: qué interfaz elegir
Desplace la tabla
| Criterio | Open-WebUI | AnythingLLM / LibreChat |
|---|---|---|
| Backend LLM | Ollama nativo + cualquier endpoint OpenAI | OpenAI, Ollama, Azure, LM Studio |
| Gestión de usuarios | Integrada, grupos, OIDC nativo | Integrada (AnythingLLM: espacios aislados) |
| RAG | Nativo, sin configuración | Nativo, configurable (LanceDB, pgvector) |
| Estrellas GitHub | 150 000+ (MIT) | 40 000+ (MIT) / 20 000+ (MIT) |
| Caso de uso principal | Equipo con Ollama ya desplegado | RAG multi-fuente avanzado / chat multi-backend |
Solución de problemas: errores comunes
Connection refused al iniciar Open-WebUI.
Ollama aún no está listo cuando Open-WebUI intenta conectarse. Espera 20 segundos y ejecuta docker compose restart open-webui.
El streaming se interrumpe tras 60 segundos.
Tu proxy inverso aplica un timeout HTTP por defecto. Añade proxy_read_timeout 300s; en el bloque Nginx location /.
WebSocket connection failed.
Verifica que las cabeceras Upgrade y Connection se transmitan correctamente por el proxy inverso.
La autenticación SSO devuelve redirect_uri_mismatch.
La URL de callback declarada en tu proveedor de identidad no coincide con la que envía Open-WebUI. Debe ser exactamente https://openwebui.yourdomain.com/oauth/oidc/callback.
Un usuario SSO puede iniciar sesión pero no tiene acceso a ningún modelo.
Las nuevas cuentas creadas mediante SSO se colocan por defecto en el rol pending. Cambia su rol a user en Panel de administración → Usuarios, o establece DEFAULT_USER_ROLE=user en las variables de entorno.
Asegurar el acceso a la API de Ollama
Por defecto, Ollama escucha en 0.0.0.0:11434 dentro de su contenedor. La configuración compose.yml propuesta arriba no publica este puerto en el host — solo Open-WebUI accede a él a través de la red Docker interna. Esta es la postura correcta.
Si necesitas acceder a la API de Ollama directamente (desde un IDE, un notebook Jupyter o una aplicación externa):
1. Túnel SSH: ssh -L 11434:localhost:11434 user@tu-vps — la API es accesible localmente sin exposición pública.
2. Proxy inverso con autenticación: expón Ollama detrás de Nginx con auth_basic o un token Bearer.
Nunca publiques el puerto 11434 directamente en la interfaz pública sin autenticación: la API de Ollama no tiene protección nativa contra accesos no autorizados.
Para mantener Open-WebUI actualizado, cambia la imagen de ghcr.io/open-webui/open-webui:main a ghcr.io/open-webui/open-webui:v0.6.x (o la última etiqueta estable) en tu compose.yml. La etiqueta :main sigue el desarrollo continuo — útil para probar nuevas funciones, menos predecible en producción. Consulta las notas de la versión en GitHub antes de cada actualización.
Funciones avanzadas para explorar tras el despliegue
- Pipelines y funciones: Open-WebUI permite escribir funciones Python que se intercalan en el flujo de conversación — filtros, enriquecedores de contexto, conectores a APIs externas.
- Modelos personalizados: crea 'modelos' preconfigurados (instrucciones de sistema, temperatura, contexto) y compártelos con grupos de usuarios específicos.
- Generación de imágenes: conecta Open-WebUI a una instancia local de Stable Diffusion o ComfyUI para generar imágenes directamente en el chat.
- Integración con herramientas externas: mediante el protocolo MCP (Model Context Protocol), Open-WebUI puede llamar a herramientas externas — bases de datos, APIs REST, búsqueda web.
Documentación oficial
Para la configuración avanzada y las opciones propias de la herramienta, consulta la documentación oficial de Open-WebUI. Esta guía cubre el despliegue básico y las configuraciones más habituales — los parámetros específicos de tu entorno (integración LDAP, configuración de pipelines, ajuste de embeddings) se encuentran en la documentación del proyecto.