Tutorial

Open-WebUI + Ollama en VPS: interfaz web multiusuario para LLM

Inteligencia Artificial9 min de lectura5 pasos

Ollama sirve tus modelos de lenguaje a través de una API local. Open-WebUI añade la capa de interfaz: una aplicación web completa con gestión de usuarios, RAG sobre documentos, historial de conversaciones y autenticación SSO. Al desplegar ambos en tu VPS, das acceso a todo tu equipo a LLM privados sin exponer la API bruta ni requerir acceso a la línea de comandos. Esta guía cubre la instalación, el proxy inverso, el SSO y la gestión de permisos.

Contenido· Por qué añadir Open-WebUI a tu servidor Ollama1/11
  1. 01Por qué añadir Open-WebUI a tu servidor Ollama
  2. 02Lo que Open-WebUI aporta concretamente a tu stack Ollama
  3. 03Requisitos de hardware y software
  4. 04Desplegar Open-WebUI y Ollama con Docker Compose
  5. 05Configurar el SSO con OpenID Connect
  6. 06Activar el RAG sobre tus documentos
  7. 07Open-WebUI, AnythingLLM, LibreChat: qué interfaz elegir
  8. 08Solución de problemas: errores comunes
  9. 09Asegurar el acceso a la API de Ollama
  10. 10Funciones avanzadas para explorar tras el despliegue
  11. 11Documentación oficial

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

  1. Crear el archivo Docker Compose

    Crea un directorio de trabajo y escribe el archivo de composición:

    mkdir -p /opt/openwebui && cd /opt/openwebui

    Contenido 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_KEY debe ser una cadena aleatoria larga: genera una con openssl rand -hex 32.

  2. Iniciar el stack

    Lanza los dos servicios:

    docker compose up -d

    Verifica que ambos contenedores estén activos:

    docker compose ps
  3. Descargar un primer modelo

    Desde el host, descarga un modelo mediante Ollama:

    docker exec -it ollama ollama pull llama3.1:8b

    También puedes hacerlo desde la interfaz Open-WebUI una vez conectado, en Panel de administración → Modelos → Descargar desde Ollama.com.

  4. 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.com
  5. Crear la cuenta de administrador

    Abre https://openwebui.yourdomain.com en 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=true

La 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 -d

Para 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

CriterioOpen-WebUIAnythingLLM / LibreChat
Backend LLMOllama nativo + cualquier endpoint OpenAIOpenAI, Ollama, Azure, LM Studio
Gestión de usuariosIntegrada, grupos, OIDC nativoIntegrada (AnythingLLM: espacios aislados)
RAGNativo, sin configuraciónNativo, configurable (LanceDB, pgvector)
Estrellas GitHub150 000+ (MIT)40 000+ (MIT) / 20 000+ (MIT)
Caso de uso principalEquipo con Ollama ya desplegadoRAG 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.

Un VPS listo para Open-WebUI y Ollama

Open-WebUI con Ollama requiere un VPS con acceso root, Docker y suficiente RAM para cargar tus modelos. El VPS Cloud de ServOrbit ofrece la escalabilidad vertical necesaria para pasar de un modelo 7B a uno 13B sin migración.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva