Avanzato 15 minProxmox

Ollama su Proxmox: LXC, VM e GPU passthrough

Proxmox VE è il coltellino svizzero dell'homelab: un hypervisor libero, parsimonioso nell'uso delle risorse, capace di far coesistere container leggeri e macchine virtuali isolate su un unico server. Eseguire Ollama su Proxmox significa condividere una GPU costosa tra più servizi mantenendo l'inferenza al 100% a casa propria. Questa guida illustra le due opzioni — LXC con GPU condivisa (semplice) e VM con passthrough completo (una soluzione pulita) — con la configurazione NVIDIA dettagliata e le insidie dell'IOMMU che fanno perdere intere serate.

Di Mohamed Meguedmi·Agg. 2026-08-27·Testato su Windows, macOS e Linux

#Perché ospitare Ollama su Proxmox

In un homelab, raramente si vuole un server dedicato esclusivamente all'IA. Proxmox permette di affiancare Ollama agli altri tuoi servizi (NAS, domotica, reverse proxy) sulla stessa macchina, mantenendo isolato ogni carico. Il demone Ollama gira quindi in un container o in una VM, ascolta sulla sua porta abituale e diventa accessibile da tutta la tua infrastruttura locale — da Open WebUI in un altro container, da una pipeline n8n o dalla tua postazione di lavoro.

Il punto centrale è la GPU. L'inferenza degli LLM senza accelerazione hardware è utilizzabile ma lenta; non appena si vuole eseguire un modello da 14B o 32B a una velocità accettabile, bisogna dare a Ollama accesso a una scheda NVIDIA. Virtualizzare una GPU, però, non è banale: Proxmox propone due approcci radicalmente diversi, con compromessi opposti in termini di semplicità e pulizia della configurazione.

i
I presupposti di questa guida
Proxmox VE 8.x installato e funzionante, una GPU NVIDIA (RTX 3060 12GB o superiore) e accesso root al nodo tramite SSH o console web. I comandi sono indicati per un host Debian 12 (base di Proxmox 8) e un sistema guest Debian/Ubuntu.

#LXC vs VM: quale scelta per Ollama

Il kit Agenti Locali

Agenti che agiscono sulla tua macchina: Cline agentico, MCP, n8n + Ollama, automazioni locali.

  • Spazio online a vita
  • PDF + file
  • Aggiornamenti a vita

È la prima decisione e condiziona tutto il resto. Un container LXC condivide il kernel dell'host: è leggero, si avvia istantaneamente e, soprattutto, può accedere alla GPU dell'host senza sottrargliela. Una VM, invece, è una macchina completa e isolata; per assegnarle una GPU bisogna dedicarle interamente quella scheda tramite passthrough VFIO — l'host perde allora completamente l'accesso a quella scheda.

LXC + GPU condiviso
La soluzione semplice. Il driver NVIDIA è installato sull'host e nel container (stesse versioni), i dispositivi /dev/nvidia* sono montati all'interno del container. La GPU rimane utilizzabile dall'host e da altri container contemporaneamente. Ideale se vuoi condividere una sola scheda.
VM + pass-through completo
La soluzione pulita. La GPU viene scollegata dall'host e assegnata alla VM tramite VFIO/IOMMU. Isolamento totale, driver gestiti nella VM come su bare metal, nessuna interferenza. Ma la GPU è riservata esclusivamente a questa VM finché la VM è in esecuzione.
Il criterio decisivo
Una sola scheda da condividere tra diversi servizi → LXC. Una scheda dedicata all'IA (o più GPU) e necessità di isolamento rigoroso → VM. Il passthrough è obbligatorio anche se vuoi eseguire un sistema operativo diverso (Windows, un sistema operativo con driver specifici).
→
Consiglio predefinito
Per una prima configurazione con una sola GPU in un homelab, inizia con LXC. È più rapido da configurare, presenta meno insidie e ti permette di mantenere la scheda disponibile per altri usi. Passa alla VM quando hai un'effettiva esigenza di isolamento o una GPU dedicata.

#Requisiti hardware e VRAM

Dimensiona la GPU in base ai modelli che intendi utilizzare. Con la quantizzazione Q4_K_M (il miglior compromesso tra qualità e memoria), ecco la VRAM necessaria per ciascuna dimensione del modello. Prevedi sempre un margine per il contesto.

3B (≈2 GB)
Una RTX 3060 12GB è più che sufficiente. Per i test, il modello funziona bene anche con la sola CPU.
7B (≈5 GB)
RTX 3060 12GB o RTX 4070 12GB. Il punto di ingresso ideale per un homelab.
14B (≈9 GB)
RTX 4070 12GB: memoria al limite; RTX 4080 16GB: memoria con un buon margine.
32B (≈19 GB)
È necessaria una RTX 4090 da 24 GB, oppure due schede in tensor-split.
70B (≈40 GB)
Multi-GPU (2× RTX 4090) o Mac M4 Pro/Max con memoria unificata 48 GB+

Per quanto riguarda la virtualizzazione, il passthrough a una VM richiede prerequisiti rigorosi che non servono per LXC: una CPU e una scheda madre che supportino VT-d (Intel) o AMD-Vi (AMD), l'IOMMU attivato nel BIOS e, idealmente, un gruppo IOMMU riservato alla GPU. LXC non ha bisogno di nulla di tutto questo: basta che il driver NVIDIA sia installato sull'host.


#LXC con GPU condivisa, la via semplice

Il principio: installare il driver NVIDIA sull'host Proxmox, creare un contenitore LXC non privilegiato, montarvi i dispositivi della GPU, poi installare lo stesso driver (senza il modulo kernel) e Ollama nel contenitore. La versione del driver deve essere identica tra host e contenitore, altrimenti il userspace del contenitore rifiuta di comunicare con il modulo kernel dell'host.

  1. 01
    Installare il driver NVIDIA sull'host
    Aggiungi gli header del kernel, poi installa il driver dal repository NVIDIA (o dal file .run ufficiale). Verifica con nvidia-smi che la scheda sia effettivamente rilevata sull'host prima di procedere.
  2. 02
    Creare un container LXC non privilegiato
    Basta un template Debian 12 o Ubuntu 24.04. Abilita l'annidamento (nesting=1) per consentire l'esecuzione dei runtime GPU. Annota l'ID del container (es. 200).
  3. 03
    Individuare i dispositivi GPU
    Sull'host, elenca i nodi /dev/nvidia* e annota i rispettivi numeri major/minor. Sono questi nodi di dispositivo che esporremo al container.
  4. 04
    Montare i dispositivi nella configurazione LXC
    Modifica /etc/pve/lxc/200.conf per consentire i cgroup dei dispositivi NVIDIA e montarli tramite bind mount. Riavvia il container.
  5. 05
    Installare lo stesso driver nel container
    Nel container, installa il driver NVIDIA con l'opzione --no-kernel-module (il modulo proviene dall'host). nvidia-smi deve ora funzionare all'interno.
  6. 06
    Installare Ollama
    Lo script ufficiale rileva automaticamente la GPU. Ollama avvia il suo daemon e carica i modelli sulla scheda condivisa.
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
All'interno del container 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
!
L’insidia delle versioni dei driver
Se nvidia-smi mostra « Failed to initialize NVML: Driver/library version mismatch » all'interno del container, significa che il driver del container non corrisponde esattamente a quello dell'host. Reinstalla la stessa versione oppure, dopo un aggiornamento dell'host, riavvia il container per risincronizzare.

#VM con passthrough completo: una soluzione ben strutturata

Qui la GPU viene sottratta all'host e assegnata a una VM tramite VFIO. La VM vede una vera scheda NVIDIA e si comporta come un sistema bare-metal: al suo interno si installa il driver normalmente, senza espedienti legati alla versione. In compenso, occorre preparare l'host affinché rilasci la scheda all'avvio (binding VFIO) e il kernel non carichi il driver nvidia sull'host.

  1. 01
    Attivare IOMMU all'avvio
    Aggiungi intel_iommu=on (o amd_iommu=on) e iommu=pt ai parametri del kernel, in GRUB o systemd-boot a seconda della tua installazione Proxmox.
  2. 02
    Isolare la GPU per VFIO
    Identifica gli ID PCI della scheda (GPU + il relativo audio HDMI), dichiarali in vfio-pci e aggiungi alla blacklist i driver nouveau/nvidia sull'host, per impedire che l'host prenda il controllo della scheda.
  3. 03
    Rigenerare l'initramfs e riavviare
    Aggiorna l'initramfs per includere i moduli VFIO, poi riavvia l'host. Verifica che la GPU sia effettivamente gestita da vfio-pci.
  4. 04
    Creare la VM e assegnarle la GPU
    Crea una VM (tipo di macchina q35, BIOS OVMF/UEFI), aggiungi il dispositivo PCI della GPU in passthrough e spunta PCI-Express. Installa il sistema operativo guest (Ubuntu Server consigliato).
  5. 05
    Installare il driver + Ollama nella VM
    Nella VM, installa il driver NVIDIA classico (il modulo kernel è autorizzato qui, si tratta di una vera macchina), verifica con nvidia-smi, poi installa Ollama.
Host — attivare 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
→
Aggiunta del PCI nell'interfaccia Proxmox
Nella VM → Hardware → Add → PCI Device, scegli la GPU. Seleziona «All Functions» per includere l'audio HDMI e «PCI-Express» (richiede una VM con tipo di macchina q35 e BIOS OVMF). Con i driver NVIDIA recenti, non è più necessario aggirare il famoso «Code 43» quando Linux è il sistema operativo guest.

#IOMMU, driver e insidie comuni

Il passthrough fallisce raramente per caso: quasi sempre il problema è dovuto all'IOMMU o a un gruppo PCI non correttamente isolato. Ecco gli ostacoli più ricorrenti e come diagnosticarli.

Gruppi IOMMU non isolati
Se la GPU condivide il proprio gruppo IOMMU con altri dispositivi (controller USB, un'altra scheda), Proxmox rifiuta il passthrough. Verifica i gruppi; come ultima risorsa, la patch ACS override separa i gruppi, a scapito di un isolamento meno rigoroso.
L’host monopolizza la GPU
Se dopo il riavvio lspci mostra la GPU con « nvidia » o « nouveau » e non « vfio-pci », la blacklist non è stata applicata. Controlla /etc/modprobe.d e rigenera l'initramfs.
IOMMU non attivato nel BIOS
dmesg non mostra nessuna riga DMAR/IOMMU: VT-d o AMD-Vi è disattivato nel firmware. Attivalo nel BIOS prima di tutto.
Versione del driver LXC non allineata
Solo in LXC: incompatibilità delle versioni NVML dopo un aggiornamento dell'host. Riallinea le versioni dell'host e del container.
GPU utilizzato dalla console dell'host
Quando l'unica GPU serve anche come uscita video per Proxmox, è difficile configurarne correttamente il passthrough. Idealmente, tieni una iGPU o una seconda scheda per l'uscita video dell'host.
Host — verificare i gruppi 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

#Esporre Ollama sulla rete locale

Per impostazione predefinita, Ollama ascolta solo su http://localhost:11434 — quindi è accessibile esclusivamente dall'interno del container o della VM. Per chiamarlo da Open WebUI ospitato altrove o dal tuo computer, bisogna indicargli di ascoltare su tutte le interfacce tramite la variabile OLLAMA_HOST.

Nel container / nella VM
# É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
!
Non esporre Ollama su Internet senza protezioni
L'API di Ollama non prevede alcuna autenticazione. Quando è in ascolto su 0.0.0.0, mantienila rigorosamente all'interno della tua rete locale o dietro un reverse proxy con autenticazione (Traefik, Caddy). Non inoltrare mai la porta 11434 direttamente dal tuo router.

#Risoluzione dei problemi

nvidia-smi assente nel contenitore
Dispositivi non montati o autorizzazioni dei cgroup configurate male. Verifica le righe lxc.mount.entry e lxc.cgroup2.devices.allow, poi i numeri major effettivi con ls -l /dev/nvidia*.
Ollama gira sulla CPU nonostante la presenza della GPU
Verifica ollama ps: se il modello è « 100% CPU », il runtime CUDA non vede la scheda. Controlla nvidia-smi e riavvia il daemon Ollama.
La VM non si avvia dopo l'aggiunta del PCI
Spesso un problema OVMF/q35 o un gruppo IOMMU condiviso. Controlla i log della VM e verifica che la scheda sia effettivamente su vfio-pci dal lato host.
Performance ridotte dopo aggiornamento Proxmox
Un aggiornamento del kernel host può compromettere il modulo NVIDIA (LXC) o il binding VFIO. Reinstalla gli header e il driver, rigenera l'initramfs.
Verifiche rapide
# 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

#Per approfondire

Una volta installato Ollama su Proxmox, queste guide del sito aiutano a completare lo stack e a scegliere l'hardware giusto:

Installare Ollama su Linux
Descrive in dettaglio l'installazione corretta del daemon, systemd e la configurazione della GPU NVIDIA/AMD: utile all'interno del contenitore o della VM.
Mettere un LLM in produzione con Docker Compose
Per integrare Open WebUI, Qdrant e un reverse proxy con il tuo Ollama su Proxmox in uno stack completo.
Scegliere la GPU per l'IA locale
La guida all'acquisto 2026 per scegliere una scheda adeguata ai modelli previsti, da rendere disponibile in LXC o tramite passthrough.
Questa guida ti è stata utile?

Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.