Avanzado 15 minProxmox

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 Mohamed Meguedmi·Actualización 2026-08-27·Probado en Windows, macOS y Linux

#¿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.

i
Lo que presupone esta guía
Proxmox VE 8.x instalado y funcionando, una GPU NVIDIA (RTX 3060 12GB o mejor), y acceso root al nodo mediante SSH o consola web. Los comandos están diseñados para un anfitrión Debian 12 (base de Proxmox 8) y un invitado Debian/Ubuntu.

#LXC vs VM: ¿qué opción elegir para Ollama?

El kit Agentes Locales

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).
→
Recomendación por defecto
Para una primera configuración con una sola GPU en un homelab, empieza por LXC. Es más rápido de configurar, presenta menos dificultades y mantiene la tarjeta disponible para otros usos. Pasa a una VM cuando tengas una necesidad real de aislamiento o una GPU dedicada.

#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.

  1. 01
    Instalar el controlador NVIDIA en el equipo anfitrión
    Agrega 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.
  2. 02
    Crear un contenedor LXC no privilegiado
    Una 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).
  3. 03
    Identificar los dispositivos GPU
    En 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.
  4. 04
    Montar los dispositivos en la configuración LXC
    Edita /etc/pve/lxc/200.conf para autorizar los cgroups de los dispositivos NVIDIA y montarlos mediante bind mounts. Reinicia el contenedor.
  5. 05
    Instalar el mismo driver en el contenedor
    En 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.
  6. 06
    Instalar Ollama
    El script oficial detecta automáticamente la tarjeta gráfica. Ollama inicia su daemon y carga los modelos en la tarjeta compartida.
Host Proxmox
# 1. En-têtes noyau + driver NVIDIA sur l'hôte
apt update && apt install -y pve-headers-$(uname -r)
apt install -y nvidia-driver nvidia-smi

# Vérifier la détection
nvidia-smi

# 2. Repérer les device nodes (relever major:minor)
ls -l /dev/nvidia*
/etc/pve/lxc/200.conf
# Conteneur non privilégié + nesting
features: nesting=1

# Autoriser les cgroups des périphériques NVIDIA (major 195, 234, 508 selon setup)
lxc.cgroup2.devices.allow: c 195:* rwm
lxc.cgroup2.devices.allow: c 234:* rwm
lxc.cgroup2.devices.allow: c 509:* rwm

# Monter les device nodes dans le conteneur
lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
Dentro del contenedor LXC
# Même version de driver, SANS le module noyau (fourni par l'hôte)
./NVIDIA-Linux-x86_64-<version>.run --no-kernel-module

# nvidia-smi doit répondre à l'intérieur du conteneur
nvidia-smi

# Installer Ollama (détecte le GPU tout seul)
curl -fsSL https://ollama.com/install.sh | sh

# Test : le modèle doit se charger sur le GPU
ollama run qwen3.5:9b
!
La trampa de las versiones del controlador
Si nvidia-smi muestra « Failed to initialize NVML: Driver/library version mismatch » dentro del contenedor, es porque el driver del contenedor no coincide exactamente con el del anfitrión. Reinstala la versión idéntica o, tras una actualización del anfitrión, reinicia el contenedor para resincronizar.

#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.

  1. 01
    Activar IOMMU al arrancar
    Agrega 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.
  2. 02
    Aislar la GPU para VFIO
    Identifica 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.
  3. 03
    Recrear el initramfs y reiniciar
    Actualiza el initramfs para incluir los módulos VFIO y luego reinicia el host. Comprueba que vfio-pci se esté encargando de la GPU.
  4. 04
    Crear la VM y asignarle el GPU
    Crea 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).
  5. 05
    Instalar driver + Ollama en la VM
    En 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.
Equipo anfitrión — activar IOMMU (GRUB)
# Éditer /etc/default/grub, ligne GRUB_CMDLINE_LINUX_DEFAULT
# Intel :
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
# AMD :
# GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

update-grub
reboot

# Après reboot : vérifier que l'IOMMU est actif
dmesg | grep -e DMAR -e IOMMU
Host — binding VFIO
# Trouver les IDs PCI et les vendor:device IDs du GPU
lspci -nn | grep -i nvidia
# ex. 01:00.0 ... [10de:2504]  (GPU)
#     01:00.1 ... [10de:228e]  (audio HDMI de la carte)

# Déclarer les IDs pour vfio-pci
echo "options vfio-pci ids=10de:2504,10de:228e" > /etc/modprobe.d/vfio.conf

# Blacklister les drivers côté hôte
echo -e "blacklist nouveau\nblacklist nvidia\nblacklist nvidiafb" > /etc/modprobe.d/blacklist-nvidia.conf

# Charger vfio au boot puis régénérer l'initramfs
echo -e "vfio\nvfio_iommu_type1\nvfio_pci" >> /etc/modules
update-initramfs -u -k all
reboot

# Après reboot : le GPU doit utiliser vfio-pci
lspci -nnk -d 10de:2504
→
Añadir PCI en la interfaz Proxmox
En la VM → Hardware → Add → PCI Device, elige la GPU. Marca «All Functions» para incluir el audio HDMI y «PCI-Express» (requiere una VM con tipo de máquina q35 y BIOS OVMF). Con los controladores NVIDIA recientes, ya no es necesario eludir el famoso «Code 43» en un sistema Linux invitado.

#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.
Host — comprobar los grupos IOMMU
# Lister les groupes IOMMU et leurs périphériques
for g in /sys/kernel/iommu_groups/*; do
  echo "Groupe ${g##*/}:"
  for d in $g/devices/*; do
    echo -n "  "; lspci -nns "${d##*/}"
  done
done

# Le GPU (et son audio) doit idéalement être seul dans son groupe

#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.

Dentro del contenedor / en la máquina virtual
# Écouter sur toutes les interfaces (override du service systemd)
mkdir -p /etc/systemd/system/ollama.service.d
cat > /etc/systemd/system/ollama.service.d/override.conf <<'EOF'
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
EOF

systemctl daemon-reload
systemctl restart ollama

# Depuis un autre hôte du LAN, tester l'API
curl http://<ip-conteneur>:11434/api/tags
!
No exponer Ollama sin protección en internet
La API de Ollama no tiene autenticación. Si escucha en 0.0.0.0, mantenla estrictamente en tu red local o detrás de un proxy inverso con autenticación (Traefik, Caddy). Nunca redirijas el puerto 11434 directamente desde tu router.

#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.
Verificaciones rápidas
# Le GPU est-il vu par Ollama ?
ollama ps          # doit montrer un % GPU, pas 100% CPU

# État de la carte et VRAM utilisée
nvidia-smi

# Le daemon répond-il ?
curl http://localhost:11434/api/tags

#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.
¿Esta guía te ha ayudado?

¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.