Instalé IA en un servidor local con una gráfica de 11 años... ¿Funcionará? Mira el resultado

Ollama | IA Local | GPU Legacy | Docker

Instalé IA en un servidor local con una gráfica de 11 años... ¿Funcionará? Mira el resultado

Ollama + Open WebUI sobre hardware real: Intel i5-6600K, GTX 960 con 4 GB de VRAM y Ubuntu 24.04. Un experimento práctico con resultados inesperadamente buenos.

¿De qué va este experimento?

En el homelab hay una máquina que lleva años encendida haciendo de servidor de ficheros y proxy inverso. Tiene un Intel Core i5-6600K y una NVIDIA GeForce GTX 960 de 4 GB de VRAM lanzada en 2015. La pregunta era inevitable: ¿puede esa GPU correr modelos de lenguaje locales de forma útil?

Ollama es un motor de inferencia local que permite descargar y ejecutar LLMs con un solo comando. Combinado con Open WebUI —una interfaz web tipo ChatGPT— ofrece un asistente de IA privado, sin suscripciones y sin que tus datos salgan del servidor.

Lo que incluye este post: Diagnóstico del hardware, instalación de drivers NVIDIA 570-server, configuración de Ollama, despliegue de Open WebUI con Docker, pruebas de inferencia reales y los modelos que mejor funcionan con 4 GB de VRAM.

IA 100% local: Tus consultas no salen del servidor. Sin coste por token. Sin cuenta en ningún servicio cloud. Control total de los datos.

Características principales

Instalación en un comando

Script oficial que detecta la GPU, instala dependencias y crea el servicio systemd automáticamente.

Soporte GPU / CPU

Usa VRAM si hay GPU compatible. Si el modelo no cabe, hace offloading parcial a RAM del sistema.

Biblioteca de modelos

Llama, Gemma, Qwen, Phi, Mistral, DeepSeek y decenas más. Un solo comando para descargar.

API compatible OpenAI

Cualquier herramienta que use la API de OpenAI puede apuntar al servidor local sin cambios.

Open WebUI

Interfaz web completa con historial, multiusuario, RAG, generación de imágenes y más.

100% offline

Una vez descargado el modelo, funciona sin conexión a internet. Ideal para entornos privados.

Multi-modelo

Instala y alterna entre varios modelos. Cada uno se carga y descarga de VRAM según se necesite.

Open source

Ollama y Open WebUI son proyectos open source activos con comunidad y actualizaciones frecuentes.

Especificaciones del servidor de prueba

Hardware real extraído con neofetch. Sin modificaciones, sin overclocking:

ComponenteDetalle
OSUbuntu 24.04.4 LTS x86_64
Host / PlacaMS-7971 2.0 (MSI)
Kernel6.8.0-110-generic
CPUIntel Core i5-6600K (4 núcleos) @ 3.900 GHz
RAM24 GB (23982 MiB)
GPUNVIDIA GeForce GTX 960 — 4 GB VRAM (arquitectura Maxwell)
Driver NVIDIA570-server (requerido por Ollama)
Shellbash 5.2.21
24 GB de RAM del sistema: Aunque la VRAM es limitada, la RAM permite hacer offloading de capas extra cuando el modelo no cabe entero en GPU. La velocidad baja, pero el modelo sigue funcionando.

Diagnóstico previo del sistema

Antes de instalar nada, conviene identificar bien el hardware disponible:

Actualización e instalación de utilidades

# Actualizar sistema completo sudo apt update && sudo apt upgrade -y # Instalar herramientas de diagnóstico sudo apt install neofetch mesa-utils nvtop -y # Información general del sistema neofetch

CPU, RAM y red

# Monitor interactivo de procesos htop # Memoria disponible free -h # Información detallada de CPU lscpu cat /proc/cpuinfo | grep "model name" | uniq # Interfaces de red activas ip addr

Identificar la GPU

# Listar tarjetas gráficas conectadas lspci | grep -i vga lspci | grep -i nvidia # Información OpenGL y memoria de GPU glxinfo | egrep -i 'device|memory'

Instalación de drivers NVIDIA 570-server

Ollama requiere drivers NVIDIA con soporte CUDA 12. La rama 570-server es la estable recomendada para Ubuntu Server y es compatible con la GTX 960 (Maxwell).

Paso 1: Limpiar drivers anteriores

# Purgar cualquier driver NVIDIA previo sudo apt purge "*nvidia*" sudo apt autoremove sudo apt clean

Paso 2: Ver drivers recomendados por Ubuntu

ubuntu-drivers devices

Paso 3: Instalar driver 570-server

# Instalar driver, utils y módulo DKMS sudo apt install nvidia-driver-570-server nvidia-utils-570-server nvidia-dkms-570-server # Reiniciar para cargar el nuevo módulo del kernel sudo reboot now # Tras el reinicio: verificar que el driver funciona nvidia-smi
Importante: Si nvidia-smi falla tras el reinicio, comprobar que el driver nouveau está bloqueado. Ubuntu lo gestiona automáticamente, pero en algunos casos hay que añadirlo manualmente a la lista de módulos bloqueados (/etc/modprobe.d/blacklist.conf).

Instalación y configuración de Ollama

Paso 1: Instalar Ollama

# Script oficial: detecta GPU automáticamente curl -fsSL https://ollama.com/install.sh | sh # Verificar que el servicio está activo systemctl status ollama

Paso 2: Configurar el servicio (variables de entorno y red)

Para exponer Ollama a la red local, editar el archivo de servicio systemd:

# Copia de seguridad antes de editar sudo cp /etc/systemd/system/ollama.service /etc/systemd/system/ollama.service.old # Editar el archivo de servicio sudo nano /etc/systemd/system/ollama.service # Añadir en la sección [Service]: # Environment="OLLAMA_HOST=0.0.0.0:11434" # Recargar y reiniciar sudo systemctl daemon-reload sudo systemctl restart ollama

Paso 3: Verificar detección de GPU en los logs

# Comprobar que Ollama detectó CUDA y la GTX 960 journalctl -u ollama --no-pager | grep -i -E "cuda|gpu" # Monitor de logs en tiempo real journalctl -u ollama -f
Salida esperada: Los logs deben mostrar la GTX 960 listada con soporte CUDA. Si aparece solo CPU, revisar que nvidia-smi funciona y que el servicio se reinició tras instalar los drivers.

Open WebUI con Docker Compose

Interfaz web para chatear con los modelos desde cualquier dispositivo de la red local:

docker-compose.yml

version: '3.8' services: open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui restart: unless-stopped ports: - "3000:8080" volumes: - open-webui:/app/backend/data environment: - OLLAMA_BASE_URL=http://host.docker.internal:11434 extra_hosts: - "host.docker.internal:host-gateway" volumes: open-webui:

Iniciar

docker compose up -d # Acceder desde el navegador: # http://<IP_SERVIDOR>:3000

Modelos probados: ¿cuáles caben en 4 GB de VRAM?

El criterio es claro: modelos cuantizados en Q4 que quepan por debajo de los 4 GB. Si el modelo no cabe entero, Ollama hace offloading parcial a RAM del sistema y la velocidad cae drásticamente.

Descargar, ejecutar y gestionar modelos

# Modelos recomendados para 4 GB de VRAM ollama pull qwen2.5-coder:latest ollama pull qwen2.5:3b ollama pull gemma3:4b ollama pull nemotron-mini:4b ollama pull phi3:latest # Ejecutar un modelo en la terminal ollama run llama3.2 ollama run qwen2.5-coder:3b # Listar modelos instalados / en ejecución ollama ls ollama ps watch -n 0.5 ollama ps # Eliminar modelos demasiado grandes para esta GPU ollama rm gemma3:27b gemma4:31b phi3:14b

Resumen de modelos probados

  • qwen2.5:3b — Alibaba. Excelente en español y código. ~2.0 GB Q4. El más equilibrado de la prueba. GPU completa
  • qwen2.5-coder — Especializado en programación. Muy bueno para autocompletar y explicar código. GPU completa
  • phi3:latest — Microsoft. Eficiente y rápido. Buena comprensión general. ~2.2 GB Q4. GPU completa
  • nemotron-mini:4b — NVIDIA. Optimizado para inferencia rápida en esta arquitectura. GPU completa
  • gemma3:4b — Google DeepMind. ~3.3 GB Q4. Justo al límite de los 4 GB. Al límite
  • gemma3:27b / phi3:14b — Demasiado grandes. Offloading masivo a RAM, velocidad inutilizable. Eliminar
Regla práctica: Modelos hasta 3B en Q4 entran cómodamente. Con 4B hay que comprobar el tamaño exacto. Por encima de 4.5 GB, el offloading está garantizado y la experiencia se degrada mucho.

Prueba de inferencia vía API

Ollama expone una API REST en localhost:11434. Se puede medir la velocidad directamente con curl, ajustando el contexto y la temperatura para evaluar la fase de prefill en GPU:

curl http://localhost:11434/api/generate -d '{ "model": "qwen2.5:3b", "prompt": "¿Por qué la fase de prefill en la inferencia es más rápida en GPU que en CPU?", "options": { "num_ctx": 16384, "temperature": 0.0 }, "stream": false }' | json_pp

El campo eval_duration de la respuesta muestra el tiempo de generación en nanosegundos. Con stream: false se espera la respuesta completa antes de mostrarla, lo que facilita calcular tokens por segundo.

Resultado en GTX 960: Con qwen2.5:3b cargado en VRAM, la velocidad ronda los 15–22 tokens/segundo. Perfectamente usable para conversación e interacción cotidiana.

Monitoreo de GPU y mantenimiento

Monitorizar la GPU en tiempo real

# Estado de la GPU (uso, VRAM, temperatura) nvidia-smi # Monitor continuo cada 1 segundo watch -n 1 nvidia-smi # Monitor gráfico interactivo (requiere nvtop) nvtop # Ver qué modelo está cargado y cuánta VRAM usa watch -n 0.5 ollama ps

Actualizar Open WebUI

docker compose pull docker compose up -d

Ver logs de Open WebUI

docker compose logs -f open-webui

Apagar y reiniciar el servidor

sudo reboot now sudo shutdown now

HTTPS con Caddy (acceso remoto seguro)

Para acceder a Open WebUI desde fuera de la red local con HTTPS automático vía Let's Encrypt:

Caddyfile

ia.tudominio.com { reverse_proxy localhost:3000 }

Caddy gestiona el certificado TLS automáticamente. Solo hay que abrir el puerto 443 en el router y apuntar el DNS al servidor.

Casos de uso

  • Asistente personal privado: Respuestas, redacción, resumen de documentos. Sin que nada salga del servidor.
  • Generación y revisión de código: Modelos como qwen2.5-coder son sólidos para autocompletar y explicar código.
  • Automatizaciones locales: Conectar Ollama a n8n, Home Assistant o cualquier herramienta con soporte API OpenAI.
  • Entornos sin internet: El modelo funciona completamente offline una vez descargado.
  • Reutilizar hardware antiguo: Cualquier GPU Maxwell o Pascal con ≥ 4 GB de VRAM puede servir como nodo de inferencia.

Comparativa con alternativas

vs API cloud (OpenAI, Claude, Gemini)

Ollama local gana: Privacidad total, coste cero por consulta, funciona offline, sin dependencias externas. Cloud gana: Modelos mucho más potentes, sin límite de VRAM, sin mantenimiento de hardware.

vs GTX 960 vs GPU moderna (RTX 3060+)

GTX 960: Coste cero si ya la tienes. Suficiente para modelos de 3–4B. RTX 3060 (12 GB): Permite modelos de 7B–13B con velocidad real y calidad de respuesta notablemente superior.

vs LM Studio / Jan

Ollama gana: Headless, ideal para servidor sin interfaz gráfica, API REST nativa, mejor integración con Docker. LM Studio gana: Interfaz de escritorio más visual, más fácil para usuarios no técnicos.

Veredicto: Para uso personal cotidiano en hardware antiguo, una GTX 960 con modelos de 3–4B es completamente funcional. El coste de entrada es cero si ya tienes el hardware y el aprendizaje es considerable.

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.