[{"data":1,"prerenderedAt":159},["ShallowReactive",2],{"seo-verification":3,"blog-como-alojar-ollama-en-un-vps-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-como-alojar-ollama-en-un-vps-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":103,"ctaBody":104,"ctaButton":105,"ctaUrl":106,"relatedPosts":107},11,"como-alojar-ollama-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"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.",9,0,false,"2026-06-09T00:00:00+00:00","2026-09-07T11:26:10+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\u002Fheberger-ollama-vps-poster.svg",{"categorySlug":34,"appSlug":35},"inteligencia-artificial","ollama","Una vez que Ollama está en marcha en su VPS, empieza el verdadero trabajo: elegir los modelos adaptados a su RAM, proteger la API detrás de un reverse proxy, mantener el rendimiento a lo largo de las actualizaciones e integrar el motor de inferencia en su stack. Esta guía cubre el ángulo operativo — todo lo que viene después del primer `docker run` — incluida la vulnerabilidad CVE-2026-45672, que afecta a Open WebUI acoplado con Ollama, y las medidas para asegurar ese acoplamiento.",[38,42,53,56,84,87,91,94,97,100],{"type":39,"title":40,"body":41},"h2","Ollama en producción: lo que cambia tras el primer arranque","Desplegar Ollama lleva unos minutos. Mantenerlo funcionando de forma fiable a lo largo del tiempo exige bastante más atención. En producción, tres puntos concentran la mayor parte de los problemas: la gestión de los modelos (cuál cargar, cuál retirar para liberar disco), la superficie de ataque de la API (sin autenticación por defecto en el puerto 11434) y el consumo de memoria (un modelo mal dimensionado satura la RAM y hace que el núcleo mate el proceso). Esta guía parte de la base de que el contenedor `ollama` ya está en marcha y se centra en esos tres ejes, más la integración con las herramientas de su stack.",{"type":43,"title":44,"items":45},"ul","Lo que aporta en la práctica la gestión avanzada",[46,47,48,49,50,51,52],"**Pull selectivo** — descarga únicamente el modelo que necesita, sin llenar el disco de variantes inútiles.","**Eliminación limpia** — `ollama rm` libera espacio en disco y reduce el tiempo de carga de los modelos restantes.","**API REST documentada** — Ollama expone `\u002Fapi\u002Fgenerate`, `\u002Fapi\u002Fchat` y `\u002Fv1\u002Fchat\u002Fcompletions`; un reverse proxy por delante ofrece un endpoint HTTPS con autenticación.","**Concurrencia controlada** — `OLLAMA_MAX_LOADED_MODELS` impide que varios modelos se carguen a la vez y agoten la RAM.","**Variables de entorno persistentes** — `OLLAMA_KEEP_ALIVE`, `OLLAMA_NUM_THREADS` y `OLLAMA_CONTEXT_SIZE` se inyectan en el `docker run` o en un `compose.yml` versionado.","**Rotación de modelos automatizable** — una simple llamada `curl` a `\u002Fapi\u002Fpull` basta para automatizar la actualización de un modelo desde un pipeline CI.","**Exposición selectiva** — puede exponer la API únicamente a sus herramientas internas (Open WebUI, n8n, LangFlow) sin hacerla pública.",{"type":39,"title":54,"body":55},"Elegir y gestionar sus modelos: tamaño, RAM y cuantización","El tamaño de un modelo se expresa en miles de millones de parámetros (B) y determina la RAM necesaria. Un modelo 1B\u002F3B cabe en 2 o 3 GB y sirve para tareas sencillas (clasificación, resumen corto) en un VPS modesto. Un 7B\u002F8B pide de 5 a 6 GB en Q4: es la relación calidad\u002Frecursos más habitual. Un 13B necesita de 9 a 10 GB, y un 70B supera los 40 GB — reservado a VPS de mucha memoria o a configuraciones con GPU. Para cada tamaño, la cuantización ajusta el compromiso calidad\u002Fvelocidad: Q4_K_M ofrece un buen equilibrio entre calidad y velocidad en CPU, mientras que Q8 conserva más precisión a cambio de duplicar la RAM. Antes de hacer `pull` de un modelo, compruebe el espacio libre con `df -h` y la RAM disponible con `free -h`.",{"type":57,"title":58,"steps":59},"steps","Operaciones habituales: pull, eliminación y exposición de la API",[60,63,66,69,72,75,78,81],{"title":61,"body":62},"Listar los modelos disponibles","Ejecute `docker exec ollama ollama list` para ver los modelos ya descargados, su tamaño en disco y su fecha de incorporación.",{"title":64,"body":65},"Descargar un modelo nuevo","Lance `docker exec ollama ollama pull llama3.2:3b` para un modelo ligero, o `docker exec ollama ollama pull qwen2.5:7b-instruct-q4_K_M` para un 7B cuantizado. El sufijo `q4_K_M` indica la cuantización directamente en el tag.",{"title":67,"body":68},"Eliminar un modelo antiguo","Libere espacio con `docker exec ollama ollama rm llama3.1:8b`. Compruebe después con `docker exec ollama ollama list` que el modelo ya no aparece.",{"title":70,"body":71},"Probar la API REST en local","Llame al endpoint de chat: `curl http:\u002F\u002F127.0.0.1:11434\u002Fapi\u002Fchat -d '{\"model\":\"qwen2.5:7b-instruct-q4_K_M\",\"messages\":[{\"role\":\"user\",\"content\":\"Ping\"}],\"stream\":false}'`. La respuesta JSON contiene el campo `message.content`.",{"title":73,"body":74},"Configurar las variables de entorno","Relance el contenedor con las opciones deseadas: `docker run -d -v ollama:\u002Froot\u002F.ollama -p 127.0.0.1:11434:11434 -e OLLAMA_KEEP_ALIVE=-1 -e OLLAMA_MAX_LOADED_MODELS=1 -e OLLAMA_NUM_THREADS=4 --name ollama ollama\u002Follama`. Estos parámetros mantienen el modelo en memoria y limitan la carga de CPU.",{"title":76,"body":77},"Aplicar un rate-limit con nginx","En su bloque `server` de nginx, añada `limit_req_zone $binary_remote_addr zone=ollama:10m rate=10r\u002Fm;` en la sección `http`, y después `limit_req zone=ollama burst=5 nodelay;` en el `location`. Esto protege la API frente a las llamadas repetidas en ráfaga.",{"title":79,"body":80},"Actualizar el propio Ollama","Detenga y elimine el contenedor: `docker stop ollama && docker rm ollama`. Obtenga la nueva imagen: `docker pull ollama\u002Follama`. Relance con los mismos parámetros. Los modelos se almacenan en el volumen `ollama`, así que no se ven afectados.",{"title":82,"body":83},"Comprobar el estado del servicio","Consulte `curl http:\u002F\u002F127.0.0.1:11434\u002Fapi\u002Ftags` para obtener la lista de los modelos cargados. Un HTTP 200 con un JSON válido confirma que el servicio responde correctamente.",{"type":39,"title":85,"body":86},"Ollama detrás de un reverse proxy nginx con token","Por defecto, Ollama escucha en `127.0.0.1:11434` sin autenticación. Para exponerlo a sus herramientas (Open WebUI, n8n, un script remoto), coloque nginx por delante con un token Bearer. El bloque de configuración siguiente delega el acceso a un token secreto definido en la variable `$api_token`, comprueba la cabecera `Authorization` y hace de proxy hacia Ollama. El CORS está configurado para aceptar las peticiones de su interfaz sin exponer la API a todos los orígenes.\n\nEn `\u002Fetc\u002Fnginx\u002Fsites-available\u002Follama`:\n\n```nginx\nmap $http_authorization $api_token_valid {\n    default 0;\n    \"Bearer VOTRE_TOKEN_SECRET\" 1;\n}\nserver {\n    listen 443 ssl;\n    server_name api-ia.votre-domaine.com;\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fapi-ia.votre-domaine.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fapi-ia.votre-domaine.com\u002Fprivkey.pem;\n    location \u002F {\n        if ($api_token_valid = 0) { return 401; }\n        proxy_pass http:\u002F\u002F127.0.0.1:11434;\n        proxy_set_header Host $host;\n        add_header Access-Control-Allow-Origin \"https:\u002F\u002Fui.votre-domaine.com\";\n    }\n}\n```\n\nActive la configuración con `ln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Follama \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F` y después `nginx -t && systemctl reload nginx`.",{"type":88,"title":89,"body":90},"tip","Rendimiento en CPU: elegir la cuantización adecuada","En CPU, **Q4_K_M** es el punto de equilibrio recomendado: una pérdida de calidad marginal frente a Q8, a cambio de una velocidad de generación aproximadamente un 40 % superior y un consumo de memoria reducido a la mitad. Reserve **Q8** para los casos en que la precisión es crítica (código, lógica formal) y su VPS dispone de al menos 16 GB de RAM libre. Ajuste `OLLAMA_NUM_THREADS` al número de núcleos físicos (no lógicos) para evitar la contención: en un VPS de 4 vCPU, empiece por 3. El parámetro `OLLAMA_CONTEXT_SIZE` (por defecto: 2048 tokens) influye directamente en la RAM por petición; redúzcalo si gestiona muchas llamadas cortas en paralelo.",{"type":39,"title":92,"body":93},"Resolución de problemas: los casos más habituales","Cuatro situaciones se repiten con regularidad en producción.\n\n**Modelo demasiado lento.** ¿La generación no pasa de 2-3 tokens por segundo en CPU con un 7B? Compruebe que `OLLAMA_NUM_THREADS` no esté a 1 (valor por defecto si no se define en algunas imágenes). Compruebe también que solo hay un modelo cargado (`OLLAMA_MAX_LOADED_MODELS=1`): dos modelos simultáneos se disputan los núcleos y el ancho de banda de memoria.\n\n**VRAM insuficiente (GPU).** Si el registro de Docker muestra `CUDA out of memory` o `ROCm error`, el modelo no cabe en la VRAM. Pase al tag `q4_K_M` o reduzca `OLLAMA_CONTEXT_SIZE`. Ollama cambia a CPU si la VRAM es insuficiente, pero sin indicarlo con claridad: compare las velocidades de generación para detectarlo.\n\n**Conexión a la API rechazada.** ¿`curl: (7) Failed to connect` desde el exterior aunque el servicio esté escuchando? El cortafuegos bloquea el puerto 11434, o nginx no está arrancado. Compruébelo con `ss -tlnp | grep 11434` (debe mostrar `127.0.0.1`, no `0.0.0.0`) y `systemctl status nginx`.\n\n**Signal killed \u002F OOM.** El núcleo mata el proceso (OOM killer). La RAM del VPS es insuficiente para el modelo seleccionado. Vuelva a un tamaño inferior o active un swap de 4 a 8 GB como colchón: `fallocate -l 4G \u002Fswapfile && chmod 600 \u002Fswapfile && mkswap \u002Fswapfile && swapon \u002Fswapfile`. El swap ralentiza la generación, pero evita las paradas bruscas.",{"type":39,"title":95,"body":96},"Integración con otras herramientas del VPS","Ollama es un backend: adquiere todo su valor cuando otros servicios se conectan a él. Tres herramientas se integran de forma natural en el mismo VPS.\n\n**Open WebUI** ofrece una interfaz de conversación comparable a ChatGPT, conectada a la API local de Ollama. En su fichero de entorno, defina `OLLAMA_BASE_URL=http:\u002F\u002Follama:11434` (si los dos contenedores comparten una red Docker) o `OLLAMA_BASE_URL=http:\u002F\u002F127.0.0.1:11434` si Open WebUI se ejecuta en el mismo host. Open WebUI gestiona la selección del modelo, el historial de las conversaciones y la administración de los usuarios. **Atención**: el acoplamiento Ollama ↔ Open WebUI expone una superficie de ataque adicional que hay que vigilar — véase la sección CVE-2026-45672 más abajo.\n\n**LangFlow** es un constructor visual de pipelines LLM. Añada un nodo `Ollama` en su flow, indique `http:\u002F\u002F127.0.0.1:11434` como base URL y seleccione el modelo en la lista desplegable. LangFlow llama directamente al endpoint `\u002Fapi\u002Fgenerate` sin autenticación interna: colóquelo en la red privada del VPS, no expuesto públicamente.\n\n**n8n** permite disparar llamadas a Ollama desde un flujo de automatización. Utilice el nodo `HTTP Request` apuntando a `http:\u002F\u002F127.0.0.1:11434\u002Fapi\u002Fchat` con un cuerpo JSON que contenga `model` y `messages`. Desde n8n puede encadenar una llamada a Ollama con una etapa de recuperación de datos, de envío de correo o de webhook saliente sin escribir código.",{"type":39,"title":98,"body":99},"CVE-2026-45672: elusión de autorización en Open WebUI","Publicada el 21 de mayo de 2026 (GHSA-482j-2pq6-q5w4), esta vulnerabilidad afecta a todas las versiones de Open WebUI anteriores a la 0.8.12. Puntuación CVSS: **8.8 (alta)**.\n\n**Mecánica del ataque.** Un usuario autenticado puede ejecutar código Python arbitrario a través del endpoint `\u002Fapi\u002Fv1\u002Futils\u002Fcode\u002Fexecute`, incluso si el administrador ha desactivado la ejecución de código en los ajustes (`ENABLE_CODE_EXECUTION=false`). La protección se declara en la configuración, pero nunca se verifica del lado de la API: cualquier cuenta verificada en la instancia puede lanzar la ejecución.\n\n**Impacto.** El atacante accede al backend Jupyter subyacente y puede leer ficheros arbitrarios en el VPS, robar secretos (claves de API, token de Ollama, variables de entorno) o establecer persistencia. La confidencialidad, la integridad y la disponibilidad del servidor quedan comprometidas.\n\n**Por qué es crítico en un acoplamiento Ollama ↔ Open WebUI.** Ollama y Open WebUI se ejecutan a menudo en el mismo VPS, a veces en la misma red Docker, con secretos compartidos (clave de API de OpenAI de respaldo, token Bearer de la API de Ollama). Un acceso RCE en Open WebUI da por tanto un acceso directo a la API de Ollama y a los modelos en memoria, sin pasar por el reverse proxy.\n\n**Corrección.** Actualice Open WebUI a la versión **0.8.12 o superior**. Esta versión aplica la comprobación de `ENABLE_CODE_EXECUTION` en el propio endpoint de la API, allí donde siempre debió estar.\n\n**Comprobar su versión.** Desde el contenedor: `docker exec open-webui cat \u002Fapp\u002Fpackage.json | grep '\"version\"'`. Si la salida es inferior a `0.8.12`, la actualización es urgente: `docker pull ghcr.io\u002Fopen-webui\u002Fopen-webui:main && docker stop open-webui && docker rm open-webui` y después relance con los mismos parámetros de entorno.",{"type":88,"title":101,"body":102},"Endurecer el acoplamiento Ollama ↔ Open WebUI tras CVE-2026-45672","Cuatro medidas complementarias que aplicar después de actualizar a 0.8.12.\n\n**1. Aislar las redes Docker.** Cree una red bridge dedicada (`docker network create llm-private`) y coloque en ella los dos contenedores. Ollama solo será accesible desde Open WebUI por el nombre de servicio (`http:\u002F\u002Follama:11434`), sin pasar por la interfaz pública del VPS.\n\n**2. No exponer nunca el puerto 11434 al exterior.** Confirme que el binding sigue en `127.0.0.1:11434`. En la red Docker interna, Ollama responde en el puerto 11434 sin autenticación: es aceptable si la red es privada, pero se convierte en un vector en cuanto es accesible desde el exterior.\n\n**3. Desactivar la ejecución de código si no la necesita.** En las variables de entorno de Open WebUI, ponga `ENABLE_CODE_EXECUTION=false`. Tras la actualización a 0.8.12, este parámetro por fin se aplica en la API. Si su uso no incluye la ejecución de código, desactívela como medida de defensa en profundidad.\n\n**4. Restringir los registros.** En la interfaz de administración de Open WebUI (Ajustes → Administración), desactive los registros públicos (`ENABLE_SIGNUP=false`) si la instancia está expuesta a Internet. CVE-2026-45672 exige una cuenta verificada: reducir la superficie de registro reduce la superficie de ataque.","Su servidor LLM privado en un VPS Cloud ServOrbit","El VPS Cloud ServOrbit ofrece la RAM y la escalabilidad necesarias para servir sus modelos Ollama en producción. Aumente los recursos cuando pase a modelos más grandes, sin migración ni interrupción.","Desplegar Ollama en mi VPS","\u002Fmarketplace\u002Finteligencia-artificial\u002Follama",[108,128,144],{"id":109,"slug":110,"slugs":111,"title":115,"excerpt":116,"readTime":117,"views":18,"isPinned":19,"publishedAt":118,"updatedAt":21,"category":119,"categories":124,"featuredImage":30,"bgImage":31,"posterImage":126,"relatedSolution":127},102,"ollama-vs-localai-servidor-de-modelos-llm-autoalojado",{"fr":112,"en":113,"ar":114,"es":110},"ollama-vs-localai","ollama-vs-localai-which-self-hosted-llm-model-server","ollama-مقابل-localai-أي-خادم-نماذج-llm-مستضاف-ذاتيا","Ollama vs LocalAI: ¿qué servidor de modelos LLM autoalojado?","Ollama vs LocalAI en VPS: compatibilidad con la API de OpenAI, gestión de modelos, GPU\u002FCPU y flexibilidad comparados para alojar sus LLM.",4,"2026-03-10T00:00:00+00:00",{"id":120,"name":121,"slug":122,"color":123,"icon":122},5,"Comparativas","comparatif","bg-info\u002F10 text-info",[125],{"id":120,"name":121,"slug":122,"color":123,"icon":122},"\u002Fblog\u002Fcovers\u002Follama-vs-localai-poster.svg",{"categorySlug":34,"appSlug":35},{"id":17,"slug":129,"slugs":130,"title":134,"excerpt":135,"readTime":136,"views":18,"isPinned":19,"publishedAt":137,"updatedAt":21,"category":138,"categories":139,"featuredImage":30,"bgImage":31,"posterImage":141,"relatedSolution":142},"como-alojar-anythingllm-en-un-vps",{"fr":131,"en":132,"ar":133,"es":129},"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,"2026-06-11T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[140],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-anythingllm-vps-poster.svg",{"categorySlug":34,"appSlug":143},"anything-llm",{"id":145,"slug":146,"slugs":147,"title":151,"excerpt":152,"readTime":120,"views":23,"isPinned":19,"publishedAt":153,"updatedAt":154,"category":155,"categories":156,"featuredImage":30,"bgImage":31,"posterImage":158,"relatedSolution":30},214,"desplegar-servidor-mcp-en-un-vps",{"fr":148,"en":149,"ar":150,"es":146},"mcp-serveur-ia-auto-heberge-vps","how-to-deploy-an-mcp-server-on-a-vps","كيفية-نشر-خادم-mcp-على-vps","Desplegar un servidor MCP en un VPS","El protocolo MCP 2026-07-28 se ha convertido en el estándar universal de los agentes de IA. Así se aloja su propio servidor MCP en un VPS, paso a paso.","2026-08-03T00:00:00+00:00","2026-09-07T19:17:13+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[157],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fmcp-serveur-ia-auto-heberge-vps-poster.svg",1789665010351]