家庭/中小企业免费的云桌面VDI方案–VDI for PVE
本文最后更新于240 天前,其中的信息可能已经过时,如有错误请发送邮件到yqf@yqf.link

近年来,随着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网卡PCIE7个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)默认创建了一个用户为1000VDI账号,可用于登录瘦客户机做测试,如不需要删除即可。账号:1000密码:12345678

云桌面OS镜像说明(客户端)

1)基于轻量级 Linux 发行版 Porteus5.0作为底层 x86_64架构;
2)该镜像大小886.1MB,支持U盘启动ISO镜像启动硬盘启动支持BIOS及UEFI双模式启动
3)默认登录为Guest用户,密码:guest提权需要root密码:toor
4)集成PVE VDIClientPXVDI客户端模块,支持 Spice、RDP、VNC 、Horizon等主流协议;
5)模块还加入了常用远程软件如向日葵、ToDesk、RustDesk、Sunshine串流,Parsec串流
6)支持无桌面模式,开机自动运行云桌面客户端,登录后自动进入虚拟机;

教程正式开始

服务端部分

服务端将采用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服务才支持的显卡如下:

PVE8.2 NVIDIA显卡虚拟化多开VGPU17.0基于P106-100–游戏篇

顺带接有偿部署,有需要点击链接闲鱼与我联系PVE8.2 NVIDIA显卡虚拟化多开VGPU17.0基于P106-1…

三、创建虚拟机(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个协议,Linux端的客户端全部免费使用,最后一个支持直连模式是3.0.7版本,之后的版本仅维护总控模式。总控模式接入AD域,更合规和统一管理,有这方面需求可以访问官网了解报价

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-AgentOmnissa-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是没有安装Horizo​​n Connection Server服务的,安装时得从命令行安装 Horizo​​n Agent,跳过Horizo​​n Connection Server 注册的参数。相关说明可见官方Horizo​​n Agent使用文档

# 管理员运行CMD,安装 Horizo​​n 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串流教学可以看这视频

https://player.bilibili.com/player.html?isOutside=true&aid=1455305298&bvid=BV13i421U7zf&cid=1570908133&p=1

异地访问

要让云桌面在异地也能正常使用,可以通过公网+端口映射或者VPN组网的方式。如果没有公网也可以在腾讯云或者阿里云买台vps做端口转发。下边演示在本地爱快做端口映射实现异地访问。在此之前你需要将宽带改桥接在爱快上拨号,并且宽带运营商有提供公网ipv4或者ipv6就可以继续往下看了。

IPV4

服务端信息
OS:PVE8.4.5
主机名:pve8.lan
IPv4地址:10.10.10.252
PVE管理端口:8006
Spice API端口:3128

1)在爱快的端口映射分别将80063128端口映射。如果运营商给你分配的是动态ipv4那你还需要做ddns。

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

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

IPV6

待更新…

集群管理

当服务端资源不足了,后面想再增加几台机器做服务端,那么可以在PVE创建集群,把各个服务端节点加入到集群集中管理。

创建PVE集群

在任意一个服务端创建集群作为主节点,创建集群直接在web创建。
步骤:数据中心 ➡️ 集群 ➡️ 创建集群 ➡️ 设置集群名称 ➡️ 选择网络 ➡️ 创建集群

加入PVE集群

加入集群需要确保节点下没有虚拟机/LXC 容器才可以正常加入集群。在需要加入的节点点击
步骤:数据中心 ➡️ 集群 ➡️ 加入集群 ➡️ 粘贴集群加入信息 ➡️ 输入集群 root 密码 ➡️ 选择网络确认加入集群

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
春节
快乐