
Publicado: 2026-05-05
Etiquetas: IA, Linux, Proyectos, Software
Buenos días, tardes o noches:
En este artículo voy a comentar cómo me he montado un sistema de IA generativa "privada". Privada en el sentido de que no sale nada de información de mi red local.
La IA generativa tiene problemas de todo tipo. Ya he hablado de ellos en diversos artículos de este blog así que no me voy a repetir. Aún así me parece una tecnología muy interesante y quiero explorarla más. De entre todas sus formas, la única que me parece aceptable de usar son los modelos locales. Creo que la gente está "diciendo" cosas demasiado privadas a estos bots y dejar eso en manos de un puñado de grandes empresas es algo muy peligroso. Por eso creo que, en caso de querer usar IA, siempre debería ser una que se ejecute en nuestro propio dispositivo (ordenador o móvil) y que no envíe nada a ningún servidor externo.
Ahora voy a explicar paso a paso cómo he montado mi sistema. Los 3 programas que uso funcionan exactamente igual en los sistemas operativos típicos aunque yo los he instalado en Ubuntu. Quiero recordar que los modelos que se ejecutan localmente son mucho más pequeños que los que te ofrecen OpenAI, Google y similares por lo que son menos inteligentes. No se sabe con certeza el tamaño de los últimos modelos que han aparecido pero, si las estimaciones son ciertas, el modelo más reciente de ChatGPT es unas 500 veces más grande que los que yo puedo ejecutar en mis máquinas. Si los grandes ya se inventan cosas y cometen cagadas, imagínate los pequeños.
Para bajar y ejecutar los modelos yo utilizo Ollama. Este programa para la terminal crea la infrastructura básica para ejecutar LLMs en nuestro ordenador de manera sencilla. Al instalarlo, inicia un servidor (en Linux se controla con systemd) que es el que se encarga que gestionar los modelos y procesar las llamadas que hagamos. En su web aparece el comando que hay que ejecutar para instalarlo. No lo pongo aquí por si en un futuro cambia y además es diferente para cada sistema.
Con el comando ollama podemos interactuar con el servidor:
ollama pull $modelo permite bajarse modelos. Por ejemplo yo usé ollama pull qwen3.5:9b.ollama run $modelo abre una sesión de chat con un modelo. A continuación muestro un ejemplo de conversación. El modelo que uso tiene fase de razonamiento así que primero tiene una especie de diálogo consigo mismo (en inglés en este caso) y luego ya escribe la respuesta para mí en castellano.$ ollama run qwen3.5:9b
>>> ¿Qué es un kabosu?
Thinking...
Okay, the user is asking "¿Qué es un kabosu?" in Spanish. First, I need to recall what "kabosu" refers to. I think it's related
to Japanese cuisine, specifically a citrus fruit. Wait, kabosu is a type of yuzu, right? It's used in dishes like citrus salad
or sauces. But I need to make sure. Let me check my knowledge.
Yes, kabosu is a specific variety of citrus fruit from Japan, part of the yuzu family. It's smaller than a yuzu, with a thinner
skin and less sweet, more acidic taste. Commonly used in Okinawan cuisine. Maybe in dishes like kabosu salad or as a condiment.
Also, the fruit can be used in cooking, drinks, and desserts. But I should confirm the details to give an accurate answer.
Wait, kabosu is indeed a citrus fruit, sometimes called "Sakishima-yuzu" or "Oku kabosu". It's known for its strong citrus
flavor, used in Okinawa. So the answer should explain it's a citrus fruit from Japan, used in cooking, its characteristics, and
maybe how it's used. Also, mention that it's different from regular yuzu. Need to present this clearly in Spanish.
...done thinking.
Un **kabosu** es una variedad de cítrico japonés, parte de la familia del *yuzu*, característico de la región de Okinawa. Se
destaca por su piel fina, aroma intenso y un sabor ácido y cítrico pronunciado. Aunque es más pequeño que un *yuzu* tradicional,
se usa en la cocina japonesa, especialmente en platos de Okinawa, como en ensaladas, salsas o como aditivo para realzar el sabor
de la comida. También se consume en infusiones, licores y dulces. Es importante diferenciarlo de otros cítricos como la naranja
o la pomelo, ya que tiene un perfil único que no suele encontrarse en otras frutas cítricas comerciales.
Si lo único que queremos es preguntarle alguna cosa suelta a un LLM, con Ollama tenemos suficiente. El problema es que no guarda las conversaciones y a veces genera contenido en Markdown que la terminal no puede mostrar por lo que es mejor tener una interfaz algo más amigable. Aquí es dónde entra en juego Open WebUI pero primero voy a hablar un poco de los modelos.
Los modelos soportados por Ollama se pueden ver listados en esta web. Suelen estar etiquetados con su tamaño en miles de millones de parámetros (billions en inglés): 3b, 8b, 30b, etc... En general, un modelo con una "b" más grande será más potente así que lo mejor es usar el más grande que permita nuestro ordenador.
Mi Slimbook Zero con 16GB de RAM ejecuta los modelos por software al no tener una GPU decente así que mi límite es la RAM. Por lo que he visto, un modelo de Xb ocupa un poco menos de X GB de RAM así que lo máximo que puedo usar es 14b para así dejar algo de memoria al resto de servicios.
Durante mucho tiempo usaba deepseek-r1:14b y gemma3:12b pero últimamente he cambiado a qwen3.5:9b y gemma4:e4b. No he evaluado si son mejores o peores pero son los que conseguí hacer funcionar con OpenCode que explicaré más tarde. Gemma4 se publicó hace un mes así que debería ser mejor que lo anterior. También tengo un modelo más pequeño de gemma3:latest (que es 4b) para algunas tareas rápidas.
Además, si vas a usar OpenCode para programar, es posible que tengas que aumentar la ventana de contexto. Como mi ordenador es tan arcaico, Ollama por defecto se autoconfigura con un contexto de 4K tokens. Con eso no es capaz ni de procesar el prompt de OpenCode sin olvidarse de lo que ha leído.
Para aumentar la longitud del contexto en Linux hay que editar (o crear) el fichero /etc/systemd/system/ollama.service.d/override.conf. Esta es mi configuración:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_CONTEXT_LENGTH=128000"
La Línea de OLLAMA_HOST solo es necesaria si tienes Ollama en su propio servidor como es mi caso. Si lo instalas todo en la misma máquina no es necesaria.
Open WebUI no tiene un nombre excesivamente bueno en mi opinión pero es muy útil para chatear con una IA local. Es básicamente una interfaz web prácticamente igual que la de ChatGPT que permite tener diferentes usuarios, cada uno con sus conversaciones, y en general ofrece una experiencia algo mejor que Ollama a pelo. En su web explican como instalarlo en Docker pero como es un simple programa en Python yo prefiero instalarlo con pip:
pip install open-webui
open-webui serve
El servidor se iniciará en el puerto 3030 y podremos acceder con Firefox u otro navegador. Si tenemos Ollama y Open WebUI instalados en la misma máquina, no suele hacer falta configurar nada para que funcione. Automáticamente obtendrá la lista de modelos que tenemos instalados con Ollama y nos dejará elegir el que queremos usar en cada conversación.
En mi caso tengo Ollama en otro ordenador así que tengo que ir a Admin Panel > Pestaña Settings > Connections > Ollama API y allí poner la IP del servidor en la que está instalado Ollama.

Finalmente un "truco" que no es necesario pero sí muy recomendable: cuando terminas una conversación. Open WebUI hace algunas llamadas extra a Ollama para generar un título de 4 palabras para el chat y para sugerencias para seguir preguntando a la IA. Estas llamadas requieren procesar de nuevo toda la conversación así que pueden ser muy lentas. Para estos casos recomiendo configurar Open WebUI para que use el modelo más pequeño que tengamos instalado. Hay que ir a Admin Panel > Pestaña Settings > Interface > Task Model > Local Task Model y ahí elegir el más modesto de la lista. En mi caso gemma3:latest.

Con Ollama y Open WebUI ya tenemos una experiencia similar a ChatGPT (aunque obviamente peor). ¿Qué pasa si queremos algo tipo Claude Code? Pues aquí llega OpenCode.
OpenCode es un agente IA para programar. Funciona de forma similar a Claude Code. Como casi todo todo en el mundo de los LLMs, empieza con un cuadro de chat en el que escribes la tarea a realizar. La diferencia es que estos agentes tienen capacidad de leer ficheros del disco duro, editarlos, ejecutar comandos... Y gracias a eso son capaces de programar cosas. Si le pides a un LLM para chat que te escriba un programa en Python para hacer alguna cosa es probable que el resultado no funcione pero un agente IA tipo OpenCode escribe el programa y luego lo intenta ejecutar. Si no funciona mirará cual es el error de Python y lo intentará arreglar. Seguramente tarde varias iteraciones pero al final es más probable que obtenga algo más o menos funcional. Obviamente esto es más peligroso, en Open WebUI la IA te puede decir algo mal pero en OpenCode directamente puede ejecutar comandos dañinos para tu sistems. Estas IAs hay que usarlos con precaución. Yo para no "ensuciar" mi sistema con tantas dependencias de desarrollo, suelo programar dentro de una máquina virtual así que tengo a OpenCode ahí aislado.
OpenCode se instala con un comando como los programas anteriores. Aun vez instalado, si tienes Ollama en el mismo ordenador solo hay que ejecutar ollama launch opencode para empezar. Si, como es mi caso, están en máquinas diferences hay que configurar la conexión. Esta es mi configuración:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "http://$IP:11434/v1",
},
"models": {
"gemma4:e4b": {
"name": "gemma4:e4b",
"tool_call": true
},
"qwen3.5:9b": {
"name": "qwen3.5:9b",
"tool_call": true
}
}
}
}
}
Puedes abrir OpenCode en el directorio donde tengas tu código y decirle que cambie cosas, busque errores, escriba tests o lo que se te ocurra. El único problema es que, al menos en mi caso, es extremadamente lento. Lo he abierto en un directorio vacío y le he dicho que me escribiera un "Hola mundo" en Python. Ha tardado casi una hora. Luego le he dicho que creara un proyecto vacío con uv y añadiera un script que mostre los ficheros de un directorio como ls. Ha tardado 3 horas. Si te has acostumbrado a usar Claude Code que puede escribir cientos de líneas por segundo esto te parecerá insufrible. O a lo mejor tienes un ordenador mejor que el mío y Ollama es capaz de ejecutar modelos lo bastante rápido.

Para usar OpenCode con Ollama hay que tener mucha paciencia pero tienes la seguridad de que tu trabajo no está siendo enviado a una multinacional extranjera ni te estás dejando una pasta en tokens.
Estos 3 programas son los que tengo instalados para probar cosas de IA. Por curiosidad más que nada. Va tan lento todo que apenas lo uso. Acabo de mirar mi OpenWebUI para hacer unas capturas de pantalla y le he preguntado 7 cosas en los últimos 30 días.