高级 15 分钟Proxmox

在 Proxmox 上运行 Ollama:LXC、虚拟机和 GPU passthrough

Proxmox VE 是家庭实验室的瑞士军刀:一个自由、资源占用低的高性能 hypervisor,能够在单台服务器上让轻量级容器和隔离的虚拟机共存。在 Proxmox 上运行 Ollama,意味着可以在多个服务间共享昂贵的 GPU,同时保持推理 100% 在本地进行。本指南涵盖两种路径——LXC 配合共享 GPU(简单)和 VM 配合完整直通(规范)——并详细说明了 NVIDIA 配置以及那些会让您浪费整个晚上的 IOMMU 陷阱。

作者: Mohamed Meguedmi·更新于 2026-08-27·已在 Windows、macOS 和 Linux 上测试

#为何在Proxmox上部署 Ollama

在家庭实验室中,人们很少希望有一台只用于 AI 的专用服务器。Proxmox 可以将 Ollama 与您的其他服务(NAS、家庭自动化、反向代理)部署在同一台机器上,同时隔离各项负载。此时,Ollama 守护进程运行在容器或虚拟机中,监听其惯用端口,并可从整个本地基础设施访问——无论是另一个容器中的 Open WebUI、n8n 工作流,还是您的工作电脑。

核心问题在于 GPU。没有硬件加速的 LLM 推理可以使用,但速度很慢;要让 14B 或 32B 模型以较好的速度运行,就需要让 Ollama 能访问一张 NVIDIA 显卡。然而,GPU 虚拟化并不简单:Proxmox 提供了两种截然不同的方案,它们在操作简便程度和部署规范性方面各有取舍,优劣恰好相反。

i
本指南所假设的前提
已安装并正常运行 Proxmox VE 8.x,配备一块 NVIDIA GPU(RTX 3060 12GB 或更高规格),并可通过 SSH 或 Web 控制台以 root 权限访问节点。所列命令适用于 Debian 12 主机(Proxmox 8 的底层系统)及 Debian/Ubuntu 客户系统。

#LXC与VM:对于Ollama,应如何选择

本地智能体套件

在你的机器上执行操作的智能体:具备智能体能力的 Cline、MCP、n8n + Ollama、本地自动化。

  • 在线空间,终身可用
  • PDF + 文件
  • 终身更新

这是首先要做的决定,它决定了后续的一切。LXC 容器共享主机内核:轻量、启动即刻完成,尤其是,它可以访问主机的 GPU,同时主机仍可使用这块 GPU。而虚拟机是一台完整且隔离的机器;要让它使用 GPU,就必须通过 VFIO 直通将整块 GPU 专门分配给它——主机随后便完全无法使用这块显卡。

LXC + 共享GPU
简单方案:NVIDIA 驱动已安装在主机和容器中(版本一致),/dev/nvidia* 设备被挂载到容器内。GPU 可同时被主机和其他容器使用。如果您只想共享一张显卡,此方案非常合适。
虚拟机 + 完整直通
更干净的方案。通过 VFIO/IOMMU 将 GPU 从主机解绑,并分配给虚拟机。实现完全隔离,在虚拟机内像在裸机上一样管理驱动程序,互不干扰。但只要这台虚拟机还在运行,GPU 就由它独占。
决定性标准
只有一张显卡,需要在多个服务之间共享 → LXC。有一张专用于 AI 的显卡(或多个 GPU),且需要严格隔离 → VM。如果您希望运行不同的操作系统(Windows 或使用特定驱动的操作系统),也必须使用直通(passthrough)。
→
默认建议
如果您首次在家庭实验室中搭建单 GPU 配置,请先使用 LXC。它部署更快,更少踩坑,而且显卡仍可用于其他用途。当您确实需要隔离,或拥有专用 GPU 时,再切换到虚拟机。

#硬件要求和显存

根据目标模型的规模来配置 GPU。在 Q4_K_M 量化(质量与内存的最佳平衡)下,不同模型规模所需的 VRAM 如下。请始终为上下文预留额外空间。

3B(≈2 GB)
RTX 3060 12GB 绰绰有余。即使仅使用 CPU,进行测试也能轻松应对。
7B(≈5 GB)
RTX 3060 12GB 或 RTX 4070 12GB。家庭实验室的理想入门配置。
14B (≈9 GB)
RTX 4070 12GB 的显存比较紧张,RTX 4080 16GB 则比较宽裕。
32B(≈19 GB)
需要RTX 4090 24GB,或使用双卡tensor-split
70B(≈40 GB)
多GPU(2× RTX 4090)或搭载48 GB及以上统一内存的Mac M4 Pro/Max。

在虚拟化方面,VM 的直通需要比 LXC 更严格的先决条件:CPU 和主板必须支持 VT-d(Intel)或 AMD-Vi(AMD),BIOS 中必须启用 IOMMU,理想情况下还需为 GPU 分配独立的 IOMMU 组。而 LXC 则无需这些条件——只需在主机上安装 NVIDIA 驱动即可。


#LXC配合共享GPU,简易方案

原理:在 Proxmox 主机上安装 NVIDIA 驱动程序,创建一个非特权的 LXC 容器,挂载 GPU 设备,然后在容器中安装相同版本的驱动程序(不含内核模块)及 Ollama。主机与容器的驱动版本必须一致,否则容器的用户空间将拒绝与主机内核模块通信。

  1. 01
    在主机上安装 NVIDIA 驱动程序
    安装内核头文件,然后从NVIDIA软件仓库安装驱动程序(也可使用官方.run文件)。继续之前,请用nvidia-smi确认主机已正确检测到显卡。
  2. 02
    创建一个非特权的 LXC 容器
    可使用 Debian 12 或 Ubuntu 24.04 模板。启用嵌套模式(nesting=1)以支持 GPU 运行时。记录容器 ID(例如 200)。
  3. 03
    检测GPU设备
    在宿主机上列出 /dev/nvidia* 设备节点,并记录它们的主设备号和次设备号。接下来要向容器开放的就是这些设备节点。
  4. 04
    在LXC配置中挂载设备
    编辑 /etc/pve/lxc/200.conf,在 cgroups 配置中允许访问 NVIDIA 设备,并通过绑定挂载将这些设备挂载到容器中。重启容器。
  5. 05
    在容器中安装相同的驱动程序
    在容器中使用 --no-kernel-module 选项安装 NVIDIA 驱动程序(内核模块来自宿主机)。此时 nvidia-smi 应能在容器内正常运行。
  6. 06
    安装 Ollama
    官方脚本会自动检测 GPU。Ollama 会启动其守护进程,并将模型加载到共享的显卡上。
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
在 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
!
驱动版本的陷阱
如果nvidia-smi在容器中显示「Failed to initialize NVML: Driver/library version mismatch」,说明容器驱动版本与主机不匹配。请重新安装相同版本,或在主机更新后重启容器以重新同步。

#采用完整直通的虚拟机:更规范的方案

在这种配置中,GPU 不再由宿主机使用,而是通过 VFIO 分配给虚拟机。虚拟机看到的是一块真正的 NVIDIA 显卡,运行方式与裸机相同:在其中正常安装驱动即可,无需折腾驱动版本。相应地,需要预先配置宿主机,让它在启动时释放显卡(绑定到 VFIO),并确保宿主机内核不加载 nvidia 驱动。

  1. 01
    开机时启用IOMMU
    根据您的 Proxmox 安装方式,在 GRUB 或 systemd-boot 中,将 intel_iommu=on(或 amd_iommu=on)和 iommu=pt 添加到内核参数中。
  2. 02
    为 VFIO 隔离 GPU
    识别显卡的 PCI ID(包括 GPU 及其 HDMI 音频设备),将这些 ID 配置到 vfio-pci 中,并在宿主机上将 nouveau/nvidia 驱动加入黑名单,防止宿主机接管这些设备。
  3. 03
    重新生成 initramfs 并重启
    更新 initramfs,使其包含 VFIO 模块,然后重启宿主机。确认 GPU 已由 vfio-pci 驱动接管。
  4. 04
    创建虚拟机并分配GPU
    创建虚拟机(机器类型 q35,BIOS 使用 OVMF/UEFI),添加 GPU PCI 设备直通,并勾选 PCI-Express。安装来宾操作系统(推荐 Ubuntu Server)
  5. 05
    在虚拟机中安装驱动程序 + Ollama
    在虚拟机中安装常规 NVIDIA 驱动(这里允许使用内核模块,因为这是一台完整的机器),用 nvidia-smi 验证,然后安装 Ollama。
主机 — 启用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
主机 — 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
→
在 Proxmox 界面中添加 PCI 设备
在虚拟机的 Hardware → Add → PCI Device 中选择 GPU。勾选「All Functions」以包含 HDMI 音频,同时勾选「PCI-Express」(需要虚拟机使用 q35 机型和 OVMF BIOS)。使用较新的 NVIDIA 驱动时,在 Linux 客体系统中已无需绕过著名的「Code 43」错误。

#IOMMU、驱动程序及常见陷阱

直通功能很少无缘无故失败:几乎总是由 IOMMU 或隔离不当的 PCI 组引起。下面介绍最常见的障碍及其诊断方法。

未隔离的 IOMMU 组
如果 GPU 与其他设备(USB 控制器、另一块扩展卡)共享同一个 IOMMU 组,Proxmox 会拒绝直通。请检查这些组;作为最后手段,ACS override 补丁可以将组分开,但代价是隔离不再那么严格。
主机占用GPU
重启后,若 lspci 显示 GPU 为「nvidia」或「nouveau」而非「vfio-pci」,说明黑名单未生效。请检查 /etc/modprobe.d 并重新生成 initramfs。
BIOS 中 IOMMU 未启用
dmesg 未显示任何 DMAR/IOMMU 信息:VT-d 或 AMD-Vi 在固件中已禁用。请在 BIOS 中启用该功能后再进行操作。
LXC 驱动版本不同步
仅限LXC侧:主机更新后出现NVML版本不匹配。请对主机与容器的版本进行对齐。
主机控制台使用的GPU
如果只有一块 GPU,而且它还负责 Proxmox 的视频输出,就很难妥善实现 GPU 直通。理想情况下,请保留核显或第二块显卡,用于宿主机显示。
主机——检查 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

#让局域网中的设备访问 Ollama

默认情况下,Ollama 仅监听 http://localhost:11434 — 因此只能从容器或虚拟机内部访问。若需从其他位置托管的 Open WebUI 或本地设备调用,需通过 OLLAMA_HOST 变量配置其监听所有网络接口。

在容器 / 虚拟机中
# É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
!
不要将没有保护措施的 Ollama 直接暴露在互联网上
Ollama API 没有任何身份验证机制。监听 0.0.0.0 时,请将它严格限制在您的局域网内,或置于带身份验证的反向代理(Traefik、Caddy)后面。切勿在路由器上直接设置端口转发,将 11434 端口暴露到外网。

#故障排除

容器中缺少 nvidia-smi
设备未挂载,或 cgroups 的设备访问授权配置不正确。请检查 lxc.mount.entry 和 lxc.cgroup2.devices.allow 配置行,再通过 ls -l /dev/nvidia* 核实实际的主设备号。
Ollama 在 CPU 上运行,即使有 GPU
检查 ollama ps 的输出:如果模型显示为“100% CPU”,说明 CUDA 运行时未检测到显卡。检查 nvidia-smi 的输出,并重启 Ollama 守护进程。
添加PCI后虚拟机无法启动
通常为 OVMF/q35 或共享 IOMMU 组问题。请检查虚拟机日志,并确认主机端显卡是否正确配置在 vfio-pci 上。
更新 Proxmox 后性能下降
主机内核更新可能会导致 NVIDIA(LXC)模块或 VFIO 绑定失效。请重新安装头文件和驱动程序,并重新生成 initramfs。
快速验证
# 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

#深入了解

在Proxmox上部署完Ollama后,本网站指南可帮助完成技术栈搭建并选择合适的硬件:

在 Linux 上安装 Ollama
详细介绍守护进程的规范安装、systemd 设置及 NVIDIA/AMD GPU 配置,适用于容器或虚拟机内部环境。
使用 Docker Compose 在生产环境中部署 LLM
用于将 Open WebUI、Qdrant 和反向代理与您在 Proxmox 上运行的 Ollama 整合成一套完整的技术栈。
为本地 AI 选择 GPU
这份 2026 年选购指南帮助您根据目标模型,确定供 LXC 使用或通过 GPU 直通方式使用的显卡所需规格。
这份指南对您有帮助吗?

有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。