First post, by FrankensteinTech
TL;DR: I have expanded my Retro VM Proxmox solution to include remote gaming via Sunshine/Moonlight.
NOTE: Much of this post will pull from my previous thread ( Example/How To: DOS/Windows 98 (and OS9!) Emu/Virtualization+Passthrough (over Thunderbolt!) with Proxmox (QEMU/KVM) ), which was based on Proxmox 7.4 - but I will include Proxmox 9.1 specific solutions in my Low-level explanation here.
Overview:
After getting DOS/Windows98 working with PCI passthrough (vfio) and keyboard/mouse passthrough (evdev) I decided to embark on integrating Sunshine into the above solution to allow me to play my DOS/Windows98 games via Moonlight on-the-go.Since Proxmox is just a Debian OS (with the Proxmox customizations) it wasn't too much of a lift to install it as a workstation (i.e. installing LightDM and XFCE4) - after getting XFCE4 working, I went ahead and installed Sunshine and confirmed I was able to use Moonlight to connect to my XFCE4 session, and video/audio/keyboard/mouse all worked as expected out-of-the-box.Next task was getting the DOS/Windows98 VM's video/audio/keyboard/mouse working over Moonlight:Video: Solved by purchasing a VGA/HDMI capture card with low latency (Magewell, AverMedia or similar), that supported V4L/UVC - this allowed me to view the stream from my DOS/Windows98 GPU using "Guvcview" (or OBS Studio, or whatever) within my XFCE4 session and could be seen remotely over Moonlight.Audio: Already solved in my previous thread by allowing "root" user to access PulseAudio, and configuring the VM to send the SB16/AC97 audio to the PulseAudio backend - this allowed the VM to send audio directly to my Proxmox host's speakers, which was captured by Sunshine and could be heard remotely over Moonlight.Keyboard/Mouse: Already solved in my previous thread by assigning evdev devices to the VM - but instead of assigning the evdev devices for my physical keyboard/mouse, I instead assigned the virtual keyboard/mouse evdev devices created by Sunshine.
Details/basic instructions:
NOTE: These instructions assume you have 2 GPUs in your Proxmox rig (or more) - with at least 1 of the GPUs used for the host only (for XFCE4).
- Install Proxmox 9.1 on whatever rig you plan to use (needs to support PCI passthrough though)
- Get a DOS/Windows98 VM up and running with working PCI/keyboard/mouse passthrough, using my previous thread as a reference - do not proceed until this is working.
- To get audio working on your VM under Proxmox 9.1, I would advise using the below method to allow "root" to connect to PulseAudio:
Uncomment 'ConditionUser=!root' from the below 2 files:/etc/systemd/user/default.target.wants/pulseaudio.service/etc/systemd/user/sockets.target.wants/pulseaudio.socketAdd root to 'pulse-access' group:sudo usermod -aG pulse-access rootReboot, and test access (as root):pactl infoExample argument for VM:args: -device ac97 -audio driver=pa,server=/run/user/0/pulse/native,id=audio0
- Install chromium/lightdm/xfce4/guvcview:
apt install chromium guvcview xfce4 lightdm
- Install Sunshine
wget https://github.com/LizardByte/Sunshine/releases/download/v2025.924.154138/sunshine-debian-trixie-amd64.debdpkg -i sunshine-debian-trixie-amd64.deb
- Launch XFCE4, log in as a regular user (or root, your preference) and start Sunshine, then make sure you can connect to it with Moonlight. I would also recommend testing the video/audio/keyboard/mouse over Moonlight with something basic (like a YouTube video) - do not proceed until this is working.
- Connect your DOS/Windows98 GPU's output to the capture card's input
- Launch Guvcview, and open the stream from the capture card and make it Full Screen
- SSH into Proxmox, and use the below command to check each evdev device individually to find which ones were created by Sunshine (will include the string 'passthrough' in the name):
udevadm info -a -n /dev/input/eventX | grep name
- Once you have identified which evdev devices correlate with "Keyboard passthrough" and "Mouse passthrough" you can attach them to your DOS/Windows98 VM, using my previous thread as a reference.
- Start your DOS/Windows98 VM, and if everything is working correctly you will have video/audio/keyboard/mouse working in Moonlight.
The above is a pretty basic walkthrough, and doesn't deep-dive too much - but if you already have a DOS/Windows98 VM working in Proxmox with a passed-through GPU/keyboard/mouse (and working audio) then adding Guvcview (to capture the GPU output) and Sunshine (to forward the host video/audio/keyboard/mouse to a remote machine) makes for a relatively easy remote retro gaming server.
Bonus:
If you want to leverage Moonlight's gamepad feature to control DOS/Windows98 games, you can do so using EVMAPY (or several other options that support evdev) to map gamepad inputs to keyboard/mouse inputs - the resulting evdev device(s) can be attached to the VM as an additional keyboard/mouse.