近年来,随着5G网络、云计算和虚拟化技术的快速发展,云手机和云电脑逐渐进入大众视野。无论是企业还是个人用户,都可以通过云端提供的算力,在任意设备(如手机、平板、低配电脑)上流畅运行高性能应用和操作系统。那么如何像云厂商一样在本地构建一套私有化云桌面呢?嘿嘿,还真有。本教程将指导你使用 Proxmox VE (PVE) 来构建一个简单的家庭私有云桌面环境
准备工作
预期想法:在家里配置一台高性能主机,购买一些瘦客户机将客户机放在各个房间跟客厅。通过PVE方案构建一个基于家庭环境的高性能虚拟桌面基础设施(VDI)系统,实现在家庭各个房间无缝访问高性能计算资源。
准备一台高性能PC或者服务器(做服务端)
家用或小工作室就别整机架式服务器了,噪音受不了推荐塔式服务器或工作站。比如戴尔这款Precision 7920 工作站Precision 7920 产品参数 10个人配置
(3D作图/剪辑/游戏)CPU 支持2颗 铜牌、银牌、金牌、铂金处理器 金牌6248 20核40线程 主频2.5,睿频3.9 内存 24个内存插槽(DDR4 支持ECC自动纠错) 192G内存 硬盘 标配4个3.5硬盘位(最多可以配置10个3.5硬盘位) 2TB Nvme + 16TB机械 显卡 支持3个双宽显卡 2080 Ti 22G 2张 共44G显存 网卡 英特尔 i219 和 i210 双千兆网卡 强烈增加个10G网卡 PCIE 7个PCIE3.0插槽 扩展nvme硬盘或者PCIE网卡 电源 1400W电源 整机功耗800W左右 准备一些x86_64架构的瘦客户机(做客户端)
小主机:可以找些小主机作为瘦终端,小巧又不占用地方;
移动式:也可以整些云笔记本或者老旧笔记本,外出携带都方便;
懒人免部署篇
如果你是萌新或者是对pve基础较弱的用户,可以用我封装好的PVE镜像用balenaEtcher烧录工具写入硬盘启动即可。可以做到免部署开机即用。即节约时间又避免部署过程中产生的坑。
PVE镜像功能说明(服务端)
PVE镜像说明:
1)基于PVE 8.4.5
内核Linux 6.8.12-13-pve
版本进行封装;
2)该镜像大小28GB
,账号:root
,密码:123456
;
3)管理口默认为主机的第一个口
,DHCP
模式;
4)预装 NVIDIA vGPU Unlock
服务,解除消费卡vGPU限制;
5)预装 NVIDIA vGPU17.5 HOST
驱动,在PVE Shell
执行nvidia-smi
可以查看;
6)提供fastapi-dls
授权驱动服务LXC容器,90天
周期;
7)提供WIN11 24h2 LTSC X64
虚拟机还原包,可用于调试和测试;
8)增加PVE的模拟真实机器防检测
的PVE-QEMU-KVM
包,基于Github上的lixiaoliu的9.2.0-5
版本;
9)增加PVE的VNC显示
窗口直接输出vGPU显卡画面
,让PVE的Web VNC窗口
也支持调用vGPU
,只需要在虚拟机添加vgpu显卡时勾选主GPU
即可;
10)默认创建了一个用户为1000
的VDI
账号,可用于登录瘦客户机做测试,如不需要删除即可。账号:1000密码:12345678
PVE镜像使用方法--点我展开
↓↓↓
PVE镜像使用方法:(视频版)
PVE镜像使用方法:(图文版)
1)可以使用U盘或者Ventoy引导
进入到PE系统,PE系统推荐:FirPE点我前往
2)进入PE后,打开DiskGenius分区工具
,将要安装PVE的硬盘清空一下分区
3)打开balenaEtcher
烧录工具,将PVE镜像烧录到硬盘
4)重启主机,进入PVE系统。通过显示器给出的IP地址访问PVE管理后台即可。PVE管理口默认为第一个网口,多网口的主机记得将网线插第一个口,不然无法获取IP,确保自己的局域网是开启了DHCP否则也是无法获取IP的
PS:如果实在不显示IP,可以手动登录控制台,查看网卡情况和获取到的IP信息。账号为:root 密码为:123456(linux特性在控制台输入密码是不会显示输出的,输入完密码回车就行)
5)浏览器登录PVE后台:https://你的IP:8006
。登录进来后将硬盘所剩的空间合并到root根目录下。
# 一键将系统盘空闲容量扩容到root根目录(LVM + ext4)
bash pve_extend_root.sh
6)最后就是将PVE管理地址由dhcp改为静态IP,防止PVE后台随意变更IP
。
7)镜像包放了2个还原包fastapi-dls
授权驱动服务LXC容器和Windows虚拟机
可以用于测试
云桌面OS镜像说明(客户端)
1)基于轻量级 Linux 发行版 Porteus5.0
作为底层 x86_64
架构;
2)该镜像大小886.1MB
,支持U盘启动
、ISO镜像启动
,硬盘启动
,支持BIOS及UEFI双模式启动
;
3)默认登录为Guest用户,密码:guest
提权需要root密码:toor
;
4)集成PVE VDIClient
和PXVDI客户端
模块,支持 Spice、RDP、VNC 、Horizon
等主流协议;
5)模块还加入了常用远程软件如向日葵、ToDesk、RustDesk、Sunshine串流,Parsec串流
;
6)支持无桌面模式,开机自动运行云桌面客户端,登录后自动进入虚拟机;
云桌面OS镜像使用方法--点我展开
↓↓↓
云桌面OS镜像使用方法:(视频版)
云桌面OS镜像使用方法:(图文版)
云桌面镜像支持BIOS及UEFI双模式启动,下边将介绍这2种方式分别如何安装。安装前请进瘦客户机的BIOS设置好相应的启动方式。
一、BIOS启动安装方式:
1)找个U盘使用rufus工具
将镜像烧录到U盘,BIOS启动
烧录U盘的时候记得选MBR分区
。
2)将U盘插到瘦客户机启动云桌面OS。
3)打开GParted分区工具
,对硬盘进行分区并将镜像安装到硬盘。
3)我这里使用一块1GB
的硬盘来安装,首先给它创建MBR分区表
以支持BIOS启动。
3)接着来创建分区,使用整个硬盘空间,创建一个ext4格式的主分区
。并应用等待创建完成。
4)挂载分区到/mnt/sda1
5)打开Porteus Installer
工具,将系统写入硬盘,就可以拔掉U盘,以硬盘启动云桌面OS了。
二、UEFI启动安装方式:
1)找个U盘使用rufus工具
将镜像烧录到U盘,然后用U盘启动到云桌面OS。
2)启动到云桌面OS后,打开GParted分区工具
,对硬盘进行分区并将镜像安装到硬盘。
3)我这里使用一块8GB
的硬盘来安装,首先给它创建GPT分区表
以支持UEFI启动。
4)接着来创建一个EFI分区
,分配300M
采用fat32格式
。
5)最后将剩余的所有空间创建一个名为porteus
的ext4分区
。
6)将创建的这2个分区分别挂载到/mnt/sda1
和/mnt/sda2
我这里系统识别硬盘为sda,按系统给的挂载就行。
7)打开文件
窗口,查看一下U盘被系统挂载到哪个路径,我这边是挂载到/mnt/sdc1
需要将里面的文件复制到硬盘
8)打开终端软件,以root权限运行,并执行以下命令将U盘的文件复制到硬盘。
# 获取root权限
sudo -i
# 将U盘的EFI文件夹复制到硬盘ESP分区下
cp -r /mnt/sdc1/EFI/ /mnt/sda1/
# 将U盘的boot文件夹复制到硬盘ESP分区下
cp -r /mnt/sdc1/boot/ /mnt/sda1/
# 将U盘的porteus文件夹复制到硬盘porteus分区下
cp -r /mnt/sdc1/porteus/ /mnt/sda2/
9)编辑硬盘portues分区
下的portues文件夹下
的porteus-v5.0-x86_64.cfg
文件将里面这句from=/mnt/sda2/porteus
的注释#删除掉。到这系统就安装到硬盘了。可以拔掉U盘,以硬盘启动云桌面OS了。
# 使用nano命令编辑porteus-v5.0-x86_64.cfg文件,nano保存按Ctrl +x按y,回车即可保存。
nano /mnt/sda2/porteus/porteus-v5.0-x86_64.cfg
10)硬盘启动云桌面后,可以将自己常用软件添加为桌面快捷方式。
三、无桌面模式启动:
对于只需要用到VDI客户端
,登录就自动进入虚拟机,不需要花里胡哨的功能。可以修改porteus
目录下的porteus-v5.0-x86_64.cfg
文件,来启用无桌面模式。
1)将烧录好的U盘打开修改porteus目录下的porteus-v5.0-x86_64.cfg文件
2)启用root用户默认进行登录,将参数login=root前面的#注释给取消即可;
3)启用无桌面模式,将参数cliexec=run-nogui.sh前面的#注释给取消即可;
4)如要无桌面启动进PVE-VDIClient客户端,将参数guiexec=run-pvevdi.sh前面的#注释给取消即可(这步跟第5步,2选一 都启用会冲突
);
5)如要无桌面启动进PXVDI客户端,将参数guiexec=run-pxvdi.sh前面的#注释给取消即可(这步跟第4步,2选一 都启用会冲突
);
以启用PXVDI客户端为例:
编辑porteus-v5.0-x86_64.cfg
文件
## 默认以root账号登录
login=root
## 无桌面模式启动
cliexec=run-nogui.sh
## 无桌面模式启动后运行PVE-VDIClient
# guiexec=run-pvevdi.sh
## 无桌面模式启动后运行PXVDI
guiexec=run-pxvdi.sh
修改好后,插到瘦客户机安装云桌面OS即可。
教程正式开始
服务端部分
服务端将采用Proxmox VE(PVE)免费且开源,无需支付高昂的授权费用。采用典型的C/S架构。在PVE中通过虚拟机权限管理,将虚拟机分配给指定用户。当这个用户通过瘦终端进行登录时,则会查询所拥有的虚拟机,随后通过RDP、Spice、 VMware Horizon等协议连接到虚拟机。对于家庭&中小型企业用户量也不多,也不需要搭建庞大的AD域和后端管理,所以搭建这台方案并不需要过多的专业知识和维护成本。
一、安装Proxmox VE
在高性能PC或者服务器上安装好PVE,以下是PVE安装过程,节省时间可以使用我封装好的PVE镜像免部署。
资源下载
小飞机网盘资源
说明 | 下载地址 |
---|---|
PVE安装镜像 | PVE8.2-2 |
写盘工具 | balenaEtcher |
BIOS设置
提前在BIOS开启以下设置
开启VT-d --必须开启
- 开启SRIOV --如有
- 开启Above 4G --如有
关闭安全启动 --在security菜单 secure boot 改disabled
PVE烧录U盘
提前把balenaEtcher烧录工具
和PVE安装镜像
下载好,这里我用的是proxmox-ve_8.2-2.iso
版本,用balenaEtcher
烧录工具将镜像写入U盘或者移动硬盘,然后插到主机进行PVE的安装。
安装PVE
将U盘或者移动硬盘接入主机引导启动到PVE安装界面,采用第一种图形化界面进行安装。
PVE系统我这边给了28G,20G作为PVE系统盘用于存些ISO镜像啥的,不需要太大。按自己需要设置。另外8G作为SWAP虚拟内存用。PVE图形界面手动分区安装示意图:
PVE优化设置
安装完成PVE后,在浏览器输入https://你的PVE管理IP:8006
来访问你的PVE管理后台了
登录进来后需要对PVE进行硬盘挂载和一些优化设置,在PVE Shell 中执行。以下设置将会大量使用nano
文本编辑命令,至于怎么使用自行百度,这里不重复造轮子了。 知道如何保存就行 Ctrl +X
输入“Y
” 按下回车 保存
删除local-lvm将空间合并到local
前面只给PVE系统盘分配了20G空间,再分出个local-lvm分区那local系统分区就没多少空间了,所以我们需要进行合并,删除local-lvm。
# 使用命令删除local-lvm
lvremove /dev/pve/data
# 输入y,确认,输出以下信息即成功
Do you really want to remove active logical volume pve/data? [y/n]: y
Logical volume "data" successfully removed.
# 再将local-lvm的空间转移到pve-root
lvextend -rl +100%FREE /dev/pve/root
# 输出以下信息即合并local分区成功
Size of logical volume pve/root changed from <9.75 GiB (2495 extents) to <19.50 GiB (4991 extents).
Logical volume pve/root successfully resized.
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/mapper/pve-root is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/pve-root is now 5110784 (4k) blocks long.
删除了lvm-thin之后,还需要在Web删除local-lvm才算完成。
把剩余的空间挂载为PVE数据存储池
最后就是把剩余的硬盘空间用作PVE数据存储池。需要做下硬盘分区,这里要根据自己实际硬盘ID操作,我这里的是sda,用M.2硬盘的可能是nvme0n1不要盲目照抄。
硬盘分区好后,可以到PVE控制台看到硬盘分区情况
接着就是将该分区挂载为PVE数据存储池,把虚拟机安装到该存储池下就行。
更换系统源
国内清华源
在PVE Shell中编辑sources.list,将原有的源链接在句首加 # 注释掉,更换以下清华源信息nano /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
更换企业源
国内清华源
在PVE Shell中编辑pve-enterprise.list,将原有的源链接在句首加 # 注释掉,更换以下清华源信息nano /etc/apt/sources.list.d/pve-enterprise.list
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bookworm pve-no-subscription
更换Ceph源
在PVE Shell中编辑ceph.list,将原有的源链接在句首加 # 注释掉,添加中科大ceph源nano /etc/apt/sources.list.d/ceph.list
deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription
执行更新源
# 更新系统程序
apt update
LXC容器更源
国内清华源
# 备份APLInfo.pm
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
# 替换为清华源:
sed -i 's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
# 重启服务后生效
systemctl restart pvedaemon.service
二、部署NVIDIA vGPU
如果你机器有显卡且需要用到NVIDIA显卡做云桌面的,可以看往期这篇文章写的很详细。
官方支持vGPU的显卡查询:https://docs.nvidia.com/vgpu/gpus-supported-by-vgpu.html
官方非支持vGPU的显卡,需要搭配VGPU_Unlock
服务才支持的显卡如下:
点我展开
以下 Maxwell\Pascal\Turing架构的显卡均支持vGPU,Ampere架构的30系及之后的消费卡暂不支持
Maxwell 架构:(GTX 9xx、Quadro Mxxxx、Tesla Mxx)
Pascal 架构:(GTX 10xx、Quadro Pxxxx、Tesla Pxx)
Turing 架构:(GTX 16xx、RTX 20xx、Quadro RTXxx、Tesla Txx)
设备ID | 显卡型号 | VGPU模拟型号 |
---|---|---|
21c4 | TU116 GeForce GTX 1660 SUPER | Quadro RTX 6000 |
21d1 | TU116BM GeForce GTX 1660 Ti Mobile | Quadro RTX 6000 |
21c2 | TU116 | Quadro RTX 6000 |
2182 | TU116 GeForce GTX 1660 Ti | Quadro RTX 6000 |
2183 | TU116 | Quadro RTX 6000 |
2184 | TU116 GeForce GTX 1660 | Quadro RTX 6000 |
2187 | TU116 GeForce GTX 1650 SUPER | Quadro RTX 6000 |
2188 | TU116 GeForce GTX 1650 | Quadro RTX 6000 |
2191 | TU116M GeForce GTX 1660 Ti Mobile | Quadro RTX 6000 |
2192 | TU116M GeForce GTX 1650 Ti Mobile | Quadro RTX 6000 |
21ae | TU116GL | Quadro RTX 6000 |
21bf | TU116GL | Quadro RTX 6000 |
2189 | TU116 CMP 30HX | Quadro RTX 6000 |
1fbf | TU117GL | Quadro RTX 6000 |
1fbb | TU117GLM Quadro T500 Mobile | Quadro RTX 6000 |
1fd9 | TU117BM GeForce GTX 1650 Mobile Refresh | Quadro RTX 6000 |
1ff9 | TU117GLM Quadro T1000 Mobile | Quadro RTX 6000 |
1fdd | TU117BM GeForce GTX 1650 Mobile Refresh | Quadro RTX 6000 |
1f96 | TU117M GeForce GTX 1650 Mobile / Max-Q | Quadro RTX 6000 |
1f99 | TU117M | Quadro RTX 6000 |
1fae | TU117GL | Quadro RTX 6000 |
1fb8 | TU117GLM Quadro T2000 Mobile / Max-Q | Quadro RTX 6000 |
1fb9 | TU117GLM Quadro T1000 Mobile | Quadro RTX 6000 |
1f97 | TU117M GeForce MX450 | Quadro RTX 6000 |
1f98 | TU117M GeForce MX450 | Quadro RTX 6000 |
1f9c | TU117M GeForce MX450 | Quadro RTX 6000 |
1f9d | TU117M GeForce GTX 1650 Mobile / Max-Q | Quadro RTX 6000 |
1fb0 | TU117GLM Quadro T1000 Mobile | Quadro RTX 6000 |
1fb1 | TU117GL T600 | Quadro RTX 6000 |
1fb2 | TU117GLM Quadro T400 Mobile | Quadro RTX 6000 |
1fba | TU117GLM T600 Mobile | Quadro RTX 6000 |
1f42 | TU106 GeForce RTX 2060 SUPER | Quadro RTX 6000 |
1f47 | TU106 GeForce RTX 2060 SUPER | Quadro RTX 6000 |
1f50 | TU106BM GeForce RTX 2070 Mobile / Max-Q | Quadro RTX 6000 |
1f51 | TU106BM GeForce RTX 2060 Mobile | Quadro RTX 6000 |
1f54 | TU106BM GeForce RTX 2070 Mobile | Quadro RTX 6000 |
1f55 | TU106BM GeForce RTX 2060 Mobile | Quadro RTX 6000 |
1f81 | TU117 | Quadro RTX 6000 |
1f82 | TU117 GeForce GTX 1650 | Quadro RTX 6000 |
1f91 | TU117M GeForce GTX 1650 Mobile / Max-Q | Quadro RTX 6000 |
1f92 | TU117M GeForce GTX 1650 Mobile | Quadro RTX 6000 |
1f94 | TU117M GeForce GTX 1650 Mobile | Quadro RTX 6000 |
1f95 | TU117M GeForce GTX 1650 Ti Mobile | Quadro RTX 6000 |
1f76 | TU106GLM Quadro RTX 3000 Mobile Refresh | Quadro RTX 6000 |
1f07 | TU106 GeForce RTX 2070 Rev. A | Quadro RTX 6000 |
1f08 | TU106 GeForce RTX 2060 Rev. A | Quadro RTX 6000 |
1f09 | TU106 GeForce GTX 1660 SUPER | Quadro RTX 6000 |
1f0a | TU106 GeForce GTX 1650 | Quadro RTX 6000 |
1f10 | TU106M GeForce RTX 2070 Mobile | Quadro RTX 6000 |
1f11 | TU106M GeForce RTX 2060 Mobile | Quadro RTX 6000 |
1f12 | TU106M GeForce RTX 2060 Max-Q | Quadro RTX 6000 |
1f14 | TU106M GeForce RTX 2070 Mobile / Max-Q Refresh | Quadro RTX 6000 |
1f15 | TU106M GeForce RTX 2060 Mobile | Quadro RTX 6000 |
1f2e | TU106M | Quadro RTX 6000 |
1f36 | TU106GLM Quadro RTX 3000 Mobile / Max-Q | Quadro RTX 6000 |
1f0b | TU106 CMP 40HX | Quadro RTX 6000 |
1eb5 | TU104GLM Quadro RTX 5000 Mobile / Max-Q | Quadro RTX 6000 |
1eb6 | TU104GLM Quadro RTX 4000 Mobile / Max-Q | Quadro RTX 6000 |
1eb8 | TU104GL Tesla T4 | Quadro RTX 6000 |
1eb9 | TU104GL | Quadro RTX 6000 |
1ebe | TU104GL | Quadro RTX 6000 |
1ec2 | TU104 GeForce RTX 2070 SUPER | Quadro RTX 6000 |
1ec7 | TU104 GeForce RTX 2070 SUPER | Quadro RTX 6000 |
1ed0 | TU104BM GeForce RTX 2080 Mobile | Quadro RTX 6000 |
1ed1 | TU104BM GeForce RTX 2070 SUPER Mobile / Max-Q | Quadro RTX 6000 |
1ed3 | TU104BM GeForce RTX 2080 SUPER Mobile / Max-Q | Quadro RTX 6000 |
1f02 | TU106 GeForce RTX 2070 | Quadro RTX 6000 |
1f04 | TU106 | Quadro RTX 6000 |
1f06 | TU106 GeForce RTX 2060 SUPER | Quadro RTX 6000 |
1ef5 | TU104GLM Quadro RTX 5000 Mobile Refresh | Quadro RTX 6000 |
1e81 | TU104 GeForce RTX 2080 SUPER | Quadro RTX 6000 |
1e82 | TU104 GeForce RTX 2080 | Quadro RTX 6000 |
1e84 | TU104 GeForce RTX 2070 SUPER | Quadro RTX 6000 |
1e87 | TU104 GeForce RTX 2080 Rev. A | Quadro RTX 6000 |
1e89 | TU104 GeForce RTX 2060 | Quadro RTX 6000 |
1e90 | TU104M GeForce RTX 2080 Mobile | Quadro RTX 6000 |
1e91 | TU104M GeForce RTX 2070 SUPER Mobile / Max-Q | Quadro RTX 6000 |
1e93 | TU104M GeForce RTX 2080 SUPER Mobile / Max-Q | Quadro RTX 6000 |
1eab | TU104M | Quadro RTX 6000 |
1eae | TU104M | Quadro RTX 6000 |
1eb0 | TU104GL Quadro RTX 5000 | Quadro RTX 6000 |
1eb1 | TU104GL Quadro RTX 4000 | Quadro RTX 6000 |
1eb4 | TU104GL T4G | Quadro RTX 6000 |
1e04 | TU102 GeForce RTX 2080 Ti | Quadro RTX 6000 |
1e07 | TU102 GeForce RTX 2080 Ti Rev. A | Quadro RTX 6000 |
1e2d | TU102 GeForce RTX 2080 Ti Engineering Sample | Quadro RTX 6000 |
1e2e | TU102 GeForce RTX 2080 Ti 12GB Engineering Sample | Quadro RTX 6000 |
1e30 | TU102GL Quadro RTX 6000/8000 | Quadro RTX 6000 |
1e36 | TU102GL Quadro RTX 6000 | Quadro RTX 6000 |
1e37 | TU102GL GRID RTX T10-4/T10-8/T10-16 | Quadro RTX 6000 |
1e38 | TU102GL | Quadro RTX 6000 |
1e3c | TU102GL | Quadro RTX 6000 |
1e3d | TU102GL | Quadro RTX 6000 |
1e3e | TU102GL | Quadro RTX 6000 |
1e78 | TU102GL Quadro RTX 6000/8000 | Quadro RTX 6000 |
1e09 | TU102 CMP 50HX | Quadro RTX 6000 |
1dba | GV100GL Quadro GV100 | Tesla V100 32GB PCIE |
1e02 | TU102 TITAN RTX | Quadro RTX 6000 |
1cfa | GP107GL Quadro P2000 | Tesla P40 |
1cfb | GP107GL Quadro P1000 | Tesla P40 |
1d01 | GP108 GeForce GT 1030 | Tesla P40 |
1d10 | GP108M GeForce MX150 | Tesla P40 |
1d11 | GP108M GeForce MX230 | Tesla P40 |
1d12 | GP108M GeForce MX150 | Tesla P40 |
1d13 | GP108M GeForce MX250 | Tesla P40 |
1d16 | GP108M GeForce MX330 | Tesla P40 |
1d33 | GP108GLM Quadro P500 Mobile | Tesla P40 |
1d34 | GP108GLM Quadro P520 | Tesla P40 |
1d52 | GP108BM GeForce MX250 | Tesla P40 |
1d56 | GP108BM GeForce MX330 | Tesla P40 |
1d81 | GV100 TITAN V | Tesla V100 32GB PCIE |
1cb6 | GP107GL Quadro P620 | Tesla P40 |
1cba | GP107GLM Quadro P2000 Mobile | Tesla P40 |
1cbb | GP107GLM Quadro P1000 Mobile | Tesla P40 |
1cbc | GP107GLM Quadro P600 Mobile | Tesla P40 |
1cbd | GP107GLM Quadro P620 | Tesla P40 |
1ccc | GP107BM GeForce GTX 1050 Ti Mobile | Tesla P40 |
1ccd | GP107BM GeForce GTX 1050 Mobile | Tesla P40 |
1ca8 | GP107GL | Tesla P40 |
1caa | GP107GL | Tesla P40 |
1cb1 | GP107GL Quadro P1000 | Tesla P40 |
1cb2 | GP107GL Quadro P600 | Tesla P40 |
1cb3 | GP107GL Quadro P400 | Tesla P40 |
1c70 | GP106GL | Tesla P40 |
1c81 | GP107 GeForce GTX 1050 | Tesla P40 |
1c82 | GP107 GeForce GTX 1050 Ti | Tesla P40 |
1c83 | GP107 GeForce GTX 1050 3GB | Tesla P40 |
1c8c | GP107M GeForce GTX 1050 Ti Mobile | Tesla P40 |
1c8d | GP107M GeForce GTX 1050 Mobile | Tesla P40 |
1c8e | GP107M | Tesla P40 |
1c8f | GP107M GeForce GTX 1050 Ti Max-Q | Tesla P40 |
1c90 | GP107M GeForce MX150 | Tesla P40 |
1c91 | GP107M GeForce GTX 1050 3 GB Max-Q | Tesla P40 |
1c92 | GP107M GeForce GTX 1050 Mobile | Tesla P40 |
1c94 | GP107M GeForce MX350 | Tesla P40 |
1c96 | GP107M GeForce MX350 | Tesla P40 |
1ca7 | GP107GL | Tesla P40 |
1c36 | GP106 P106M | Tesla P40 |
1c07 | GP106 P106-100 | Tesla P40 |
1c09 | GP106 P106-090 | Tesla P40 |
1c20 | GP106M GeForce GTX 1060 Mobile | Tesla P40 |
1c21 | GP106M GeForce GTX 1050 Ti Mobile | Tesla P40 |
1c22 | GP106M GeForce GTX 1050 Mobile | Tesla P40 |
1c23 | GP106M GeForce GTX 1060 Mobile Rev. 2 | Tesla P40 |
1c2d | GP106M | Tesla P40 |
1c30 | GP106GL Quadro P2000 | Tesla P40 |
1c31 | GP106GL Quadro P2200 | Tesla P40 |
1c35 | GP106M Quadro P2000 Mobile | Tesla P40 |
1c60 | GP106BM GeForce GTX 1060 Mobile 6GB | Tesla P40 |
1c61 | GP106BM GeForce GTX 1050 Ti Mobile | Tesla P40 |
1c62 | GP106BM GeForce GTX 1050 Mobile | Tesla P40 |
1bb8 | GP104GLM Quadro P3000 Mobile | Tesla P40 |
1bb9 | GP104GLM Quadro P4200 Mobile | Tesla P40 |
1bbb | GP104GLM Quadro P3200 Mobile | Tesla P40 |
1bc7 | GP104 P104-101 | Tesla P40 |
1be0 | GP104BM GeForce GTX 1080 Mobile | Tesla P40 |
1be1 | GP104BM GeForce GTX 1070 Mobile | Tesla P40 |
1c00 | GP106 | Tesla P40 |
1c01 | GP106 | Tesla P40 |
1c02 | GP106 GeForce GTX 1060 3GB | Tesla P40 |
1c03 | GP106 GeForce GTX 1060 6GB | Tesla P40 |
1c04 | GP106 GeForce GTX 1060 5GB | Tesla P40 |
1c06 | GP106 GeForce GTX 1060 6GB Rev. 2 | Tesla P40 |
1b87 | GP104 P104-100 | Tesla P40 |
1ba0 | GP104M GeForce GTX 1080 Mobile | Tesla P40 |
1ba1 | GP104M GeForce GTX 1070 Mobile | Tesla P40 |
1ba2 | GP104M GeForce GTX 1070 Mobile | Tesla P40 |
1ba9 | GP104M | Tesla P40 |
1baa | GP104M | Tesla P40 |
1bad | GP104 GeForce GTX 1070 Engineering Sample | Tesla P40 |
1bb0 | GP104GL Quadro P5000 | Tesla P40 |
1bb1 | GP104GL Quadro P4000 | Tesla P40 |
1bb3 | GP104GL Tesla P4 | Tesla P40 |
1bb4 | GP104GL Tesla P6 | Tesla P40 |
1bb5 | GP104GLM Quadro P5200 Mobile | Tesla P40 |
1bb6 | GP104GLM Quadro P5000 Mobile | Tesla P40 |
1bb7 | GP104GLM Quadro P4000 Mobile | Tesla P40 |
1b06 | GP102 GeForce GTX 1080 Ti | Tesla P40 |
1b07 | GP102 P102-100 | Tesla P40 |
1b30 | GP102GL Quadro P6000 | Tesla P40 |
1b38 | GP102GL Tesla P40 | Tesla P40 |
1b70 | GP102GL | Tesla P40 |
1b78 | GP102GL | Tesla P40 |
1b80 | GP104 GeForce GTX 1080 | Tesla P40 |
1b81 | GP104 GeForce GTX 1070 | Tesla P40 |
1b82 | GP104 GeForce GTX 1070 Ti | Tesla P40 |
1b83 | GP104 GeForce GTX 1060 6GB | Tesla P40 |
1b84 | GP104 GeForce GTX 1060 3GB | Tesla P40 |
1b39 | GP102GL Tesla P10 | Tesla P40 |
1b00 | GP102 TITAN X | Tesla P40 |
1b01 | GP102 GeForce GTX 1080 Ti 10GB | Tesla P40 |
1b02 | GP102 TITAN Xp | Tesla P40 |
1b04 | GP102 | Tesla P40 |
179c | GM107 GeForce 940MX | Tesla M10 |
17c2 | GM200 GeForce GTX TITAN X | Tesla M60 |
17c8 | GM200 GeForce GTX 980 Ti | Tesla M60 |
17f0 | GM200GL Quadro M6000 | Tesla M60 |
17f1 | GM200GL Quadro M6000 24GB | Tesla M60 |
17fd | GM200GL Tesla M40 | Tesla M60 |
1617 | GM204M GeForce GTX 980M | Tesla M60 |
1618 | GM204M GeForce GTX 970M | Tesla M60 |
1619 | GM204M GeForce GTX 965M | Tesla M60 |
161a | GM204M GeForce GTX 980 Mobile | Tesla M60 |
1667 | GM204M GeForce GTX 965M | Tesla M60 |
1725 | GP100 | Tesla P40 |
172e | GP100 | Tesla P40 |
172f | GP100 | Tesla P40 |
174d | GM108M GeForce MX130 | Tesla M10 |
174e | GM108M GeForce MX110 | Tesla M10 |
1789 | GM107GL GRID M3-3020 | Tesla M10 |
1402 | GM206 GeForce GTX 950 | Tesla M60 |
1406 | GM206 GeForce GTX 960 OEM | Tesla M60 |
1407 | GM206 GeForce GTX 750 v2 | Tesla M60 |
1427 | GM206M GeForce GTX 965M | Tesla M60 |
1430 | GM206GL Quadro M2000 | Tesla M60 |
1431 | GM206GL Tesla M4 | Tesla M60 |
1436 | GM206GLM Quadro M2200 Mobile | Tesla M60 |
15f0 | GP100GL Quadro GP100 | Tesla P40 |
15f1 | GP100GL | Tesla P40 |
1404 | GM206 GeForce GTX 960 FAKE | Tesla M60 |
13d8 | GM204M GeForce GTX 970M | Tesla M60 |
13d9 | GM204M GeForce GTX 965M | Tesla M60 |
13da | GM204M GeForce GTX 980 Mobile | Tesla M60 |
13e7 | GM204GL GeForce GTX 980 Engineering Sample | Tesla M60 |
13f0 | GM204GL Quadro M5000 | Tesla M60 |
13f1 | GM204GL Quadro M4000 | Tesla M60 |
13f2 | GM204GL Tesla M60 | Tesla M60 |
13f3 | GM204GL Tesla M6 | Tesla M60 |
13f8 | GM204GLM Quadro M5000M / M5000 SE | Tesla M60 |
13f9 | GM204GLM Quadro M4000M | Tesla M60 |
13fa | GM204GLM Quadro M3000M | Tesla M60 |
13fb | GM204GLM Quadro M5500 | Tesla M60 |
1401 | GM206 GeForce GTX 960 | Tesla M60 |
13b3 | GM107GLM Quadro K2200M | Tesla M10 |
13b4 | GM107GLM Quadro M620 Mobile | Tesla M10 |
13b6 | GM107GLM Quadro M1200 Mobile | Tesla M10 |
13b9 | GM107GL NVS 810 | Tesla M10 |
13ba | GM107GL Quadro K2200 | Tesla M10 |
13bb | GM107GL Quadro K620 | Tesla M10 |
13bc | GM107GL Quadro K1200 | Tesla M10 |
13bd | GM107GL Tesla M10 | Tesla M10 |
13c0 | GM204 GeForce GTX 980 | Tesla M60 |
13c1 | GM204 | Tesla M60 |
13c2 | GM204 GeForce GTX 970 | Tesla M60 |
13c3 | GM204 | Tesla M60 |
13d7 | GM204M GeForce GTX 980M | Tesla M60 |
1389 | GM107GL GRID M30 | Tesla M10 |
1390 | GM107M GeForce 845M | Tesla M10 |
1391 | GM107M GeForce GTX 850M | Tesla M10 |
1392 | GM107M GeForce GTX 860M | Tesla M10 |
1393 | GM107M GeForce 840M | Tesla M10 |
1398 | GM107M GeForce 845M | Tesla M10 |
1399 | GM107M GeForce 945M | Tesla M10 |
139a | GM107M GeForce GTX 950M | Tesla M10 |
139b | GM107M GeForce GTX 960M | Tesla M10 |
139c | GM107M GeForce 940M | Tesla M10 |
139d | GM107M GeForce GTX 750 Ti | Tesla M10 |
13b0 | GM107GLM Quadro M2000M | Tesla M10 |
13b1 | GM107GLM Quadro M1000M | Tesla M10 |
13b2 | GM107GLM Quadro M600M | Tesla M10 |
1347 | GM108M GeForce 940M | Tesla M10 |
1348 | GM108M GeForce 945M / 945A | Tesla M10 |
1349 | GM108M GeForce 930M | Tesla M10 |
134b | GM108M GeForce 940MX | Tesla M10 |
134d | GM108M GeForce 940MX | Tesla M10 |
134e | GM108M GeForce 930MX | Tesla M10 |
134f | GM108M GeForce 920MX | Tesla M10 |
137a | GM108GLM Quadro K620M / Quadro M500M | Tesla M10 |
137b | GM108GLM Quadro M520 Mobile | Tesla M10 |
137d | GM108M GeForce 940A | Tesla M10 |
1380 | GM107 GeForce GTX 750 Ti | Tesla M10 |
1381 | GM107 GeForce GTX 750 | Tesla M10 |
1382 | GM107 GeForce GTX 745 | Tesla M10 |
1340 | GM108M GeForce 830M | Tesla M10 |
1341 | GM108M GeForce 840M | Tesla M10 |
1344 | GM108M GeForce 845M | Tesla M10 |
1346 | GM108M GeForce 930M | Tesla M10 |
三、创建虚拟机(Win11)
在PVE上创建一个Win11虚拟机
资源下载
# WINDOWS镜像ISO
https://next.itellyou.cn/
# virtio-win驱动
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
四、安装虚拟机(Win11)
启动虚拟机,开始安装Win11
五、配置虚拟机(Win11)
1)安装virtio驱动
安装好Win11后,把Virtio驱动给打上,进到CD光驱盘运行virtio-win-guest-tools
直接下一步直至安装完成
2)启用QEMU Guest Agent
安装好后,PVE的虚拟机概要处上可以看到ip信息
,如果看不到ip信息,请在关闭虚拟机,在虚拟机的选项
中,启用QEMU Guest Agent
3)开启RDP远程桌面
在系统设置开启RDP远程桌面
4)允许RDP显卡加速
RDP 支持无显卡运行,在远程桌面的时候默认是不调用显卡,可以开启它,让它支持显卡加速。
首先打开虚拟机上的组策略gpedit.msc
,依次找到计算机配置->管理模板->Windows组件->远程桌面服务->远程桌面会话主机->远程会话环境
在右边选择将硬件图形适配器应用于所有远程桌面服务会话 右键编辑
,选择已启用
,确定保存。
5)解除RDP 30帧限制
RDP 默认的帧率限制在30帧,可以设置为60帧传输。
在注册表打开该路径 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations
在空白处右键->新建->DWORD(32位)值
,命名为DWMFRAMEINTERVAL
,双击刚添加的这一项,基数选择为十进制
,数值数据填写15
,确定保存重启生效。
6)关闭防火墙
关闭Windows防火墙,或者放行3389远程桌面端口
7)关闭睡眠/屏幕
在系统设置中,把屏幕超时改为从不
六、配置VDI角色
在PVE的角色菜单创建一个VDIVMUsers
的角色,并分配以下特权:VM.Audit
VM.Console
VM.PowerMgmt
VM.Monitor
。
角色权限说明:
VM.Audit
权限说明:允许查看/审计虚拟机的配置和状态(只读权限)。
典型操作:查看虚拟机列表、检查虚拟机设置、监控资源使用情况。
VM.Console
权限说明:允许通过控制台访问虚拟机(如NoVNC、SPICE或xterm.js)。
典型操作:通过Web界面打开虚拟机的图形控制台或串行终端。
VM.PowerMgmt
权限说明:允许对虚拟机进行电源管理操作。
典型操作:启动、停止、重启、暂停虚拟机。
VM.Monitor
权限说明:允许查看虚拟机的实时监控数据(如CPU、内存、磁盘I/O等)。
典型操作:在PVE界面中查看性能图表或使用qm monitor命令。
七、配置VDI用户
在PVE的用户菜单创建一个1000
的用户。其中领域选择Proxmox VE authentication server
。
添加好后就能看到用户了,同时在这个页面还支持修改、删除用户信息和密码。
八、给VDI用户分配虚拟机使用权
在PVE里选中要给VDI用户的虚拟机,点击权限
,选择添加
,把刚才添加的用户和角色选择进来即可。
到这服务端的设置全部完成了,可以退出root
账户,使用VDI账户
登录PVE管理后台,网页进行管理资源了,由于网页管理虚拟机只有vnc窗口,要想使用完整云桌面功能还是得配置个瘦客户端,接着我们来设置瘦客户端。
客户端部分
PVE的VDI客户端,个人觉得比较简单好用的一个是Github开源的 PVE-VDIClient另一个是梨儿方科技开发的 PXVDI。2款都支持主流的SPICE和RDP协议,满足日常云桌面需求。该云桌面OS是基于轻量级 Linux 发行版 Porteus作为底层 x86_64架构。系统资源占用率低,即使在老旧的硬件上也能流畅运行,很适合放在瘦客户机上跑。系统集成了PVE VDIClient 和 PXVDI 2款PVE的VDI的客户端模块,以及一些常用的远程软件如向日葵、ToDesk、RustDesk、sunshine串流,Parsec串流。
一、配置PVE VDIClient客户端
PVE-VDIClient开源且免费,支持RDP和SPICE协议
1)打开终端,切换到root权限,去编辑VDIClient的配置文件
将自己正确的PVE地址填入即可。
# 切换root权限
sudo -i
# 使用nano命令编辑vdiclient.ini文件
nano /etc/vdiclient/vdiclient.ini
在节点,主机这里能查看到自己PVE的主机名
2)配置sudo
允许guest
用户提权,做这步是为了在重定向USB设备防止权限不足。
# vi命令编辑sudoers文件
sudo visudo
# 在文件末尾添加以下参数,允许 guest 无密码运行所有命令
guest ALL=(ALL) NOPASSWD: ALL
最后就是给软件加上sudo权限右键软件快捷方式,点击属性,在命令前面加上sudo
即可提权。
3)登录 PVE VDIClient客户端,输入服务端创建好的用户1000
。进行登录
4)登录进来就可以使用RDP协议
进行远程了。
5)如要切换成SPICE协议,需要调整一下虚拟机配置。将显示调整为SPICE,并添加USB和音频重定向。显示:调整为Spice单显示器,SPICE dual monitor表示为2个显示器,最多可添加4个显示器
USB:添加USB,后端选择spice。添加几个USB就代表客户端支持多少个USB重定向
音频:添加声卡,设备选择ich9-intel-hda 后端选择spice
6)同时在虚拟机的选项
处,把SPICE增强
启用。
返回客户端就可以使用SPICE协议
进行远程了。
二、配置PXVDI客户端
PXVDI客户端由梨儿方科技开发,支持RDP、SPICE、VMware Horizon(blast/pcoip)3个协议
1)打开PXVDI客户端,在设置中配置好服务器信息并保存。
2)高级设置中,还可以对各个协议进行定制调整。
高级设置
全屏开关
控制软件是否全屏,以及以后的连接是否全屏。所有的协议均能控制Debug
启用DEBUG模式自动登录
用户登录客户端后,自动登录到虚拟机允许还原
允许用户使用快照回滚桌面连接方式
可选SPICE/Freerdp/Horizon协议。freerdp设置
freerdp版本:配置freerdp的版本,3是最新版本,修复了2存在的bug,2是稳定版本。
编解码:配置freerdp的解码方式,推荐使用420,如果不支持硬件解码,请使用软件解码
色深:配置freerdp的色彩深度,值越大,色彩越好。
缩放:配置freerdp的缩放比率,适合在高分辨率屏中使用
网络速率:wan外网,lan内网,auto自动VMware设置
连接协议:Blast和PCOIP,PCOIP适合性能差的瘦客户机。
状态栏开关:是否显示连接的状态栏,开启后,可以在云桌面中显示高级选项,如USB重定向,配置连接解码方式等网关设置:
AD模式:将用户的登录信息作为云桌面的登录账户,用户无需输入2次密码,如果配置自动登录,用户可以开机登录到桌面。需要云桌面和服务器端加域。
使用网关:配置使用rdp的网关。在ipv6启用的情况下,会忽略网关。
使用用户账号密码:将用户的账户密码作为rdp网关凭据
网关账号:rdp网关账号
网关密码:rdp网关密码。 该功能可以让外部客户端访问内网桌面。iP设置
是否开启IPV6资源设置:
多监视器:允许使用多个屏幕,勾选此项之后,无论是否全屏,云桌面都会全屏。
驱动器重定向:允许重定向瘦客户端的磁盘,如移动磁盘、内置磁盘等等。
声音重定向:允许云桌面播放声音,并从瘦客户端发出来。
打印重定向:允许云桌面使用本地打印机。
usb重定向:允许云桌面读取本地的USB设备。
麦克风重定向:允许云桌面使用麦克风。
剪切板重定向:运行云桌面进行剪切板同步。
3)登录PXVDI客户端,输入服务端创建好的
用户1000
进行登录。格式:用户@pve

4)登录进来就能正常远程了。PXVDI客户端更多的使用教学建议到官方文档查阅:PXVDI文档

三、配置Horizon客户端
PVE本身不支持VMware Horizon(blast/pcoip)这类协议,但是可以通过在PVE虚拟机安装Horizon Agent插件直连的方式来实现使用VMware Horizon Client客户端连接我们的PVE虚拟机
1)需要在Win11虚拟机上将Omnissa-Horizon-Agent
和Omnissa-Horizon-Agent-Direct-Connection
安装包下载到虚拟机。资源下载
# Horizon-Agent
https://yun.yangwenqing.com/Vmware/Omnissa_Horizon/Horizon_8_2503/Omnissa-Horizon-Agent-x86_64-2503-8.15.0-14304348675.exe
# Horizon-Agent-Direct-Connection
https://yun.yangwenqing.com/Vmware/Omnissa_Horizon/Horizon_8_2503/Omnissa-Horizon-Agent-Direct-Connection-x86_64-8.15.0-14304348675.exe
2)由于我们PVE是没有安装Horizon Connection Server
服务的,安装时得从命令行安装 Horizon Agent,跳过Horizon Connection Server 注册的参数。相关说明可见官方Horizon Agent使用文档
# 管理员运行CMD,安装 Horizon Agent时加入安装/v VDM_SKIP_BROKER_REGISTRATION=1参数
Omnissa-Horizon-Agent-x86_64-2503-8.15.0-14304348675.exe /v VDM_SKIP_BROKER_REGISTRATION=1
执行后会弹出安装窗口,按提示安装即可。
3)接着安装Horizon-Agent-Direct-Connection
这个双击运行安装就行,不需要命令行安装。
4)安装好后重启虚拟机。通过虚拟机IP使用Horizon客户端连接即可。
5)到这PVE虚拟机也可以使用VMware Horizon(blast/pcoip)
这类协议了。
四、游戏党配置Sunshine串流
在云端玩游戏推荐采用串流的方式,使用RDP或者SPICE协议来玩游戏会出现丢帧体验不好,建议采用Sunshine串流或Parsec串流方式。客户端云桌面OS已经集成了moonlight,Parsec2款串流工具。只需要在虚拟机配置好串流设置就行,并在虚拟机添加个音频。不然游戏没有声音。
Sunshine+Moonlight串流教学可以看这视频
异地访问
要让云桌面在异地也能正常使用,可以通过公网+端口映射
或者VPN组网
的方式。如果没有公网也可以在腾讯云或者阿里云买台vps做端口转发。下边演示在本地爱快做端口映射实现异地访问。在此之前你需要将宽带改桥接在爱快上拨号
,并且宽带运营商有提供公网ipv4
或者ipv6
就可以继续往下看了。
IPV4
服务端信息
OS:PVE8.4.5
主机名:pve8.lan
IPv4地址:10.10.10.252
PVE管理端口:8006
Spice API端口:3128
1)在爱快的端口映射分别将
8006
和3128
端口映射。如果运营商给你分配的是动态ipv4那你还需要做ddns。

2)返回到瘦客户端OS将公网信息填写到
PVE VDIClient客户端
或PXVDI客户端
PVE VDIClient客户端修改
nano /etc/vdiclient/vdiclient.ini

PXVDI客户端直接在服务器配置填写公网IP或者域名即可

IPV6
待更新...
集群管理
当服务端资源不足了,后面想再增加几台机器做服务端,那么可以在PVE创建集群,把各个服务端节点加入到集群集中管理。
创建PVE集群
在任意一个服务端创建集群作为主节点
,创建集群直接在web
创建。步骤:数据中心 ➡️ 集群 ➡️ 创建集群 ➡️ 设置集群名称 ➡️ 选择网络 ➡️ 创建集群
加入PVE集群
加入集群需要确保节点下没有虚拟机/LXC 容器才可以正常加入集群。在需要加入的节点点击步骤:数据中心 ➡️ 集群 ➡️ 加入集群 ➡️ 粘贴集群加入信息 ➡️ 输入集群 root 密码 ➡️ 选择网络确认加入集群
如果用弄成高可用分布式的集群方案可以看这篇文章。