Understanding real tradeoffs with using a local desktop GUI (dev mode) directly on server vs remote

peg2024q

New Member
May 8, 2024
3
1
3
I've seen some posts and articles suggesting against this, but I mostly see things like "you'll regret it" and "Proxmox is for server", but I am not getting a lot of details of substantive issues that would make this bag for my situation.

Here is my use case: I recently purchased a new desktop which is overkill for most of my needs. On my 6 year old laptop, I run windows and sometimes some docker containers. On the new desktop, I want to move to NixOS, but will still need windows sometimes. In addition, with the beefier system there are a few more things I want to setup in their own vm/docker like JellyFin, and a common file server between systesm.

I understand that I could just run NixOS and then spin up a vm or docker when needed, but I would like to not layer VMs and keep things more seperate/isolated. I understand "Linux is Better (TM)", but on windows sometimes docker would just lock up leading to a system reset, so I would rather have all of these different systems running at the same layer rather than inside of the main os (e.g., I could restart main os without taking down JellyFin).

My new system is a Ryzen 5950X + Nvidia Geforce RTX 3090 and for whatever reason the previous owner included 4 hard drives. This is a lot of CPU cores, lot of video processing and memory, and storage. My original plan was to get a moderate good computer then setup proxmox on an older computer. However, on a daily basis I will be doing basic productivity and Internet stuff. A few times a week I need to render videos or 3d models which was not reasonable on the old laptop.

My thought was since I have this overpowered machine, why waste space and electricity on the old machine that will perform less well? Using an older desktop would also be another machine to hook up to eat battery on the UPS. If I could get everything running virtually and "in parallel / same layer" it seems like less to manage. If I really needed it I could turn off some of the other services (would be for home, nothing Internet facing that needs to be up). I could set core affinity, etc? I probably only need passthrough of the graphics card to one vm at a time (or can i share it across VMs?). If I understand correctly, the actual VMs are the ones that need the GPU, I would still be accessing through VNC, spice, etc and the onboard graphics should be fine ?


The premise I see in guides/videos is that you can get near real time usage over the network with a VM running on Proxmox, do video editing, even game. Why is this worse using a lightweight DM directly on the box, shouldn't there be negligible lag over VNC or something with a better protocol / codec, etc. compared to any real/physical network lag?

Is it just the overhead of a virtual desktop compared to native like overriding some keyboard shortcut? I've used VMs inside of another host in the past and tolerated it; all of the things I read make it seem like running a remote desktop locally is somehow worse then booting VirtualBox and then launching the VM. Why would I want to have this power house machine running my VMs and then deal with network lag running from the old laptop, a pi, etc.?

Is the issue something like the local desktop manager / environment crashes and then crashes the rest of the system and VMs? Are the big issues performance, usability, reliability? Dependencies to mange outside of the VMs or proxmox; even if it gets blown away in an upgrade, seems simple to setup the local gui environment again.


Examples where I see discussions:

Wiki page on setting up local environment:
https://pve.proxmox.com/wiki/Developer_Workstations_with_Proxmox_VE_and_X11
 
One possible way of doing this, as I see it, is pass through GPU and a USB controller to your NixOS VM and leaving Windows running emulated GPU.
Then you can have NixOS connected to monitor/keyboard/mouse just like, well, like its not a VM and remote desktop to Windows when necessary.

Of course Windows will be sluggish with this setup, but I guess that's not a real problem, yes?
 
Proxmox is a flexible hypervisor built on Debian. If you want to make it into a desktop you absolutely can.

I would recommend a -very- lightweight window manager such as fluxbox or icewm. XFCE4 is also fairly lightweight and has a lot of features, YMMV. You can keep track of RAM usage with ' top ' and the like (hit capital M to sort by RAM usage.)

Just be aware that desktop usage will take X amount of CPU and RAM resources away from VMs and containers, and try to use a lightweight web browser with a minimum number of tabs open so you're not impacting the system too much. You don't want your browser using like 2GB!

EDIT: be aware that VNC is not the only remote desktop available, if you want better speed then test Nomachine NX - and maybe look into 2.5Gbit networking, it's gotten to be just about as cheap as 1Gbit.
 
Last edited:
Basically you have 2 general possibilities.

1. The one you allude to: Passthrough the GPU+KEYB+MOUSE (USB) etc. to a VM & access other VMs or LXCs (or PVE GUI) through web browser on that VM.

2. The one Kingneutron alludes to: Install a Desktop + Web browser on PVE host + access everything else from there.

Be aware that both options will still be accessing other VMs etc. through the network - not exactly locally.

Route 1, will have a disadvantage, that should you need to actually access the real console of the PVE host (it happens!) - there will be no console connection - unless you add a second GPU. (Your Ryzen 5950X doesn't have it's own AFAIK).

Route 1 has another possible failure point - that should the VM OS (running on the PC) freeze/crash for any reason (it happens!) - you'll be stuck needing to power down the whole PVE host through it's power button. Alternatively, you could then access the PVE instance from a different PC/Laptop to reboot the VM.

On the whole though I think its doable - search these forums for users who have done it - I like the economy of resources.
 
  • Like
Reactions: Kingneutron
Thanks for the responses so far. I think my initial plan was actually number 2: PVE is runing bare metal and on that I run the desktop manager. I think, if trying to use the keyboard on the PVE server itself, I still need a desktop on PVE, or are you saying I could boot directly into the one VM that is my main driver, such that I get all the local connected harware and every other VM/container just get virtualized.

I see a few times it is mentioning the browser. Would I not be better using a dedicated app in the window environment vs the browser? E.g., TightVNC, xrdp, nomachine, etc. ?

My motherboard does have its own graphics. My thought was that I would essentially need the most simple desktop environment that could launch the client. To manage PVE, I would use the browser I guess since there is no native client (?)

Be aware that both options will still be accessing other VMs etc. through the network - not exactly locally.
Does this mean it needs it will actually go out the wire and back? I though perhaps there was something local emulated network to go between machines.. still the network, but with the latency inside of PCIe not cat5 (?)

In terms of performance, I am coming from a laptop without dedicated graphics and a much slower processors, going from 16->64gb so generally I would still think everything would be faster.

What I am more concerned about is if there would be continuous hiccups or other problems.

One thing I also wanted to clarify, if I am running the local desktop accessed with keyboard attached to server is this still Type I vs Type II hypervisor or am I loosing some benefit (e.g., run ANY base OS and just don't use base OS?). From my research on PVE I think i get a lot of other hardware management and benefits, but would still welcome more thoughts especially from anyone who is runnin such a setup daily.
 
Does this mean it needs it will actually go out the wire and back?
Yes. AFAIK. If your NW goes down then in option 1 (above) you'll still be able to use the main VM OS on the machine (basically, but dependent on how its configured, storage etc.) - but have no access to NW, including no access to PVE itself or other VMs & LXCs. With option 2, you'll have full access to PVE itself (OS console CLI with basic PVE control over it's VMs & LXCs) - but no Web GUI for proper use access to all VMs & LXCs - but you'll still have control over PVE from a local perspective. (I believe but IDK, that SSH & WEB GUI or not exposed over the localhost 127.0.0.1, but I guess this could be modified/manipulated). In all events it will be an "interesting" experience.

I though perhaps there was something local emulated network to go between machines.
There is on localhost 127.0.0.1, however this is only accessible to the PVE system itself, for instance when using the console & controls from the GUI itself, AFAIK. I realize technically it should be possible to use this in your scenario (would reduce almost all NW latency), but PVE is obviously not built with this scenario im mind.

I see a few times it is mentioning the browser. Would I not be better using a dedicated app in the window environment vs the browser? E.g., TightVNC, xrdp, nomachine, etc. ?
Definitely possible on a correctly setup VM. Sometimes beneficial.

What I am more concerned about is if there would be continuous hiccups or other problems.
Probably there will be problems. But you'll (have to) learn how to deal with them. One can never compare running a simple bare-metal OS to a full HV environment, add to that the "odd" setup your trying. If I can sum up what you are trying to do in one sentence, you are trying on one physical machine to have both a host & a thin client. Inevitably there will be bumps on the way. Hybrids do not equal a+b ever, they try to emulate a & b.

In terms of performance, I am coming from a laptop without dedicated graphics and a much slower processors, going from 16->64gb so generally I would still think everything would be faster.
Hard to tell, but possible/likely. As far as dedicated graphics is concerned, it depends on what you do with it as pointed out above.

if I am running the local desktop accessed with keyboard attached to server is this still Type I vs Type II hypervisor or am I loosing some benefit
PVE is what it is, a type 1 kvm-based HV, your not changing that with any scenario.

----------------------------------------------------------------------------------------------------------------------------------------

Now allow me to tell you what I think I would do in your scenario:

It looks like you don't really need a server running services all the time. What you really want is a dual/multi boot system. This will be the simplest from an installation/maintenance perspective & also resource/economy perspective. However this will depend on what your actual parallel OS demands are. Remember you've still got your Laptop.
 
I though perhaps there was something local emulated network to go between machines.

I am reading through the docs: https://pve.proxmox.com/wiki/Network_Configuration

It would seem that you can have a bridged interface as well as VM-VM vlan, etc or that
Code:
vmbr0
is actually acting as a switch, so it would just send the traffic internally and shouldn't need to go to the router like a physical switch would do.


From other sources:
https://edywerder.ch/proxmox-vlan-config/
Proxmox Server uses a model where each node can have multiple network interfaces, both physical and virtual. You typically create bridges when setting up the network on a Proxmox node. These bridges act as virtual switches to which both your physical and virtual machine (VM) network interfaces connect, enabling communication between VMs and between VMs and the outside world.
https://essgeelabs.com/posts/virtual-networking-within-proxmox/
To do this you’ll need to create virtual networks. Virtual networks are not connected to the main network and allow all the machines connected to a virtual network to communicate with each other. You can also communicate with the host server if you wish by providing an IP address.

https://forum.level1techs.com/t/setting-up-a-network-bridge-between-two-proxmox-vms/206046/2
You technically don’t even need a second bridge to make this work. Just create second virtual network card for both virtual machines and then assign VLAN tag to, let’s say, 10. Yeah, both VMs will need a static ip assigned to them on the secondary NIC inside virtual machines.

Your maximum transfer speed between two nics will depend on how powerful your CPU is I believe. On my Proxmox setup I was able to get around 4-5 Gbytes/s in iperf.

Something like this. As a bonus you can access this VLAN through your physical port and via smart switch if you wanted to.

Since I still have my old laptop, once I get the new PC all setup I will test everything and then (hopefully remember) to come back and document everything I set up and tried.

I think I would just need to create that same virtual interface on VPE itself to then access it from the lightweight local environment. Just pull the ethernet plug and I'll see what connects!
 
  • Like
Reactions: Kingneutron
Since I still have my old laptop, once I get the new PC all setup I will test everything and then (hopefully remember) to come back and document everything I set up and tried.

I think I would just need to create that same virtual interface on VPE itself to then access it from the lightweight local environment. Just pull the ethernet plug and I'll see what connects!
Would be really an interesting test. I hope you come back & tell us. I do remember reading once something of a similar trial setup - I did try today searching for it, but as you know - when you need it you can't find it!
 
  • Like
Reactions: Kingneutron

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!