Ollama en Proxmox: LXC, VM y GPU passthrough
Proxmox VE es la navaja suiza del homelab: un hipervisor libre que consume pocos recursos y permite que contenedores ligeros y máquinas virtuales aisladas convivan en un solo servidor. Ejecutar Ollama en Proxmox permite compartir una GPU costosa entre varios servicios y mantener la inferencia al 100 % en casa. Esta guía cubre las dos vías —LXC con GPU compartida (sencilla) y VM con passthrough completo (limpia)— con la configuración de NVIDIA detallada y los problemas de IOMMU que te hacen perder tardes enteras.
#¿Por qué alojar Ollama en Proxmox?
En un homelab, rara vez se quiere un servidor dedicado únicamente a la IA. Proxmox permite colocar Ollama junto a tus otros servicios (NAS, domótica, proxy inverso) en la misma máquina, a la vez que aísla cada carga. El demonio de Ollama se ejecuta entonces en un contenedor o una VM, escucha en su puerto habitual y queda accesible desde toda tu infraestructura local: Open WebUI en otro contenedor, un pipeline n8n o tu estación de trabajo.
El reto central es la GPU. La inferencia de LLM sin aceleración por hardware es utilizable, pero lenta; en cuanto quieres ejecutar un modelo de 14B o de 32B a una velocidad aceptable, tienes que dar a Ollama acceso a una tarjeta NVIDIA. Ahora bien, virtualizar una GPU no es trivial: Proxmox ofrece dos enfoques radicalmente diferentes, con compromisos opuestos en cuanto a simplicidad y limpieza de la configuración.
#LXC vs VM: ¿qué opción elegir para Ollama?
Agentes que actúan en tu máquina: Cline agéntico, MCP, n8n + Ollama, automatizaciones locales.
- Espacio en línea de por vida
- PDF + archivos
- Actualizaciones de por vida
Es la primera decisión y condiciona todo lo demás. Un contenedor LXC comparte el núcleo del anfitrión: es ligero, arranca al instante y, sobre todo, puede acceder a la GPU del anfitrión sin quitársela. Una máquina virtual, en cambio, es una máquina completa y aislada; para darle una GPU hay que dedicársela por completo mediante passthrough VFIO: el anfitrión pierde entonces totalmente el acceso a esa tarjeta.
- LXC + GPU compartida
- La solución sencilla. El driver NVIDIA está instalado en el anfitrión y en el contenedor (mismas versiones), los dispositivos /dev/nvidia* se montan en el contenedor. La tarjeta gráfica sigue siendo accesible por el anfitrión y por otros contenedores simultáneamente. Ideal si quieres compartir una sola tarjeta.
- VM + passthrough completo
- La vía limpia. La tarjeta gráfica se desconecta del anfitrión y se asigna a la máquina virtual a través de VFIO/IOMMU. Aislamiento total, controladores gestionados dentro de la VM como en bare-metal, sin interferencias. Pero la tarjeta gráfica está monopolizada por esta VM mientras esté en ejecución.
- El criterio decisivo
- Una sola tarjeta para compartir entre varios servicios → LXC. Una tarjeta dedicada a la IA (o varios GPUs) y necesidad de aislamiento estricto → VM. El passthrough también es obligatorio si quieres ejecutar un sistema operativo diferente (Windows, un sistema con drivers específicos).
#Requisitos de hardware y VRAM
Dimensiona la GPU según los modelos que quieras usar. Con cuantización Q4_K_M (el mejor equilibrio entre calidad y memoria), esta es la VRAM necesaria según el tamaño del modelo. Deja siempre un margen para el contexto.
- 3B (≈2 GB)
- Una RTX 3060 12GB es más que suficiente. Para pruebas, funciona con comodidad incluso usando solo la CPU.
- 7B (≈5 GB)
- RTX 3060 12GB o RTX 4070 12GB. Punto de entrada ideal para un homelab.
- 14B (≈9 GB)
- RTX 4070 de 12 GB: poco margen; RTX 4080 de 16 GB: margen suficiente.
- 32B (≈19 GB)
- Se necesita una RTX 4090 de 24 GB, o dos tarjetas en tensor-split.
- 70B (≈40 GB)
- Multi-GPU (2× RTX 4090) o Mac M4 Pro/Max con memoria unificada de 48 GB+.
En cuanto a la virtualización, el passthrough en una VM exige requisitos previos estrictos que no se aplican a LXC: una CPU y una placa base que admitan VT-d (Intel) o AMD-Vi (AMD), la IOMMU activada en la BIOS e, idealmente, un grupo IOMMU independiente para la GPU. LXC no necesita nada de eso: solo que el controlador NVIDIA se instale en el sistema anfitrión.
#LXC con GPU compartido, la vía sencilla
El principio: instalar el controlador NVIDIA en el host Proxmox, crear un contenedor LXC no privilegiado, montar en él los dispositivos de la GPU y después instalar el mismo controlador (sin el módulo del núcleo) y Ollama en el contenedor. La versión del controlador debe ser idéntica en el host y en el contenedor; de lo contrario, el espacio de usuario del contenedor se niega a comunicarse con el módulo del núcleo del host.
- 01Instalar el controlador NVIDIA en el equipo anfitriónAgrega las cabeceras del kernel y luego instala el driver desde el repositorio de NVIDIA (o el .run oficial). Verifica con nvidia-smi que la tarjeta esté correctamente detectada en el anfitrión antes de continuar.
- 02Crear un contenedor LXC no privilegiadoUna plantilla de Debian 12 o Ubuntu 24.04 es suficiente. Activa el anidamiento (nesting=1) para permitir la ejecución de los runtimes de GPU. Anota el ID del contenedor (por ejemplo, 200).
- 03Identificar los dispositivos GPUEn el sistema anfitrión, enumera los nodos /dev/nvidia* y anota sus números mayor y menor. Estos son los nodos de dispositivo que vamos a exponer al contenedor.
- 04Montar los dispositivos en la configuración LXCEdita /etc/pve/lxc/200.conf para autorizar los cgroups de los dispositivos NVIDIA y montarlos mediante bind mounts. Reinicia el contenedor.
- 05Instalar el mismo driver en el contenedorEn el contenedor, instala el driver NVIDIA con la opción --no-kernel-module (el módulo proviene del anfitrión). nvidia-smi debe funcionar ahora dentro del contenedor.
- 06Instalar OllamaEl script oficial detecta automáticamente la tarjeta gráfica. Ollama inicia su daemon y carga los modelos en la tarjeta compartida.
#VM con passthrough completo, una solución limpia
Aquí, la tarjeta gráfica se retira del anfitrión y se asigna a una máquina virtual a través de VFIO. La máquina virtual ve una tarjeta real NVIDIA y se comporta como bare-metal: allí se instala el driver normalmente, sin manipulaciones de versión. A cambio, es necesario preparar el anfitrión para que libere la tarjeta al arrancar (binding VFIO) y que el kernel no cargue el driver nvidia en el anfitrión.
- 01Activar IOMMU al arrancarAgrega intel_iommu=on (o amd_iommu=on) y iommu=pt a los parámetros del kernel, en GRUB o systemd-boot según tu instalación de Proxmox.
- 02Aislar la GPU para VFIOIdentifica los IDs PCI de la tarjeta (GPU + su dispositivo de audio HDMI), decláralos en vfio-pci y añade los controladores nouveau/nvidia a la lista de bloqueo del host para que este no tome el control de esos dispositivos.
- 03Recrear el initramfs y reiniciarActualiza el initramfs para incluir los módulos VFIO y luego reinicia el host. Comprueba que vfio-pci se esté encargando de la GPU.
- 04Crear la VM y asignarle el GPUCrea una VM (tipo de máquina q35, BIOS OVMF/UEFI), añade el dispositivo PCI de la GPU en passthrough y marca PCI-Express. Instala el sistema operativo invitado (Ubuntu Server recomendado).
- 05Instalar driver + Ollama en la VMEn la VM, instala el driver NVIDIA clásico (el módulo del kernel está permitido aquí, es una máquina real), verifica con nvidia-smi, luego instala Ollama.
#IOMMU, controladores y problemas habituales
El passthrough rara vez falla por azar: casi siempre se debe a la IOMMU o a un grupo PCI mal aislado. Estos son los problemas más frecuentes y cómo diagnosticarlos.
- Grupos IOMMU no aislados
- Si la tarjeta gráfica comparte su grupo IOMMU con otros dispositivos (controlador USB, otra tarjeta), Proxmox rechaza el passthrough. Comprueba los grupos; como último recurso, el parche ACS override separa los grupos, a costa de un aislamiento menos estricto.
- El host acapara la GPU
- Si después de reiniciar lspci muestra la GPU bajo «nvidia» o «nouveau» y no bajo «vfio-pci», el bloqueo mediante la lista negra no se ha aplicado. Comprueba /etc/modprobe.d y vuelve a generar el initramfs.
- IOMMU desactivado en el BIOS
- dmesg no muestra ninguna línea DMAR/IOMMU: VT-d o AMD-Vi está desactivado en el firmware. Actívalo en la BIOS antes de nada.
- Versión del controlador LXC desincronizada
- Solo en LXC: desajuste de NVML tras una actualización del anfitrión. Alinea las versiones anfitrión/contenedor.
- GPU utilizada por la consola del host
- Si solo tienes una GPU y también sirve como salida de vídeo para Proxmox, es difícil configurar correctamente su passthrough. Lo ideal es reservar una iGPU o una segunda tarjeta para la salida de vídeo del host.
#Exponer Ollama en la red local
Por defecto, Ollama solo escucha en http://localhost:11434 — por lo tanto, únicamente desde dentro del contenedor o de la VM. Para llamarlo desde Open WebUI alojado en otro lugar o desde tu ordenador, debes indicarle que escuche en todas las interfaces mediante la variable OLLAMA_HOST.
#Solución de problemas
- nvidia-smi ausente en el contenedor
- Dispositivos no montados o permisos de cgroups mal configurados. Revisa las líneas lxc.mount.entry y lxc.cgroup2.devices.allow y, después, los números mayores reales de los dispositivos mediante ls -l /dev/nvidia*.
- Ollama funciona en CPU a pesar del GPU
- Revisa ollama ps: si el modelo está en «100% CPU», el entorno de ejecución de CUDA no ve la tarjeta. Comprueba nvidia-smi y reinicia el demonio de Ollama.
- La VM no arranca después de añadir el PCI
- A menudo se debe a un problema con OVMF/q35 o a un grupo IOMMU compartido. Revisa los registros de la VM y verifica que la tarjeta esté correctamente vinculada a vfio-pci en el host.
- Rendimiento degradado tras actualizar Proxmox
- Una actualización del núcleo del host puede romper el módulo NVIDIA (LXC) o el binding VFIO. Reinstala los headers y el driver, vuelve a generar el initramfs.
#Para ir más allá
Una vez que Ollama esté instalado en Proxmox, estas guías del sitio ayudan a completar el conjunto de componentes y a elegir el equipo adecuado:
- Instalar Ollama en Linux
- Detalla la instalación limpia del daemon, systemd y la configuración de GPU NVIDIA/AMD; resulta útil dentro del contenedor o de la VM.
- Desplegar un LLM en producción con Docker Compose
- Para integrar Open WebUI, Qdrant y un proxy inverso con tu Ollama en Proxmox en una pila completa.
- Elegir tu GPU para IA local
- Guía de compra de 2026 para elegir una tarjeta con la capacidad adecuada para usarla en LXC o mediante passthrough según los modelos previstos.
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.