Perfect Developer Desktop

billmeyer

New Member
Sep 10, 2023
1
2
1
Been using Proxmox for a month on modest machine, Core i5 with 20GB RAM and so far extremely impressed with the Web Interface and features.
Seen some articles on either adding LXDE on Proxmox or loading Proxmox on top of Debian.
I think an out-of-the-box installation of Proxmox with lightweight GUI option with a GPU pass-through install of full desktop distro in container would make the perfect Developer workstation.
You would have the stable underlying base system, immutable, everything else in container / VMs with the benefit of the excellent Proxmox Web GUI interface. Tried something similar from the other side, Desktop OS with LXC, KVM, Podman - but the other interfaces are all clumsy the moment you got used to using the excellent Proxmox GUI.
 
Did you notice https://pve.proxmox.com/wiki/Developer_Workstations_with_Proxmox_VE_and_X11 ?

I have it on a not-so-new NUC on Wayland with Sway with a 4K Display. Using Spice I have several different Distros (only Linux) on separate Full-Screen Desktops and I can switch between them with a simple Hotkey.

Works well for my normal use cases, but it is not my daily driver. Note that "normal" will differ from person to person - ymmv!


Best regards - and welcome to the club
 
  • Like
Reactions: semanticbeeng
Did you notice https://pve.proxmox.com/wiki/Developer_Workstations_with_Proxmox_VE_and_X11 ?

I have it on a not-so-new NUC on Wayland with Sway with a 4K Display. Using Spice I have several different Distros (only Linux) on separate Full-Screen Desktops and I can switch between them with a simple Hotkey.

Works well for my normal use cases, but it is not my daily driver. Note that "normal" will differ from person to person - ymmv!


Best regards - and welcome to the club
Care to share the setup? A bit worried to mess up my proxmox setup with trial and error
Would this work? https://www.dwarmstrong.org/sway/
Also found this interesting but not sure about using with proxmox
Sway Installation on Debian Bookworm (part 1 of 4)

Wondering if wayland work with nomachine?
 
Last edited:
Care to share the setup?
Sorry, I have no documentation on how I did this. I was just playing around with an uncritical system.

A bit worried to mess up my proxmox setup with trial and error
The usual recommendation is (of course): make a backup first. This is true especially when leaving the officially documented ground (of PVE in this case).

Unfortunately the "bash_history" does not contain my setup commands for some reason. Now I just have gdm3 + sway + xwayland installed. To avoid using "root" for everything I added a normal user to login via gdm.

Then I had some wayland specific problems regarding the keyboard layout which I solved via a random internet search engine. That's the only hickup I do remember...

Code:
~# date
Fri Dec 29 01:03:07 PM CET 2023

~# pveversion
pve-manager/8.1.3/b46aac3b42da5d15 (running kernel: 6.5.11-7-pve)

This CPU is to slow to make fun:

~# lscpu | grep -A4 "^CPU(s):"
CPU(s):                             4
On-line CPU(s) list:                0-3
Vendor ID:                          GenuineIntel
BIOS Vendor ID:                     Intel(R) Corporation
Model name:                         Intel(R) Core(TM) i5-6260U CPU @ 1.80GHz

Some packages:

~# dpkg -l |grep -i -E "wayland|sway|gdm"
ii  foot                                 1.13.1-2+deb12u1                    amd64        Fast, lightweight and minimalistic Wayland terminal emulator
ii  foot-terminfo                        1.13.1-2+deb12u1                    all          Fast, lightweight and minimalistic Wayland terminal emulator (terminfo files)
ii  gdm3                                 43.0-3                              amd64        GNOME Display Manager
ii  gir1.2-gdm-1.0                       43.0-3                              amd64        GObject introspection data for the GNOME Display Manager
ii  libgdm1                              43.0-3                              amd64        GNOME Display Manager (shared library)
ii  libva-wayland2:amd64                 2.17.0-1                            amd64        Video Acceleration (VA) API for Linux -- Wayland runtime
ii  libwayland-client++1:amd64           1.0.0-4                             amd64        wayland compositor infrastructure - client library C++ bindings
ii  libwayland-client0:amd64             1.21.0-1                            amd64        wayland compositor infrastructure - client library
ii  libwayland-cursor++1:amd64           1.0.0-4                             amd64        wayland compositor infrastructure - cursor library C++ bindings
ii  libwayland-cursor0:amd64             1.21.0-1                            amd64        wayland compositor infrastructure - cursor library
ii  libwayland-egl++1:amd64              1.0.0-4                             amd64        wayland compositor infrastructure - EGL library C++ bindings
ii  libwayland-egl1:amd64                1.21.0-1                            amd64        wayland compositor infrastructure - EGL library
ii  libwayland-server0:amd64             1.21.0-1                            amd64        wayland compositor infrastructure - server library
ii  libwlroots10:amd64                   0.15.1-6                            amd64        Modular wayland compositor library - shared library
ii  sway                                 1.7-6                               amd64        i3-compatible Wayland compositor
ii  sway-backgrounds                     1.7-6                               all          Set of backgrounds packaged with the sway window manager
ii  swaybg                               1.2.0-1                             amd64        Wallpaper utility for Wayland compositors
ii  swayidle                             1.8.0-1                             amd64        Idle management daemon for Wayland
ii  xwayland                             2:22.1.9-1                          amd64        X server for running X clients under Wayland

Wondering if wayland work with nomachine?
I have no idea...


Good luck - and have fun!

----
Edit: after gathering the above information via ssh a few minutes ago I wanted to actually use it now. But: currently I am NOT able to start the Spice viewer: "Unable to connect to the graphic server...". And I am not in the mood to debug it today.
 
Last edited:
  • Like
Reactions: semanticbeeng
Rather than turn the PVE into a desktop.I have both a Mac and a win 11 PC as guest VM's together with a debian, file server and mail server guests all set to auto start. The great thing about virtualising everything is if you're using PBS you can backup easily and also reverse changes via snapshots. I have all of the guests are running on one network and use my notebook to access the PVE GUI in case either the guests has an issue and fails to start. I use a kvm to switch between guests with the win and mac guests have own gpu passed through. This is on 7.4 and my only concern at moment is backup before I upgrade to v8.

I highly recommend this process.
 
  • Like
Reactions: semanticbeeng
> have all of the guests are running on one network and use my notebook to access the PVE

Agreed
My laptop has a lot of power (128 GB RAM) so it is a proxmox host + would like to also use it also as graphical desktop client for connecting to software development guest environments with full control (nomachine, thincast, etc), meetings, etc.

Could use a separate laptop but would like to avoid the trouble.
 
Last edited:
Honestly, this type of use-case is pretty much what desktop virtualization products are intended to address. Obviously you can use PVE that way but I really don't get what the benefit would be compared to virt-manager. Unless you work on PVE/PBS of course.
 
I actually use Proxmox for a LOT of things now beyond just running containers and VMs.

I was able to install xfce4 chromium and lightdm so that the Proxmox host itself can be used as a desktop (did that because father-in-law only has one computer, so couldn't "remote in" with another system, so everything had to be self-contained to just one system, on WiFi only no less).
 
  • Like
Reactions: semanticbeeng
> what the benefit would be compared to virt-manager. Unless you work on PVE/PBS of course.

Want to connect from proxmox host to make (high quality) calls through MS Teams on Windows guest (or thincast/thinlinc through zoom running on a Linux guest. And do development with Intellij on Ubuntu guest.

Please elaborate how to use virt-manager or what would be the most minimalistic graphical setup on the proxmox host.

https://docs.openstack.org/image-guide/virt-manager.html
> If you are building the image on a headless server, and you have an X server on your local machine, you can launch virt-manager using ssh X11 forwarding to access the GUI

But headless means no X server, no? Anyway, will dig, thanks.
I am neck deep into research atm.

PS: A while back was looking at x11docker https://askubuntu.com/questions/1249043/run-simple-x11-app-in-docker-container-on-ubuntu-20-04. Not sure if smth like this can run beside proxmox.
 
Last edited:
> what the benefit would be compared to virt-manager. Unless you work on PVE/PBS of course.

Want to connect from proxmox host to make calls through MS Teams on Windows guest (or thincast/thinlinc through zoom running on a Linux guest. And do development with Intellij on Ubuntu guest.

Please elaborate how to use virt-manager or what would be the most minimalistic graphical setup on the proxmox host.
I am neck deep into research atm.

PS: A while back was looking at x11docker https://askubuntu.com/questions/1249043/run-simple-x11-app-in-docker-container-on-ubuntu-20-04. Not sure if smth like this can run beside proxmox.
Virt-manager is another front-end to KVM/Qemu. It has an integrated Spice client and gives a more Virtualbox-like feel compared with Proxmox. Which is to say there is a desktop client rather than a web-based interface and it targets the kind of use-case you have in mind as opposed to a remotely-managed data center kind of thing like Proxmox. Virt-manager is included in Debian, Ubuntu, Red Hat, etc. It is an alternative to Proxmox and to me sounds like a better fit for what you want to do.

BTW, the terminology of X is kind of reversed from the usual meaning. The X server runs on the machine that has the display, the client is the application that wants to use the display.

I have no idea how well x11docker works, nor why you would want that rather than just installing a desktop environment and using it. I mean, you are trying to set up a desktop environment, right? Well, JUST DO THAT. Don't make it more complicated than it needs to be. If you already have Proxmox you've apparently decided on your your hypervisor. But if you have Proxmox you also have Debian. Here is some info about the various desktop enviornments Debian supports:

https://wiki.debian.org/DebianDesktopHowTo#Select_a_Desktop_Environment

Basically, apt install one of task-gnome-desktop, task-kde-desktop, task-xfce-desktop. There's also minimalist optons like xfwm, i3 and sway but to be clear you need to know your way around Linux a little bit to get those working well.
 
  • Like
Reactions: semanticbeeng
.. set up a desktop environment, right? Well, JUST DO THAT. Don't make it more complicated than it needs to be. ... There's also minimalist optons like xfwm, i3 and sway but to be clear you need to know your way around Linux a little bit to get those working well
Yes, and trying to avoid the bloat of a full desktop given that am only using it for the sole purpose to connect to the guests and proxmox web based ui itself.

Will pursue such minimal setups.
* https://gist.github.com/ryot4/0712f02f709be90bd5d6812b85e3b529
* http://openbox.org/wiki/Help:Getting_started#Starting_Openbox_without_the_graphical_log_in
* https://forums.debian.net/viewtopic.php?t=16561 Minimal install of X11
* https://serverfault.com/questions/9...y-connect-to-guest-vms-on-headless-hypervisor but with nomachine, thincast, etc instead of x2go

Trying to keep it as simple as it can be but not expert in linux ui and not sure if I'll have to deal with video/audio optimizations like PipeWire
> "PipeWire is a project that aims to greatly improve handling of audio and video under Linux"

For example: with virt-manager will I be able to forward the usb headsets through nomachine to the MS teams in Windows guest (to have high quality calls)? If that is smth that is supposed to work then will dig.

Mentioned xdocker11 as form of containment, not as alternative/extra form of virtualization.
 
Last edited:
Yes, and trying to avoid the bloat of a full desktop given that am only using it for the sole purpose to connect to the guests and proxmox web based ui itself.
If this is your (primary) objective, then you can most definitely run:
`apt install -y xfce4 chromium lightdm` and you'll get the desktop running on the local host.

XFCE, as a desktop environment, is very lightweight and doesn't come with the "bloat" that a "standard" install normally would come with.
 
  • Like
Reactions: semanticbeeng
For example: with virt-manager will I be able to forward the usb headsets through nomachine to the MS teams in Windows guest (to have high quality calls)? If that is smth that is supposed to work then will dig.
Yes. Virt-manager uses kvm under the hood same as PVE.

But the thing is, getting audio and video to play well in any kind of VM is going to be much more tricky and fragile than running on bare hardware. That is just the nature of things.

Also, you mention Zoom as an alternate and there is a native Linux Zoom client that works fine. I use it fairly regularly but on real HW.
 
But the thing is, getting audio and video to play well in any kind of VM is going to be much more tricky and fragile than running on bare hardware. That is just the nature of things.

Also, you mention Zoom as an alternate and there is a native Linux Zoom client that works fine. I use it fairly regularly but on real HW.

Goal = nomachine running on proxmox host with minimal X11/graphics (run "with real hardware"...) and connect USB headset and USB webcam devices to server on Windows guest where MS Teams runs the calls and video & audio are good.

nomachine devices.jpg
This is the toughest use case because of Windows. (some of my clients require Windows and must support it but want to box it)
If can use only Linux tools then can do calls from proxmox host itself and it is much simpler.

ps: as part of research, have been studying these and found them instructive at nitty gritty level.
Should these techniques work in proxmox lxcs?

xahteiwi.eu – Running (Almost) Anything in LXC: The Basics
xahteiwi.eu – Running (Almost) Anything in LXC: X applications
xahteiwi.eu – Running (Almost) Anything in LXC: Applications Using Your Webcam
xahteiwi.eu – Running (Almost) Anything in LXC: Sound

------
UPDATE (added because it is related due to the need to control how "real hardware" devices are made available to host and guests)
Goal = passthrough GPU device(s) for machine learning development; maybe needed also for high quality video.

Single GPU Passthrough Guide 2023 (KVM/VFIO)
8) Attaching the GPU to your VM
 
Last edited:

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!