[{"data":1,"prerenderedAt":276},["ShallowReactive",2],{"seo-verification":3,"blog-alojar-weaviate-en-un-vps-ma-es":6,"promo-bar-likely":275},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-alojar-weaviate-en-un-vps-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":33,"intro":36,"sections":37,"ctaTitle":211,"ctaBody":212,"ctaButton":213,"ctaUrl":214,"relatedPosts":215},66,"alojar-weaviate-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"heberger-weaviate-vps","hosting-weaviate-on-a-vps","استضافة-weaviate-على-خادم-vps","Alojar Weaviate en un VPS","Weaviate en un VPS: Docker Compose comentado, clave API, elección del vectorizer, HNSW y cuantización, copias, cliente Python v4 y solución de errores.",12,0,false,"2026-04-15T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},6,"Bases de datos","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-weaviate-vps-poster.svg",{"categorySlug":34,"appSlug":35},"inteligencia-artificial","weaviate","Weaviate es una base de datos vectorial de código abierto escrita en Go, pensada para la búsqueda semántica y el RAG. Su particularidad: módulos que vectorizan sus objetos al importarlos y pueden generar una respuesta a partir de los resultados, sin pipeline externo. Esta guía despliega Weaviate en un VPS con Docker Compose, protege la API con claves, explica cómo elegir el vectorizer, cómo dimensionar la memoria del índice HNSW, cómo hacer copias de seguridad y cómo resolver los errores más frecuentes. Una comparativa con Qdrant, pgvector y Milvus le ayuda a decidir.",[38,42,53,56,84,115,118,127,130,133,136,139,148,204,207],{"type":39,"title":40,"body":41},"h2","Por qué autoalojar Weaviate en un VPS","Weaviate no se limita a almacenar vectores. Cada objeto lleva sus propiedades (texto, números, fechas, referencias) y uno o varios vectores, de modo que una sola consulta devuelve los documentos pertinentes con todos sus metadatos. Los módulos `text2vec-*` calculan los embeddings al importar, los módulos `generative-*` envían los resultados a un LLM y los módulos de reranking reordenan los candidatos. Todo se consulta por REST, GraphQL o gRPC. Autoalojarlo en un VPS le permite elegir qué módulos se activan, conectar sus propios modelos de embeddings (por ejemplo mediante Ollama en la misma máquina) y mantener documentos y vectores en un servidor que usted administra. Para un asistente documental interno, un buscador de catálogo o una memoria de agente, usted controla la latencia, la retención, el esquema de las colecciones y la frecuencia de las copias de seguridad. Y amplía los recursos del VPS al ritmo de su corpus, no al ritmo de una tarifa por volumen.",{"type":43,"title":44,"items":45},"ul","Lo que Weaviate aporta en la práctica",[46,47,48,49,50,51,52],"**Vectorización integrada** — con un módulo `text2vec-*`, usted inserta texto plano y Weaviate calcula el vector por sí mismo.","**Búsqueda híbrida nativa** — una consulta `hybrid` combina la puntuación vectorial y BM25, ponderadas por el parámetro `alpha`.","**RAG dentro de la base** — los módulos `generative-*` envían los objetos encontrados a un LLM y devuelven la respuesta junto con las fuentes.","**Multi-tenancy** — un shard aislado por cliente dentro de la misma colección, ideal para un SaaS que separa los datos de cada cuenta.","**Named vectors** — varios vectores por objeto (título, contenido, imagen), cada uno con su propio vectorizer y su propio índice.","**Compresión del índice** — cuantización PQ, BQ o SQ para reducir la memoria que ocupan los vectores.","**Licencia BSD-3-Clause** — código auditable, desplegable sin depender de un servicio gestionado.",{"type":39,"title":54,"body":55},"Requisitos cuantificados para un VPS con Weaviate","Para probar con unos miles de objetos bastan 2 GB de RAM. Para un uso real con la vectorización delegada a una API o a Ollama, 4 GB y 2 vCPU son un punto de partida cómodo. Si ejecuta `text2vec-transformers` en la misma máquina, prevea 8 GB o más: la inferencia en CPU es lenta en las importaciones masivas. En disco, cuente de 30 a 60 GB de SSD según el volumen y deje margen, porque Weaviate pasa a solo lectura cuando la ocupación del disco supera un umbral (`DISK_USE_READONLY_PERCENTAGE`, 90 % por defecto). Tres puertos importan: `8080` para REST y GraphQL, `50051` para gRPC (que el cliente Python v4 usa para consultas e importaciones) y `2112` para las métricas de Prometheus si las activa. Ninguno debe quedar expuesto directamente a Internet: solo un proxy inverso en HTTPS, en un subdominio como `vectors.example.com`, debe dar la cara al público. Por último, necesita Docker y Docker Compose, ya presentes en los VPS creados desde el Marketplace.",{"type":57,"title":58,"headers":59,"rows":63},"comparison","Qué vectorizer elegir",[60,61,62],"Opción","Dónde se ejecuta el modelo","Cuándo elegirla",[64,68,72,76,80],[65,66,67],"none + vectores propios","En su aplicación, antes de importar","Ya calcula sus embeddings o quiere control total sobre el modelo",[69,70,71],"text2vec-openai","API externa, clave enviada en la cabecera X-OpenAI-Api-Key","Arranque rápido, VPS ligero, datos que pueden salir del servidor",[73,74,75],"text2vec-ollama","Servidor Ollama en el VPS o en la red privada","Embeddings locales sin GPU dedicada, con un modelo como nomic-embed-text",[77,78,79],"text2vec-transformers","Contenedor de inferencia junto a Weaviate","Modelo incluido en la imagen, idealmente con GPU para grandes importaciones",[81,82,83],"Varios mediante named vectors","Combinación de las opciones anteriores","Comparar dos modelos o vectorizar título y contenido por separado",{"type":85,"title":86,"steps":87},"steps","Desplegar Weaviate paso a paso",[88,91,94,97,100,103,106,109,112],{"title":89,"body":90},"Preparar el VPS y el DNS","Compruebe Docker con `docker compose version`. Cree un registro DNS A para `vectors.example.com` hacia la IP del VPS y después una carpeta `\u002Fopt\u002Fweaviate` que contendrá el `docker-compose.yml`.",{"title":92,"body":93},"Escribir el servicio weaviate","Declare la imagen `semitechnologies\u002Fweaviate:1.27.2` (también publicada en `cr.weaviate.io`). Publique los puertos solo en local: `127.0.0.1:8080:8080` y `127.0.0.1:50051:50051`. Docker se salta las reglas de `ufw` en los puertos publicados, así que un `8080:8080` seguiría accesible desde Internet aunque el cortafuegos esté activo. Monte un volumen con nombre en `\u002Fvar\u002Flib\u002Fweaviate` y añada `restart: unless-stopped`.",{"title":95,"body":96},"Definir las variables básicas","`PERSISTENCE_DATA_PATH=\u002Fvar\u002Flib\u002Fweaviate` para la persistencia, `QUERY_DEFAULTS_LIMIT=25` para el número de resultados por defecto, `CLUSTER_HOSTNAME=node1` para un nombre de nodo estable: si cambia entre dos reinicios, el nodo deja de encontrar su estado. Añada `DEFAULT_VECTORIZER_MODULE=none` o el módulo que prefiera, y `ENABLE_API_BASED_MODULES=true` para activar los módulos que llaman a una API (`text2vec-openai`, `text2vec-ollama`, `generative-openai`…).",{"title":98,"body":99},"Activar la autenticación por clave API","Ponga `AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false` y después `AUTHENTICATION_APIKEY_ENABLED=true`, `AUTHENTICATION_APIKEY_ALLOWED_KEYS=clave-admin,clave-lectura` y `AUTHENTICATION_APIKEY_USERS=admin,app-lectura`: claves y usuarios se corresponden por orden. Genere las claves con `openssl rand -hex 32`. Para limitar la segunda clave a lectura, añada `AUTHORIZATION_ADMINLIST_ENABLED=true`, `AUTHORIZATION_ADMINLIST_USERS=admin` y `AUTHORIZATION_ADMINLIST_READONLY_USERS=app-lectura`.",{"title":101,"body":102},"Arrancar y comprobar","Ejecute `docker compose up -d` y después `curl -s localhost:8080\u002Fv1\u002F.well-known\u002Fready`, que responde 200 cuando el nodo está listo. `curl -s -H \"Authorization: Bearer $CLAVE\" localhost:8080\u002Fv1\u002Fmeta` devuelve la versión y la lista de módulos cargados: es la primera comprobación cuando un vectorizer parece no estar disponible.",{"title":104,"body":105},"Poner Nginx y TLS delante del puerto 8080","Configure un `server` de Nginx para `vectors.example.com` con `proxy_pass http:\u002F\u002F127.0.0.1:8080;`, emita el certificado con `certbot --nginx -d vectors.example.com` y aumente `client_max_body_size` si importa por lotes vía REST. La cabecera `Authorization` llega a Weaviate sin cambios.",{"title":107,"body":108},"Conectarse con el cliente Python v4","Instale `pip install -U weaviate-client`. En el VPS: `client = weaviate.connect_to_local(port=8080, grpc_port=50051, auth_credentials=Auth.api_key(CLAVE))`, con `from weaviate.classes.init import Auth`. Desde otro servidor, use `weaviate.connect_to_custom(...)` indicando host, puerto y TLS tanto para HTTP como para gRPC. Compruebe con `client.is_ready()` y termine con `client.close()`.",{"title":110,"body":111},"Crear una colección e importar","`client.collections.create(\"Article\", ...)` con sus propiedades y su vectorizer, y después `articles = client.collections.get(\"Article\")`. Importe por lotes dentro de un bloque `with articles.batch.dynamic() as batch:` llamando a `batch.add_object(properties={...})`, y añada `vector=[...]` si el vectorizer es `none`. Revise luego `articles.batch.failed_objects` para detectar los objetos rechazados.",{"title":113,"body":114},"Conectar el resto de la pila de IA","Para embeddings y generación totalmente locales, instale Ollama en el mismo VPS y apunte `text2vec-ollama` y `generative-ollama` a su API. Open WebUI o su aplicación RAG consultan entonces Weaviate como memoria documental.",{"type":39,"title":116,"body":117},"Modelar los datos: colecciones, multi-tenancy y named vectors","En Weaviate, los datos viven en **colecciones** (llamadas clases en la API antigua). Una colección define sus propiedades tipadas (`text`, `int`, `number`, `date`, `boolean`, referencias a otras colecciones), su vectorizer y la configuración de su índice. Declare las propiedades de forma explícita en lugar de dejar que el auto-esquema las adivine en la primera inserción: un campo de fecha interpretado como texto ya no se filtra correctamente. Para un SaaS, active la **multi-tenancy** al crear la colección con `multi_tenancy_config=Configure.multi_tenancy(enabled=True)`: cada tenant recibe su propio shard, se consulta mediante `collection.with_tenant(\"cliente-a\")` y un tenant sin actividad puede desactivarse para liberar memoria. Por último, los **named vectors** permiten asociar varios vectores a un mismo objeto, por ejemplo uno para el título y otro para el contenido, cada uno con su modelo y su índice. Atención: el vectorizer y el tipo de índice de una colección no se pueden cambiar después; un cambio implica una nueva colección y una reimportación.",{"type":43,"title":119,"items":120},"Consultar Weaviate: las consultas útiles",[121,122,123,124,125,126],"**Búsqueda semántica** — `articles.query.near_text(query=\"rescisión de contrato\", limit=5)` requiere un vectorizer; si no, use `near_vector` con su propio embedding.","**Búsqueda híbrida** — `articles.query.hybrid(query=\"factura duplicada\", alpha=0.5)`: `alpha=1` da una búsqueda puramente vectorial y `alpha=0` una búsqueda puramente BM25.","**Solo palabras clave** — `articles.query.bm25(query=\"RGPD\")` usa el índice invertido, útil para referencias, códigos de producto y nombres propios.","**Filtros** — `filters=Filter.by_property(\"idioma\").equal(\"es\")`, importado desde `weaviate.classes.query`, se combina con todas las consultas anteriores.","**RAG integrado** — `articles.generate.near_text(query=..., limit=3, grouped_task=\"Responde a partir de estos extractos\")` devuelve los objetos y la respuesta del LLM configurado.","**GraphQL** — el endpoint `\u002Fv1\u002Fgraphql` sigue disponible para las herramientas que lo usan, con los operadores `nearText`, `hybrid` y `bm25`.",{"type":39,"title":128,"body":129},"Índice HNSW, flat o dynamic y dimensionamiento de memoria","Por defecto, cada colección usa un índice **HNSW**, rápido pero mantenido en memoria. La documentación de Weaviate da una regla práctica: prever aproximadamente el doble del tamaño bruto de los vectores. Un millón de vectores de 768 dimensiones en `float32` pesan unos 3 GB, es decir, alrededor de 6 GB de RAM para el índice. El índice **flat** no guarda nada en memoria y conviene a colecciones pequeñas, en particular a los tenants de un SaaS. El índice **dynamic** empieza como flat y pasa a HNSW por encima de un umbral de objetos; requiere `ASYNC_INDEXING=true`. Para reducir la huella, active una **cuantización**: PQ (product quantization) comprime mucho tras una fase de entrenamiento con sus datos, BQ (binary quantization) reduce cada dimensión a un bit y conviene sobre todo a vectores de alta dimensión, SQ (scalar quantization) guarda cada dimensión en un byte. Fije también `GOMEMLIMIT` en torno al 80 % de la RAM asignada al contenedor para que el recolector de basura de Go actúe antes de que el kernel mate el proceso.",{"type":39,"title":131,"body":132},"Copias de seguridad y actualizaciones","Añada `ENABLE_MODULES=backup-filesystem` y `BACKUP_FILESYSTEM_PATH=\u002Fvar\u002Flib\u002Fweaviate\u002Fbackups`, y lance una copia con `curl -X POST -H \"Authorization: Bearer $CLAVE\" -H \"Content-Type: application\u002Fjson\" -d '{\"id\":\"nightly-20261001\"}' localhost:8080\u002Fv1\u002Fbackups\u002Ffilesystem`. El estado se consulta en `GET \u002Fv1\u002Fbackups\u002Ffilesystem\u002Fnightly-20261001` y la restauración pasa por `POST \u002Fv1\u002Fbackups\u002Ffilesystem\u002Fnightly-20261001\u002Frestore`. Una copia en el mismo disco no le protege de perder el VPS: copie la carpeta a otro lugar o use `backup-s3` con `BACKUP_S3_BUCKET` hacia un almacenamiento de objetos compatible con S3. Para actualizar, lea las notas de migración de la versión de destino, haga una copia, cambie la etiqueta de la imagen y ejecute `docker compose pull && docker compose up -d`. Avance las versiones menores de una en una y nunca baje de versión sobre los mismos datos sin restaurar una copia.",{"type":134,"body":135},"tip","No deje el puerto gRPC `50051` abierto a Internet: las aplicaciones del mismo VPS lo usan en local y un equipo remoto pasa por un túnel `ssh -L 50051:localhost:50051 user@vps`. El despliegue del Marketplace vincula este puerto a `127.0.0.1` y arranca con el acceso anónimo abierto para facilitar la primera toma de contacto: active la autenticación por clave API antes de importar datos. Dé a su aplicación una clave de solo lectura y reserve la clave de administración para importaciones y copias de seguridad.",{"type":39,"title":137,"body":138},"Supervisar Weaviate","Active `PROMETHEUS_MONITORING_ENABLED=true`: Weaviate expone entonces sus métricas en el puerto `2112` (`\u002Fmetrics`), para recogerlas con Prometheus y mostrarlas en Grafana. Vigile primero la memoria del proceso, la duración de las importaciones por lotes y el número de objetos por colección. Los endpoints `\u002Fv1\u002F.well-known\u002Flive` y `\u002Fv1\u002F.well-known\u002Fready` sirven de sondas para un healthcheck de Docker o una herramienta como Uptime Kuma. A nivel de sistema, `docker stats` muestra el consumo instantáneo del contenedor y `df -h` la ocupación del volumen, que conviene seguir de cerca porque el paso a solo lectura lo provoca el disco y no la RAM. Por último, revise los registros con `docker compose logs -f weaviate`: los errores de módulo y los fallos de vectorización aparecen allí con el nombre del objeto afectado.",{"type":43,"title":140,"items":141},"Solución de problemas: los errores más frecuentes",[142,143,144,145,146,147],"**Respuesta 401 en todas las peticiones** — el acceso anónimo está desactivado y la petición no envía `Authorization: Bearer \u003Cclave>`, o la clave no figura en `AUTHENTICATION_APIKEY_ALLOWED_KEYS`.","**El cliente Python v4 no logra conectarse** — también comprueba gRPC: el puerto `50051` debe ser accesible desde el cliente, en local o por túnel SSH, y `grpc_port` debe coincidir.","**Módulo no encontrado al crear una colección** — el módulo no está cargado: revise `ENABLE_MODULES`, `ENABLE_API_BASED_MODULES` y la lista que devuelve `\u002Fv1\u002Fmeta`.","**Contenedor que se reinicia con el código 137** — el kernel lo ha matado por falta de memoria: defina `GOMEMLIMIT`, active una cuantización o amplíe la RAM del VPS.","**Importaciones rechazadas en solo lectura** — el disco ha superado `DISK_USE_READONLY_PERCENTAGE`: libere espacio o amplíe el volumen y vuelva a poner los shards en escritura.","**Errores de vectorización al importar** — falta la clave API del proveedor (`X-OpenAI-Api-Key` pasada en los `headers` del cliente) o el servidor Ollama no es accesible desde el contenedor de Weaviate.",{"type":57,"title":149,"headers":150,"rows":156},"Weaviate, Qdrant, pgvector o Milvus",[151,152,153,154,155],"Criterio","Weaviate","Qdrant","pgvector","Milvus",[157,163,169,175,181,187,193,198],[158,159,160,161,162],"Naturaleza","Base vectorial en Go","Base vectorial en Rust","Extensión de PostgreSQL","Base vectorial distribuida",[164,165,166,167,168],"Vectorización integrada","Sí, módulos text2vec-*","No, embeddings aportados por el cliente","No, embeddings aportados por la aplicación","Principalmente en el cliente",[170,171,172,173,174],"API","REST, GraphQL, gRPC","REST, gRPC","SQL","gRPC, REST, SDK",[176,177,178,179,180],"Híbrido y filtros","BM25 + vector nativo, filtros","Filtros sobre payload, vectores dispersos","WHERE SQL, texto completo de PostgreSQL a combinar","Filtros escalares, BM25 en versiones recientes",[182,183,184,185,186],"Huella en un VPS","Media, un solo contenedor","Baja, un solo contenedor","La de su PostgreSQL","Mayor, etcd y MinIO en modo standalone",[188,189,190,191,192],"Compresión","PQ, BQ, SQ","Escalar, binaria, de producto","halfvec, bit","Varios índices cuantizados (IVF_PQ, IVF_SQ8…)",[194,195,196,197,196],"Licencia","BSD-3-Clause","Apache 2.0","Licencia PostgreSQL",[199,200,201,202,203],"Caso de uso típico","RAG todo en uno con vectorización integrada","Búsqueda vectorial frugal","Vectores junto a datos relacionales","Volúmenes muy grandes, despliegue en clúster",{"type":39,"title":205,"body":206},"Cuándo Weaviate es la elección adecuada","Weaviate se justifica cuando quiere que la base se encargue de la vectorización, la búsqueda híbrida y la generación, en lugar de ensamblarlas usted mismo en el código de la aplicación. Encaja bien en un asistente documental, una búsqueda de catálogo multilingüe o un SaaS que aísla a cada cliente en su propio tenant. Si ya calcula sus embeddings y busca la menor huella posible, Qdrant es más frugal. Si sus datos ya están en PostgreSQL y el volumen sigue siendo modesto, pgvector le ahorra un componente más. Milvus apunta a volúmenes distribuidos muy grandes, a costa de una infraestructura más pesada. En un VPS, empiece con un solo nodo, un índice HNSW, una clave API y copias diarias, y añada cuantización y multi-tenancy cuando las mediciones lo pidan. Para ir más allá, consulte nuestras guías sobre Qdrant, Ollama y Open WebUI, que completan Weaviate en una pila RAG autoalojada.",{"type":208,"title":209,"body":210},"callout","Despliegue Weaviate en su VPS","Solicite un VPS de ServOrbit y despliegue Weaviate en unos pocos clics desde el Marketplace — Ubuntu 24.04, Docker preinstalado, imagen `semitechnologies\u002Fweaviate:1.27.2` lista para usar.","Despliegue su plataforma RAG Weaviate","El VPS Cloud de ServOrbit le da los recursos y el entorno Docker para alojar Weaviate y sus módulos, y construir un pipeline de búsqueda semántica completo, seguro y soberano.","Desplegar en VPS Cloud","\u002Fapplications\u002Finteligencia-artificial\u002Fweaviate",[216,236,257],{"id":217,"slug":218,"slugs":219,"title":223,"excerpt":224,"readTime":225,"views":226,"isPinned":19,"noindex":19,"publishedAt":227,"updatedAt":228,"category":229,"categories":230,"featuredImage":30,"bgImage":31,"posterImage":232,"relatedSolution":233},65,"alojar-qdrant-en-un-vps",{"fr":220,"en":221,"ar":222,"es":218},"heberger-qdrant-vps","hosting-qdrant-on-a-vps","استضافة-qdrant-على-خادم-vps","Alojar Qdrant en un VPS","Aloje Qdrant en su VPS: Docker Compose, clave API, TLS, ajuste HNSW, cuantificación, cliente Python v1, snapshots y monitoreo con Prometheus.",8,1,"2026-04-16T00:00:00+00:00","2026-10-20T23:18:05+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[231],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-qdrant-vps-poster.svg",{"categorySlug":234,"appSlug":235},"bases-de-datos","qdrant",{"id":226,"slug":237,"slugs":238,"title":242,"excerpt":243,"readTime":244,"views":226,"isPinned":19,"noindex":19,"publishedAt":245,"updatedAt":246,"category":247,"categories":252,"featuredImage":30,"bgImage":31,"posterImage":254,"relatedSolution":255},"como-alojar-open-webui-en-un-vps",{"fr":239,"en":240,"ar":241,"es":237},"heberger-open-webui","how-to-host-open-webui-on-a-vps","كيفية-استضافة-open-webui-على-خادم-vps","Cómo alojar Open WebUI en un VPS","Guía completa para desplegar Open WebUI en su propio VPS: conserve el control de sus datos, evite pagar API en la nube y acceda a sus LLM desde el navegador.",9,"2026-06-01T00:00:00+00:00","2026-11-09T20:55:18+00:00",{"id":226,"name":248,"slug":249,"color":250,"icon":251},"Inteligencia Artificial","intelligence-artificielle","bg-purple-500\u002F10 text-purple-400","ia",[253],{"id":226,"name":248,"slug":249,"color":250,"icon":251},"\u002Fblog\u002Fcovers\u002Fheberger-open-webui-poster.svg",{"categorySlug":34,"appSlug":256},"open-webui",{"id":258,"slug":259,"slugs":260,"title":264,"excerpt":265,"readTime":244,"views":266,"isPinned":19,"noindex":19,"publishedAt":267,"updatedAt":268,"category":269,"categories":270,"featuredImage":30,"bgImage":31,"posterImage":272,"relatedSolution":273},11,"como-alojar-ollama-en-un-vps",{"fr":261,"en":262,"ar":263,"es":259},"heberger-ollama-vps","how-to-host-ollama-on-a-vps","كيفية-استضافة-ollama-على-خادم-vps","Alojar Ollama en un VPS: guía operativa avanzada","Ollama avanzado en VPS: gestión de modelos, reverse proxy nginx, seguridad de la API, cuantización Q4_K_M\u002FQ8, CVE-2026-45672 en Open WebUI y acoplamiento seguro.",3,"2026-06-09T00:00:00+00:00","2026-11-04T16:30:24+00:00",{"id":226,"name":248,"slug":249,"color":250,"icon":251},[271],{"id":226,"name":248,"slug":249,"color":250,"icon":251},"\u002Fblog\u002Fcovers\u002Fheberger-ollama-vps-poster.svg",{"categorySlug":34,"appSlug":274},"ollama",true,1794270546201]