[{"data":1,"prerenderedAt":226},["ShallowReactive",2],{"seo-verification":3,"blog-open-webui-ollama-en-vps-interfaz-web-multiusuario-para-llm-ma-es":6,"promo-bar-likely":225},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-open-webui-ollama-en-vps-interfaz-web-multiusuario-para-llm-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":164,"ctaBody":165,"ctaButton":166,"ctaUrl":167,"relatedPosts":168},316,"open-webui-ollama-en-vps-interfaz-web-multiusuario-para-llm",{"fr":12,"en":13,"ar":14,"es":10},"open-webui-ollama-vps","open-webui-ollama-on-vps-multi-user-interface-for-local-llms","واجهة-ويب-open-webui-مع-ollama-على-vps-للفرق","Open-WebUI + Ollama en VPS: interfaz web multiusuario para LLM","Ofrece a todo tu equipo una interfaz web multiusuario sobre tus modelos Ollama: RAG, gestión de modelos, SSO con OpenID Connect — sin dependencia de la nube.",18,7,false,"2026-08-30T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},1,"Inteligencia Artificial","intelligence-artificielle","bg-purple-500\u002F10 text-purple-400","ia",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fopen-webui-ollama-vps-poster.svg","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. También cubre la búsqueda web con SearXNG, qué hacer cuando deja de devolver resultados y qué se puede medir realmente del uso de una instancia de equipo.",[35,39,49,52,71,74,77,80,83,111,114,117,132,134,137,144,147,149,152,154,161],{"type":36,"title":37,"body":38},"h2","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.\n\nEl repositorio supera las 155 000 estrellas en GitHub. Cuidado con la licencia: no es MIT. El proyecto publica una licencia propia, de tipo BSD de tres cláusulas, con una condición añadida: por encima de 50 usuarios en 30 días móviles, está prohibido modificar o retirar la marca « Open WebUI », salvo permiso escrito o licencia empresarial. Para un equipo pequeño nada cambia; más allá, lee el archivo LICENSE antes de personalizar la interfaz. Por su parte, Ollama anunció en julio de 2026 una ronda Serie B de 65 millones de dólares, señal de que el motor de inferencia se instala a largo plazo en los equipos de desarrollo.\n\nEl proyecto se mantiene de forma continua y publica etiquetas estables a buen ritmo: la versión 0.13.0 es del 3 de noviembre de 2026. Ese ritmo tiene un reverso, porque los comportamientos por defecto cambian de una versión menor a otra (la llamada nativa a herramientas pasó a ser la opción por defecto en la 0.10.0). De ahí el interés de fijar una etiqueta y leer las notas de versión antes de cada actualización. Open-WebUI cubre necesidades que van mucho más allá del chat: RAG sobre archivos locales, gestión de múltiples modelos, grupos de usuarios, búsqueda web e integración SSO mediante OpenID Connect.",{"type":40,"title":41,"items":42},"ul","Lo que Open-WebUI aporta concretamente a tu stack Ollama",[43,44,45,46,47,48],"**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.",{"type":36,"title":50,"body":51},"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.\n\nPara un equipo de 5 a 10 personas con modelos 7B cuantizados (Q4), planifica como mínimo:\n\n- **8 GB de RAM** (6 GB para el modelo + margen para Open-WebUI y el sistema)\n- **4 vCPU**: la inferencia en CPU es lenta con menos núcleos; pasa a 8 vCPU para un uso diario cómodo\n- **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)\n- **Docker y Docker Compose** instalados\n- Un **nombre de dominio** apuntando a tu VPS (necesario para TLS y SSO)\n- Un **proxy inverso** con HTTPS — Nginx, Traefik o Caddy (servido en HTTP sobre un dominio o una IP no locales, Open-WebUI pierde funciones en el navegador: ver la solución de problemas)",{"type":53,"title":54,"steps":55},"steps","Desplegar Open-WebUI y Ollama con Docker Compose",[56,59,62,65,68],{"title":57,"body":58},"Crear el archivo Docker Compose","Crea un directorio de trabajo y escribe el archivo de composición:\n\n```bash\nmkdir -p \u002Fopt\u002Fopenwebui && cd \u002Fopt\u002Fopenwebui\n```\n\nContenido de `compose.yml`:\n\n```bash\nservices:\n  ollama:\n    image: ollama\u002Follama:latest\n    container_name: ollama\n    volumes:\n      - ollama_data:\u002Froot\u002F.ollama\n    restart: unless-stopped\n\n  open-webui:\n    image: ghcr.io\u002Fopen-webui\u002Fopen-webui:main\n    container_name: open-webui\n    depends_on:\n      - ollama\n    ports:\n      - \"127.0.0.1:3000:8080\"\n    environment:\n      - OLLAMA_BASE_URL=http:\u002F\u002Follama:11434\n      - WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}\n    volumes:\n      - open_webui_data:\u002Fapp\u002Fbackend\u002Fdata\n    restart: unless-stopped\n\nvolumes:\n  ollama_data:\n  open_webui_data:\n```\n\nLa clave `WEBUI_SECRET_KEY` debe ser una cadena aleatoria larga, nunca escrita en el archivo de composición: genérala con `echo \"WEBUI_SECRET_KEY=$(openssl rand -hex 32)\" > .env && chmod 600 .env`. Docker Compose lee este archivo `.env` del directorio y sustituye `${WEBUI_SECRET_KEY}`.",{"title":60,"body":61},"Iniciar el stack","Lanza los dos servicios:\n\n```bash\ndocker compose up -d\n```\n\nVerifica que ambos contenedores estén activos:\n\n```bash\ndocker compose ps\n```",{"title":63,"body":64},"Descargar un primer modelo","Desde el host, descarga un modelo mediante Ollama:\n\n```bash\ndocker exec -it ollama ollama pull llama3.1:8b\n```\n\nTambién puedes hacerlo desde la interfaz Open-WebUI una vez conectado, en **Panel de administración → Modelos → Descargar desde Ollama.com**.",{"title":66,"body":67},"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:\n\n```bash\nserver {\n    listen 443 ssl;\n    server_name openwebui.yourdomain.com;\n\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fopenwebui.yourdomain.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fopenwebui.yourdomain.com\u002Fprivkey.pem;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:3000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_read_timeout 300s;\n    }\n}\n```\n\nObtén el certificado con Certbot:\n\n```bash\ncertbot --nginx -d openwebui.yourdomain.com\n```",{"title":69,"body":70},"Crear la cuenta de administrador","Abre `https:\u002F\u002Fopenwebui.yourdomain.com` en tu navegador. **La primera cuenta creada se convierte automáticamente en administrador**: créala en cuanto el sitio esté en línea, antes de que lo haga otra persona. Introduce un correo y una contraseña.",{"type":36,"title":72,"body":73},"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).\n\nEn `compose.yml`, añade las siguientes variables de entorno al servicio `open-webui`:\n\n```bash\nenvironment:\n  - OAUTH_CLIENT_ID=tu-client-id\n  - OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET}\n  - OPENID_PROVIDER_URL=https:\u002F\u002Ftu-idp.example.com\u002F.well-known\u002Fopenid-configuration\n  - OAUTH_PROVIDER_NAME=Mi SSO\n  - ENABLE_OAUTH_SIGNUP=true\n```\n\nComo la clave de sesión, el secreto de cliente va en el archivo `.env` (`OAUTH_CLIENT_SECRET=…`), no en `compose.yml`.\n\nLa URL de callback que debes declarar en tu proveedor de identidad es `https:\u002F\u002Fopenwebui.yourdomain.com\u002Foauth\u002Foidc\u002Fcallback`.\n\nReinicia el stack tras la modificación:\n\n```bash\ndocker compose up -d\n```",{"type":75,"body":76},"tip","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.",{"type":36,"title":78,"body":79},"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.\n\nPara activar el RAG:\n\n1. 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.\n2. Importa un archivo PDF, Markdown, DOCX o TXT. Open-WebUI lo trocea, vectoriza y almacena en su base de datos local.\n3. En la conversación, prefija tu mensaje con `#` seguido del nombre del documento para inyectarlo como contexto.",{"type":36,"title":81,"body":82},"Añadir la búsqueda web con SearXNG","La búsqueda web no viene integrada en Open-WebUI: la interfaz consulta un motor externo y luego inyecta las páginas encontradas en el contexto del modelo. SearXNG, un metabuscador autoalojado, evita depender de una clave de API de pago: consulta por ti varios motores públicos y devuelve una lista única. Ahí está también su fragilidad, detallada en la sección de solución de problemas más abajo.\n\nBastan tres ajustes. En SearXNG, abre `settings.yml` y añade `json` a la lista `formats` situada bajo `search`, junto a `html`: sin eso, Open-WebUI recibe un error 403. En Open-WebUI, abre **Panel de administración → Ajustes → Búsqueda web**, elige `searxng` e introduce la URL de consulta, por ejemplo `http:\u002F\u002Fsearxng:8080\u002Fsearch?q=\u003Cquery>` (variable `SEARXNG_QUERY_URL`). También puedes definir `ENABLE_WEB_SEARCH=true` y `WEB_SEARCH_ENGINE=searxng` en el `compose.yml`. Si los dos servicios comparten una red Docker, el nombre del servicio sirve de host y el puerto de SearXNG no hace falta publicarlo en Internet.\n\nQueda una trampa: tres interruptores deben estar activados a la vez, la búsqueda web global, la capacidad « búsqueda web » del modelo y el botón de la conversación en curso. Un solo olvido da una respuesta sin búsqueda, a menudo sin error visible.",{"type":84,"title":85,"headers":86,"rows":90},"comparison","Open-WebUI, AnythingLLM, LibreChat: qué interfaz elegir",[87,88,89],"Criterio","Open-WebUI","AnythingLLM \u002F LibreChat",[91,95,99,103,107],[92,93,94],"Backend LLM","Ollama nativo + cualquier endpoint OpenAI","OpenAI, Ollama, Azure, LM Studio",[96,97,98],"Gestión de usuarios","Integrada, grupos, OIDC nativo","Integrada (AnythingLLM: espacios aislados)",[100,101,102],"RAG","Nativo, sin configuración","Nativo, configurable (LanceDB, pgvector)",[104,105,106],"Estrellas GitHub","155 000+ (licencia propia, marca protegida)","65 000+ (MIT) \u002F 45 000+ (MIT)",[108,109,110],"Caso de uso principal","Equipo con Ollama ya desplegado","RAG multi-fuente avanzado \u002F chat multi-backend",{"type":36,"title":112,"body":113},"Solución de problemas: errores comunes","**`Connection refused` al iniciar Open-WebUI.**\nOllama aún no está listo cuando Open-WebUI intenta conectarse. Espera 20 segundos y ejecuta `docker compose restart open-webui`.\n\n**El streaming se interrumpe tras 60 segundos.**\nTu proxy inverso aplica un timeout HTTP por defecto. Añade `proxy_read_timeout 300s;` en el bloque Nginx `location \u002F`.\n\n**`WebSocket connection failed`.**\nVerifica que las cabeceras `Upgrade` y `Connection` se transmitan correctamente por el proxy inverso.\n\n**La autenticación SSO devuelve `redirect_uri_mismatch`.**\nLa URL de callback declarada en tu proveedor de identidad no coincide con la que envía Open-WebUI. Debe ser exactamente `https:\u002F\u002Fopenwebui.yourdomain.com\u002Foauth\u002Foidc\u002Fcallback`.\n\n**Un usuario SSO puede iniciar sesión pero no tiene acceso a ningún modelo.**\n`DEFAULT_USER_ROLE` vale `pending` por defecto: toda cuenta nueva, SSO incluido, espera a que un administrador la active, y `ENABLE_OAUTH_SIGNUP` solo gobierna la creación de la cuenta. Cambia su rol a `user` en **Panel de administración → Usuarios**, o establece `DEFAULT_USER_ROLE=user` en las variables de entorno.\n\n**Pantalla que no responde, `crypto.randomUUID is not a function` en la consola del navegador.**\nOpen-WebUI se sirve en HTTP sobre un dominio o una dirección no locales: el navegador solo ofrece esta función en un contexto seguro (HTTPS o `localhost`). Termina la configuración TLS del proxy inverso antes de probar las funciones de IA.\n\n**La búsqueda web no devuelve nada.**\nConsulta la sección dedicada más abajo: prueba SearXNG por separado antes de culpar a Open-WebUI.",{"type":36,"title":115,"body":116},"Solución de problemas: la búsqueda web no devuelve nada","**Síntoma.** La búsqueda web está activada, pero la conversación muestra `No results found from web search` (un error 404 en el registro de Open-WebUI), o el modelo responde sin haber buscado.\n\n**Qué dice ese mensaje.** Open-WebUI sí llegó a SearXNG, le envió la consulta y recibió una lista vacía. Un caso público lo ilustra (issue open-webui #32401, abierta el 14 de octubre de 2026 tras pasar a la 0.12.0): el autor sospechaba de la nueva versión, el equipo de mantenimiento culpó primero al modelo y luego, con el registro de SearXNG en mano, comprobó que DuckDuckGo respondía con un CAPTCHA, Brave con « Too many requests » (motor suspendido 3 minutos cada vez) y Startpage con una redirección a su CAPTCHA. Todos los motores bloqueados, es decir, cero resultados. Según el mantenimiento, esos sitios bloqueaban la dirección IP con independencia de la actualización. La issue se cerró ese mismo día sin corrección del lado de Open-WebUI, y el autor acabó eligiendo el proveedor DDGS.\n\nEl método que conviene recordar: antes de culpar a la versión o al modelo, consulta SearXNG por separado.",{"type":53,"title":118,"steps":119},"Diagnosticar una búsqueda web vacía",[120,123,126,129],{"title":121,"body":122},"Consultar SearXNG sin Open-WebUI","Desde el VPS, ejecuta `curl -s 'http:\u002F\u002F127.0.0.1:8080\u002Fsearch?q=test&format=json'` adaptando host y puerto a tu instalación (si SearXNG solo es accesible por la red Docker, ejecuta el comando desde un contenedor de esa red). Tres resultados posibles: un error 403 significa que falta `json` en `formats`; una lista `results` vacía significa que los motores fallan; una lista con resultados significa que SearXNG funciona y que el problema está en Open-WebUI o en el modelo (ver el recuadro más abajo).",{"title":124,"body":125},"Leer el registro de SearXNG","`docker compose logs --tail 200 searxng` muestra lo que respondió cada motor. Busca las líneas que nombran un motor (duckduckgo, brave, startpage…) con un CAPTCHA, un rechazo por exceso de peticiones o un tiempo agotado. Un motor que reaparece en cada búsqueda con el mismo error está bloqueado para la dirección IP de tu VPS, algo que ocurre con más facilidad en una dirección de centro de datos.",{"title":127,"body":128},"Activar o sustituir motores","En `settings.yml`, sección `engines`, activa motores generalistas que no estén bloqueados: el mantenimiento de Open-WebUI cita Google, Bing, Mojeek y Qwant. Una entrada `name: mojeek` con `disabled: false` activa un motor presente en los ajustes por defecto; con `use_default_settings: true` al principio del archivo, solo listas tus diferencias. Reinicia con `docker compose restart searxng` y repite el paso 1 hasta obtener resultados. Activa varios motores: uno solo vuelve enseguida a quedar bloqueado.",{"title":130,"body":131},"Usar un proveedor con clave si la IP sigue bloqueada","Si todos los motores fallan, un proveedor por API evita el problema: Brave Search API, Tavily o Serper se eligen en la misma pantalla de administración. Para el plan gratuito de Brave, define `WEB_SEARCH_CONCURRENT_REQUESTS=1`. El proveedor DDGS, que eligió el autor de la issue, no requiere clave.",{"type":75,"body":133},"¿SearXNG devuelve resultados pero el asistente nunca busca? Desde la versión 0.10.0 (finales de junio de 2026), la llamada nativa a herramientas es el modo por defecto: la búsqueda web pasa a ser una herramienta que el modelo debe invocar por sí mismo, y un modelo antiguo o pequeño la omite o escribe una llamada mal formada. Elige un modelo reciente que gestione herramientas y comprueba que Function Calling esté en Native en los parámetros avanzados del modelo; el mantenimiento describe el modo Legacy como no soportado. Si la búsqueda funciona pero las páginas no se cargan, revisa `WEB_SEARCH_TRUST_ENV` detrás de un proxy HTTP y luego `USER_AGENT`.",{"type":36,"title":135,"body":136},"Seguir el uso de una instancia de equipo","Saber quién consume qué se convierte pronto en una cuestión de presupuesto cuando los desarrolladores llaman a la instancia por la API. Hoy, cuatro fuentes se complementan, cada una con un punto ciego:",{"type":40,"title":138,"items":139},"Las cuatro fuentes de medida",[140,141,142,143],"**El panel Analytics** (ajustes de administración, sección Analytics): mensajes, tokens de entrada y de salida, por modelo y por usuario, con filtro por grupo y por periodo; desde la 0.12.4, la clasificación es por tokens. Se calcula a partir del historial de mensajes guardado en la base de datos: lo que no se guarda ahí no aparece. `ENABLE_ADMIN_ANALYTICS=False` lo oculta.","**La vista personal** (ajustes, pestaña Usage, desde la 0.11.0 de julio de 2026): cada usuario ve su propia actividad, y nada de la de los demás.","**El registro de auditoría**: desactivado por defecto (`AUDIT_LOG_LEVEL=NONE`). Con `AUDIT_LOG_LEVEL=METADATA`, Open-WebUI escribe `audit.log` en su directorio de datos (rotación a 10 MB) para las peticiones autenticadas por cabecera `Authorization` o por cookie: las llamadas de API aparecen, por tanto, con el modelo solicitado. Para obtener también los tokens de cada respuesta (desde la 0.12.4), quita `\u002Fchat` de `AUDIT_EXCLUDED_PATHS`, que por defecto vale `\u002Fchats,\u002Fchat,\u002Ffolders`. Evita los niveles `REQUEST` y `REQUEST_RESPONSE`, que registran el contenido de las conversaciones, y repite una llamada de prueba para leer la entrada generada antes de construir un recuento sobre ella.","**Los registros del proxy inverso**: el ángulo más simple para el volumen. Con el formato combined de Nginx, `awk '{print $7}' \u002Fvar\u002Flog\u002Fnginx\u002Faccess.log | sort | uniq -c | sort -rn | head` clasifica las rutas más llamadas; añade `$request_time` a tu `log_format` para detectar peticiones lentas. Este registro no ve ni al usuario ni los tokens, y la cabecera `Authorization` nunca debe quedar registrada en él.",{"type":36,"title":145,"body":146},"Lo que el seguimiento de uso aún no hace","La petición de un seguimiento que separe la interfaz de la API y atribuya las llamadas a cada clave está abierta en el repositorio del proyecto: issue open-webui #21675, « enh: analytics », creada el 20 de febrero de 2026 y todavía abierta el 7 de noviembre de 2026, con un centenar de comentarios. El hilo cuenta que un usuario de API colocado en un grupo no aparece en Analytics, y el 14 de octubre un equipo cuyos desarrolladores usan sobre todo la API seguía pidiendo esa visibilidad. No se anuncia ninguna fecha: no planifiques nada sobre esta función.\n\nEl mantenimiento responde que un filtro, es decir, una función Python instalada en la interfaz, puede contar las peticiones, incluidas las de la API; un colaborador precisa que las rutas en passthrough se le escapan. Sitúa los límites por usuario o por grupo en la limitación de tasa, fuera del tema Analytics. Leer directamente la base SQLite `webui.db` sigue siendo posible sobre una copia, pero su esquema no es un contrato y cambia de una versión a otra. Un colaborador también ha publicado un plugin de cuotas de terceros: una función se ejecuta con los derechos del servidor, así que revisa su código antes de activarla.",{"type":75,"body":148},"Da a cada desarrollador su cuenta y su propia clave de API en lugar de una clave compartida: sin una identidad distinta, ninguna de las cuatro fuentes puede atribuir el uso. Si la API pasa a ser el canal principal, una pasarela delante de Ollama que cuente las llamadas en origen (LiteLLM, ya en el catálogo de ServOrbit, ofrece claves virtuales y seguimiento del gasto) es una pista que conviene probar antes de adoptarla.",{"type":36,"title":150,"body":151},"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.\n\nSi necesitas acceder a la API de Ollama directamente (desde un IDE, un notebook Jupyter o una aplicación externa):\n\n1. **Túnel SSH**: `ssh -L 11434:localhost:11434 user@tu-vps` — la API es accesible localmente sin exposición pública.\n2. **Proxy inverso con autenticación**: expón Ollama detrás de Nginx con `auth_basic` o un token Bearer.\n\nNunca 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.",{"type":75,"body":153},"Para mantener Open-WebUI actualizado, cambia la imagen de `ghcr.io\u002Fopen-webui\u002Fopen-webui:main` a `ghcr.io\u002Fopen-webui\u002Fopen-webui:v0.13.0` (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: algunas versiones han introducido migraciones de base de datos, otras cambian comportamientos por defecto (la llamada nativa a herramientas en la 0.10.0), y las notas de la 0.12.0 recomiendan actualizar pronto los despliegues de producción por sus correcciones de seguridad.",{"type":40,"title":155,"items":156},"Funciones avanzadas para explorar tras el despliegue",[157,158,159,160],"**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.",{"type":75,"title":162,"body":163},"Documentación oficial","Para la configuración avanzada y las opciones propias de la herramienta, consulta la \u003Ca href=\"https:\u002F\u002Fdocs.openwebui.com\">documentación oficial de Open-WebUI\u003C\u002Fa>. 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.","Ver planes VPS Cloud","\u002Fvps-cloud",[169,189,207],{"id":170,"slug":171,"slugs":172,"title":176,"excerpt":177,"readTime":178,"views":179,"isPinned":19,"noindex":19,"publishedAt":180,"updatedAt":181,"category":182,"categories":183,"featuredImage":30,"bgImage":31,"posterImage":185,"relatedSolution":186},9,"como-alojar-anythingllm-en-un-vps",{"fr":173,"en":174,"ar":175,"es":171},"heberger-anythingllm-vps","how-to-host-anythingllm-on-a-vps","كيفية-استضافة-anythingllm-على-خادم-vps","AnythingLLM en VPS: guía completa con trampas a evitar","Aloje AnythingLLM en un VPS: Docker, HTTPS y fijado de versión obligatorio. Trampas documentadas: :latest, Gemini v1.16 y la red Docker de Ollama.",8,0,"2026-06-11T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[184],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-anythingllm-vps-poster.svg",{"categorySlug":187,"appSlug":188},"inteligencia-artificial","anything-llm",{"id":190,"slug":191,"slugs":192,"title":196,"excerpt":197,"readTime":198,"views":23,"isPinned":19,"noindex":19,"publishedAt":199,"updatedAt":200,"category":201,"categories":202,"featuredImage":30,"bgImage":31,"posterImage":204,"relatedSolution":205},2,"desplegar-dify-en-un-vps",{"fr":193,"en":194,"ar":195,"es":191},"deployer-dify-vps","deploying-dify-on-a-vps-ai-workflows-under-control","نشر-dify-على-vps-سير-عمل-الذكاء-الاصطناعي-تحت-السيطرة","Desplegar Dify en un VPS: guía completa de instalación y plugins","Instala Dify en un VPS de ServOrbit: requisitos, Docker Compose, plugins offline, límites de la instalación Docker, copia antes de actualizar y solución de errores.",15,"2026-02-11T00:00:00+00:00","2026-10-29T03:10:23+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[203],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fdeployer-dify-vps-poster.svg",{"categorySlug":25,"appSlug":206},"dify",{"id":208,"slug":209,"slugs":210,"title":214,"excerpt":215,"readTime":216,"views":190,"isPinned":19,"noindex":19,"publishedAt":217,"updatedAt":218,"category":219,"categories":220,"featuredImage":30,"bgImage":31,"posterImage":222,"relatedSolution":223},177,"alojar-langfuse-en-un-vps",{"fr":211,"en":212,"ar":213,"es":209},"self-host-langfuse-vps","self-host-langfuse-on-a-vps-llm-observability-no-saas-bill","استضافة-langfuse-على-vps-مراقبة-llm-بلا-فاتورة-saas","Alojar Langfuse en un VPS: observabilidad LLM sin SaaS","Autoaloje Langfuse en un VPS — rastree cada llamada de IA, evalúe prompts y controle costos LLM. Guía completa: nginx, TLS, SDK Python\u002FJS, solución de problemas.",11,"2026-07-12T00:00:00+00:00","2026-11-04T16:30:26+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[221],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fself-host-langfuse-vps-poster.svg",{"categorySlug":187,"appSlug":224},"langfuse",true,1794270639527]