| I have a new lightweight laptop with 16 GB of RAM, decent SSD space, and an i7 CPU. And I would like to setup a few systems on it, to have "everything" with me as I move around while disconnected. I'm looking for recommendations and ideas into how to set this up. Examples of these systems would be: a) A headless server with a dev stack: runs a build workflow, a web server, etc. b) A stable "production" version of server (a) c) A "desktop" dev environment: IDE, language/tools-rich d) A "basics" desktop environment for non-tech work: office tools, maybe some media editing (even blender 3d if feeling lucky) They won't all be running simultaneously. I haven't worked on the OS systems and platforms level since a past life. I don't know much about virtualization/containers/etc, but I'm good with networking fundamentals, and I'm willing to learn any old/new tech. Ideally: 1. The host OS is minimal (i.e. can only keep the core packages I need), and driver-friendly so the core hardware (compute/graphics) is efficiently accessible to each guest OS. 2. I can network the different "machines" together; so the dev desktop can use the dev server's API, and the basics desktop accesses the apps on the production server in its browser. 3. I can pull data from each system out into the host OS for data backups. 4. I can restrict network/internet access from/to any of those systems, from the host OS. 5. All systems are open-source, can work completely disconnected and do not phone home in order to function. Thankful for any experience you can share. |
For a long time I ran VirtualBox guests on a laptop host running Debian or Ubuntu. VB is great especially if you're getting started with virtual machines, it has a GUI and things are easy to understand. I used a host-only network to keep traffic inside my laptop.
If you're going to edit code inside a VM you'll need an IDE that can handle it. Emacs with tramp has served me well for years. IIRC with VSCode you have to install a server on the VM.
I do web development so I've never felt the need to run desktops inside VMs. It's nice to have some separation between work and stuff like HN but Gnome workspaces gives me just enough.
A couple years ago I levelled up and switched to KVM on a headless Debian box. This system uses bridge networking with DHCP from my router, and I use Tailscale to access my VMs from outside my LAN. You can use virt-manager (which also works for VirtualBox) but I mostly use the libvirt CLI tools and cockpit/cockpit-machines if I need something a little more visual. Caveat: I don't know how KVM would handle suspend on a laptop.