云桌面之取代RDP的工具(PVE + Sunshine + Moonlight)

What-is-this-Talking-About

这份配置单涵盖了硬件基础设施、虚拟化显示方案、性能优化及串流设置,适用于我的 AMD EPYC 7551 (Home)Dual Xeon (Work) 环境。

硬件环境

Homelab配置

  • CPU: AMD EPYC 7551 (Home)
  • 主板:Supermicro H11SSL-i
  • 显卡:NVIDIA GeForce GTX 1050 Ti (4GB)

Work Server配置

  • CPU: Dual Xeon (Work)
  • 主板:白牌X99芯片组
  • 显卡:亮机卡只能给PVE使用,不希望维护时还要修改显卡直通配置,所以等同于无显卡

需求

家庭成员多,而且如果每个人使用一台笔记本或PC,首先

    1. 购买计算机的费用就很高;
    1. 其次软件维护的工作量将会很大(需要孤立的去设置每一台计算机上的软件/重装系统等);
    1. 而且家中有做PPT和轻度设计的需求,所以Mac和Win都是刚需;
    1. 作为一名工程师,很难接受家里的设备不好用的局面。例如:买一台游戏机或买一张很贵的显卡(打游戏用),总不能只能在一台PC上使用,要打游戏的人就都抢这台PC吧。
    1. NAS,把全家的资料都集中存储,极大减少资料丢失的风险,减轻资料备份的繁重工作,还有可怕的存储设备的费用(硬盘真贵啊)。

而上述这些点,就自然而然想到上云,家庭内建立一台强大的服务器Server, 硬件能够一次购买,最大化被所有人共享。
(同样的需求在公司内部也一样,因为都经我的手,所以处理方案都是用PVE,再此就不再提WorkServer的情况,默认与Homelab情况一致。)

困扰

搭建环境时,一直用RDP来连接HomeLab(安装了PVE)下的VM(有Ubuntu/Mac/Win10/Win11)。
但是发现鼠标肉眼可见的拖拽卡顿,虽然能用,但满足不了设计师的需求。更别说要远程打开设计软件和Microsoft PowerPoint了。

最终效果

最终效果

下载

功能点1. 显卡策略 (GPU Strategy)

解决 Host latency 高、顿挫感重的核心硬件方案。

  • 方案 A:通用虚拟化 (推荐 EPYC/Xeon 部署)
    • 尚未部署,但是vGPU对我是有巨大的吸引力,而且功耗是50/75w,太适合家用了,只是P4的显存少,美中不足。
    • 硬件NVIDIA Tesla P4 (8GB) + 3D打印导风罩 & 暴力风扇
    • 配置:PVE 安装 vGPU_unlock 驱动。
    • 分配:切分为 4 个 P4-2Q (2GB显存) profile,分配给 4 个 VM。
    • 用途:流畅运行 1080P/60FPS 桌面串流、轻量级任务。
  • 方案 B:高性能直通 (现有设备)
    • 已部署,且Host latency立刻从20ms~30ms降低到0ms~5ms
    • 硬件GTX 1050 Ti (4GB)
    • 配置:PVE 使用 PCIe Passthrough (直通) 模式给主力 Windows VM。
    • 分配:独占。
    • 用途:AI 入门学习 (CUDA)、4K 视频播放、轻度游戏。

功能点2. 虚拟显示解决方案 (Headless Display)

解决无物理显示器导致的黑边、分辨率锁定 (1280x800) 问题。

  • 软件IddSampleDriver (虚拟显示器驱动)。
  • 安装步骤
    1. 权限:使用管理员权限运行 installCert.bat
    2. 添加硬件:设备管理器 -> 操作 -> 添加过时硬件 -> 手动列表 -> 显示适配器 -> 从磁盘安装 -> 选择 IddSampleDriver.inf
  • 设置 (Windows Display Settings)
    1. 分辨率:手动设置为 1920 x 1080
    2. 多屏策略:选中虚拟屏幕(通常是 Screen 2),设置 “Show only on 2” (仅在 2 上显示)
    3. 清理:在设置中 “Disconnect” (断开) 多余的虚拟屏幕 (3, 4, 5, 6)。

功能点3. Windows VM 性能深度优化

针对 Xeon/EPYC 在无 GPU / 软解状态下的极限优化,降低 Host Latency。

  • 视觉效果
    • System Properties -> Advanced -> Performance -> Adjust for best performance (关闭所有动画特效)。
  • 右键菜单回滚 (降 CPU 负载)
    • 使用管理员终端运行注册表修改命令,恢复 Win10 风格菜单:
      reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
      
    • 操作:运行后重启 VM 生效。

功能点4. 串流服务设置 (Sunshine & Moonlight)

目标:在 1ms 内网延迟下,压榨 CPU 软解性能,或适配 GPU 硬解。

服务端 (Sunshine WebUI)

  • 位置Configuration -> Advanced
  • 无 GPU (Xeon 当前状态)
    • Encoder: Software / x264
    • Software Preset: Ultrafast (极速模式,牺牲画质换取低延迟,关键!)
    • Software Tune: Zerolatency
    • Threads: 手动设置 8 或 16
  • 有 GPU (P4/1050Ti)
    • Encoder: NVENC
    • Preset: P1 (Fastest) 或 P4 (Default)

客户端 (Moonlight - Ubuntu)

  • Resolution/FPS:
    • 无 GPU:1080p / 30 FPS (避免卡顿)
    • 有 GPU:1080p / 60 FPS
  • Bitrate: 10 Mbps - 15 Mbps (降低 CPU 编码压力)
  • V-Sync: Off (关闭以降低输入延迟)
  • Video Codec: H.264 (强制使用旧编码,降低编解码压力)
  • Input Settings:
    • Optimize mouse for remote desktop instead of games (开启鼠标直接映射,提升手感)。

功能点5. 键鼠无缝漫游与剪贴板 (KVM)

解决 Moonlight 鼠标锁定及剪贴板不同步问题。
其实,这一点可有可无,如果纯Thin Client做远程连接的方案,鼠标锁在Server里才是真正的用法。所以姑且将该功能点留做备份。

  • 软件Barrier (或 Input Leap)。
  • 架构
    • Server (服务端):Ubuntu Client (有物理键鼠)。
    • Client (客户端):Windows VM (被控端)。
  • 配置步骤
    1. Ubuntu 端勾选 Server,Configure Server 中拖入新屏幕,命名为 win11-vm (需与 Windows 端 Screen Name 一致)。
    2. Windows 端勾选 Client,填入 Ubuntu IP。
    3. 效果:鼠标移出屏幕边缘自动切换控制权,剪贴板共享 (文本/Ctrl+C/V)。
    4. 配合:Moonlight 中解除鼠标锁定 (Ctrl+Alt+Shift+Z) 或全屏使用。