ProxmoxVirtual(PVE)搭建VDI桌面虚拟化

作者: seamus 分类: kvm 发布时间: 2023-03-13 17:46

本人比较喜欢linux,一直想找个开源的VDI方案。最近刚好看到国外的大神做了一个开源的VDI客户端。就结合国外教程和自己的一些小经验在此做个笔记!

一)首先你的用PVE搭建好服务器,我这用的是PVE7.3,详细的搭建过程因为很简单我就这不描述了。

二)创建虚拟机

这里需要注意一些,显卡要选SPICE,机型要选Q35,Qemu勾选(方便在PVE后台看到IP地址),因为这里装的是WIN11,所以需要用UEFI的BIOS,需要添加TPM(不然无法安装启动)

总线要选SATA的

类别选用HOST(就是把真实的CPU传递给虚拟机,方便有更好的性能),当然你也可以选虚拟化的CPU

虚拟机创建好之后就可以启动安装windows了!这个要原版安装就行。就不截图了!

安装好虚拟机后需要打驱动!我这里使用的是最新的virtio-win-0.1.225

你可以点击上面的超链接进行下载。

下载完后通过PVE的后台上传上去

 

在虚拟机硬件这里修改ISO文件

找到这个文件然后安装。就能把所有的驱动安装上!

三)为VDI做准备

这里要把SPICE增强开启,不然与瘦客户机的带宽传输就会很大!CPU的负载也很大。选择瘦客户机的时候尽可能选择单核高频的瘦客户机,这玩意吃单核性能,多核用处不大!filter是最理想的选项,丢帧和画质相对来说可以接受,选ALL的话画面撕裂太严重!

然后添加音频重定向,这样才可以把虚拟机的音频传到瘦客户机上。

这里是添加USB重定向。到这里服务器的硬件设置就完成了!

下面是权限设置

是创建角色(你可以理解为windows的用户组),名称你可以自己填一个自己想要的,特权最少要添加图中这三个

按照图中指引添加用户(用户名你可以自己编一个,不一定要按照我的)

路径就是你要授权的虚拟机,用户就是刚新建的用户,角色就是刚新建的

到此服务器上的设置就完成了!

四)瘦客户机设置

这里瘦客户机使用 Raspberry Pi OS(32 位)Bullseye 版本 2022-01-28 和 Debian Bullseye 版本 11.2.0 做示例。

瘦客户机为树莓派的前置工作

首先更新一下系统
sudo apt update && sudo apt upgrade -y

安装必要的组件
sudo apt install python3-pip python3-tk python3-pyside2* virt-viewer git -y

pip3 install proxmoxer PySimpleGUI PySimpleGUIQt

pip3 install --upgrade PySimpleGuiQt==0.35.0 --no-deps

获取VDI的开源代码(这里自备代理)
git clone https://github.com/joshpatten/PVE-VDIClient.git
如果你没办法直接克隆拉到上面的文件就用下面的代码吧(如果你的系统没有wget,用命令安装一下apt install wget -y) 
wget -c https://www.zajilu.com/share/PVE-VDIClient.tar.gz 
tar -zxvf PVE-VDIClient.tar.gz
然后切换到目录
cd ./PVE-VDIClient

授权
chmod +x vdiclient.py

瘦客户机为X86 Debian的前置工作

获取最新的系统
sudo apt update && sudo apt upgrade -y

安装必要的徐建
sudo apt install python3-pip python3-tk virt-viewer git -y

pip3 install proxmoxer PySimpleGUI PySimpleGUIQt

获取开源代码(自备代理)
git clone https://github.com/joshpatten/PVE-VDIClient.git
如果你没办法直接克隆拉到上面的文件就用下面的代码吧(如果你的系统没有wget,用命令安装一下apt install wget -y)
wget -c https://www.zajilu.com/share/PVE-VDIClient.tar.gz
tar -zxvf PVE-VDIClient.tar.gz
然后切换到目录
cd ./PVE-VDIClient
授权
chmod +x vdiclient.py

写一个配置文件放/etc/vdiclient方便以后操作

创建文件夹
sudo mkdir -p /etc/vdiclient

创建配置文件
sudo nano /etc/vdiclient/vdiclient.ini

 

填入以下内容

[General]
title = apalrd VDI
icon=vdiicon.ico
logo=vdilogo.png
kiosk=false

[Authentication]
auth_backend=pve
auth_totp=false
tls_verify=false

[Hosts]
<Proxmox IP or DNS name> =8006

 

这里需要注意:你要在etc/hosts文件里写入你PVE服务器的解析,不然后面的VDI客户端会提示找不到SPICE的代理服务器

如果你瘦客户机有多个用户就复制以下文件到指定文件夹。反正我都按照作者要求做了

#复制vdiclient.py 到本地的 bin文件夹
sudo cp vdiclient.py /usr/local/bin/vdiclient
复制图片文件
sudo cp vdiclient.png /etc/vdiclient/
sudo cp vdiicon.ico /etc/vdiclient/

 

如果你不想设置开机启动,就不用往下看了!你可以直接输入

/usr/bin/python3 ~/PVE-VDIClient/vdiclient.py

就能看到VDI程序了!

下面我们这设置开机自动启动VDI客户端程序

对于X86的Debian

切换目录
cd /etc/xdg/lxsession/LXDE
备份配置文件
sudo mv autostart autostart.bak
创建一个空白的配置文件
sudo touch autostart
确认有这个目录,没有的话就创建
mkdir -p ~/.config/lxsession/LXDE
切换到目录
cd ~/.config/lxsession/LXDE
备份配置文件
mv autostart autostart.bak
创建新的配置文件
nano autostart

 

对于 Pi 操作系统:

切换目录
cd /etc/xdg/lxsession/LXDE-pi
备份配置文件
sudo mv autostart autostart.bak
创建一个空白的启动文件
sudo touch autostart
创建文件夹
mkdir -p ~/.config/lxsession/LXDE-pi
切换目录
cd ~/.config/lxsession/LXDE-pi
备份配置文件
mv autostart autostart.bak
创建一个新的
nano autostart

 

创建一个新的文件,这个文件的路径如下。user这个目录根据你当前用户名不同而不同。

@/usr/bin/bash /home/<user>/thinclient

 

我们根据实际情况写入该文件 ( nano ~/thinclient):

#cd into the PVE-VDIClient directory so local paths to images work
cd ~/PVE-VDIClient
#Run loop for thin client so user can't close it
while true
do
    /usr/bin/python3 ~/PVE-VDIClient/vdiclient.py
done

 

注意:以上是作者的原代码,实际操作是有坑的,按照他这样写的话开机会提示找不到文件,无法进入图形界面,无法启动系统。只能从救援模式去修复!

cd ~/PVE-VDIClient

 

这一段你要填入的是PVE-VDIClient这个文件夹的绝对路径!你实在不知道就切换到该目录用PWD命令获取!

对于 Raspberry Pi OS,运行sudo raspi-config并选择启动模式到 Desktop Autologin,就是这样。raspi-config为您处理剩下的事情。

对于 Debian,我们需要进行编辑/etc/lightdm/lightdm.conf以便为我们的用户启用自动登录。找到包含的行#autologin-user=并取消注释,添加您自己的用户名(即autologin-user=你装Debian创建的用户名)。

恢复桌面

如果您犯了一个严重的错误并希望您的桌面返回调试它,只需将自动启动文件移回并重新启动:

对于 Debian:

cd ~/.config/lxsession/LXDE
mv autostart autostart.new
mv autostart.bak autostart
cd /etc/xdg/lxsession/LXDE
mv autostart autostart.new
mv autostart.bak autostart

 

对于 Pi 操作系统:

cd ~/.config/lxsession/LXDE-pi
mv autostart autostart.new
mv autostart.bak autostart
cd /etc/xdg/lxsession/LXDE-pi
mv autostart autostart.new
mv autostart.bak autostart

 

当然,您可以在使用完桌面后执行相反的操作(autostart -> .bak 和 .new -> autostart)

引用文章地址:https://www.apalrd.net/posts/2022/raspi_spice_vdi/