All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.
bashvm - CLI VM Manager - bashvm.com
Hello everyone,
I’m very excited to present everyone bashvm, I have been working on for some time and I wanted to get more exposure on the project.
bashvm is basically a bash script that can manage virtual machines with only ssh access required, In result it has very little overhead and reduces the attack surface for the hypervisor since it is just a bash script.
More details can be found on https://bashvm.com
Screenshots: https://bashvm.com/screenshots.html
Guide: https://bashvm.com/guide.html
Github: https://github.com/babywhale321/bashvm
Here is an example of creating a new vm using the automate option
bashvm has many features and many more to come so all comments or suggestion are welcomed.
Comments
any yabs?
AutoYABS
YABS 24/7 and restarts on crash, across all VM's, zero config needed
This seems interesting, will take a look - thanks!
Node
VPS made with bashvm
@babywhale Thanks for bashvm!

Over the last couple of weeks I have tried bashvm on three dedicated servers, running either Debian 12 or Ubuntu 22.04 LTS. I have tried to go through variations on the VM install procedures, such as, for example, changing, as scripted by bashvm, the source of the software installed in the VM between official distribution supplied qcow2 images and official distribution supplied ISOs. bashvm also provides, and as additional examples of my testing, I have tried to test multiple VM networks on the Node, port forwarding, and IPv6 with dhcpv6.
As a clueless™ guy, I can say that the most basic use of bashvm, autocreated VMs made from official distribution supplied qcow2 cloud images, are pretty easy. My workflow, so far, for bashvm autocreated VMs, the simplest case, looks like this [the numbers inside brackets are bashvm menu sequences]:
Installing from official distribution supplied ISOs is a little more complicated, especially if we decide to add a different Node network. Also, VMs created from ISOs require VNC to install the VM's internal software, configure the VM's IPv6, install openssh-server, etc. It appears that bashvm might support almost any ISO, but, for example, I haven't tried any BSD ISOs as yet.
Probably most LETizens already know @babywhale from his dedicated work on the FreeVPS project. Now, in addition to his FreeVPS work, @babywhale also has given us bashvm! Notably, bashvm is open source under the MIT license. Also, delightfully, bashvm runs over ssh, so no web framework is required -- and, accordingly, no possibility of attacks and compromises exists via a web framework which isn't there!
During the entire time that I have known @babywhale, both in the FreeVPS context and now in the bashvm context, he always has been super friendly, super dependable, and super hard working! He always responds almost immediately to the dozens of questions I ask. He steadily and consistently improves bashvm! He is beyond awesome! @babywhale deserves a huge round of applause from everyone on the Low End! 👏👏👏👏👏 Certainly there is no doubt whatsoever that @babywhale is one of the most dedicated and one of the best contributors to our Low End community!
I am cautiously optimistic that bashvm will enable MetalVPS, finally, to more fully utilize excess server capacity by enabling awesome community members to receive high quality, performant libvirt KVM VMs created on MetalVPS servers by bashvm.
Lest anyone become too afraid,
no, MetalVPS isn't giving up its on-the-metal mantra. But, awesome MetalVPS Neighbors ought also to have the option of running on emulated or virtual KVM metal. And bashvm
provides a wonderful opportunity to make emulated metal or virtual metal MetalVPSes happen safely and dependably via libvirt. More on all this before too long!
Thanks to @babywhale for bashvm!
Thanks to @crunchbits for wonderful Crunchy!
Just for crazy fun, If someone wanted to write a front end web interface for bashvm, maybe it could use something like:
https://bashsta.cc/
https://github.com/cgsdev0/bash-stack
HN discussion at https://news.ycombinator.com/item?id=37265392 includes this gorgeous tidbit:
"Other similar projects require a CGI-capable web server. This one instead uses djb's tcpserver. Guess next step will be to drop any external dependencies."
-- https://news.ycombinator.com/item?id=37271827
Everyone here knows about djb, right? https://cr.yp.to
Probably bashvm could be added to FOSSBilling?
Or FOSSBilling could be somewhat simplified and re-implemented in bash-stack?
Of course, SimplyFOSSBilling would use djb's qmail. And flat file databases processed with awk.
Is it really true that Gmail started with qmail?
Last time I looked there was a working implementation of qmail in NetBSD's pkgsrc.
Hypervisor
https://imgur.com/a/A4Gt5Kn
VM
https://imgur.com/a/tfWZZG1
Really nice project.
Should you need a VM for this (to host your website or project files) let me know. I can spin something up for you in EU.
thank you for the offer thats very generous of you
but at the moment i do not need any webhosting at the moment for the website.
NetBSD-current is running great on a bashvm VPS on one of my Redacted servers! It's compiling a bunch of stuff out of pkgsrc.
Of course this NetBSD-current VPS is running on qemu via libvirt via bashvm so it's not running directly on the bare metal. 😢 But it's still running great!
The Linux VPSes on the test server also seem to be running great! Thanks @babywhale!
Very nice. Cool!
i well test bashvm in orangepi 32gb today i hope its working because i have 15 of those (a mini data center) for my new hosting in middle-east saudiarabia
Great work
bashvm will most likely not work on any ARM based system at the moment since it was written for x86 but if you really wanted to get it working with arm you would have to change anything related to x86 to the arm counterpart.
Thanks
@babywhale continues working hard on bashvm!
great i will check and if change and works good i will send it to you
I gave it a try and seems really promising; below some suggestions/optimizations you may integrate.
1) Is there any way to assign a pool of public IPs to the network and create a VM (even auto) with one of these IPs released in DHCP? (or manual)
Or add manually more than 1 IP to the same VM through the menu.
2) A VM spawn comes up also without credentials.
After creating it would be nice to prompt them out (IP, user, pass) especially for external usage.
3) Show more details of a VM > I'd show more details such as IP and MAC address assigned too.
when it comes to dhcpv6 you can assign a pool but i personally have never tried the dhcpv4 with actual public ip's compared to private ones but in theory it should work.
i recently added the ability for credentials and whatnot so i may have just not updated the screenshots on bashvm.com
i do have the ability to show more details of a network where it contain these things but i do not have it for the vm menu at the moment, it will be put onto my to-do list!
thanks for your suggestions, i appreciate the constructive criticism
Thanks for great work! very interesting project. Will have a look when I get some free time.
Hello Everyone!
I Just recently added a whole bunch of things and after allot of hours of testing, I think that bashvm is in a good place right now so i thought it would be a good time to finally publish the first release!
You can see the most recent changes at
https://github.com/babywhale321/bashvm/releases/tag/05-28-2024
Thank you for sharing this! I am a bit embarrassed to say that I haven't seen this before, but better late than never
I will definitely give this a good try.
Thanks for all your work. I gave it a quick spin. Have you considered making it usable without root permissions? One can get a long way with virsh without root if part of the libvirt group.
for example in bashvm-create-vm.sh as user choked on
iso_img=$(ls "$pool_path"/ | grep "debian-12.5.0-amd64-netinst.iso")
but you can get your iso_path without root at at all
virsh vol-list default| grep debian-12.5.0-amd64-netinst.iso| tr -s ' '| cut -d ' ' -f3
thanks again. definitely looks like something I would like.
Thanks for the hard work. I wonder if bashvm and proxmox can run on the same server?
Thanks so much @babywhale
I am going to try bashvm on AX42
I am getting this error, can you please help
Thanks!
Thank you so much @babywhale ... I have a dual stack server... Is there a way to create IPv6 only VMs using this script?
Just to clarify, I believe it's out of 'Networking' option... Just trying to figure out the right configuration within it as I don't want my IPv4 to be associated to new VM in anyway.. Only IPv6 is what I need....
Sorry about the late response! I have not seen this error before but after looking it up it looks like it has to do with the spice audio driver for your machine. What you could do for now is edit the xml portion of bashvm-create-vm.sh where you could just remove the spice audio part
<audio id='1' type='spice'/>
and see if that makes a difference when creating a vm. id be interested to know the specs of your system or the OS your using?
What you could do is to remove the NATv4 settings of the network config so that only v6 is avilable for the vm's to use.
For an example you could remove this part of the xml file under edit properties and then edit a network
from
<ip address='192.168.122.1' netmask='255.255.255.0'>
to
</ip>
could be removed for IPv4if you already have a working DHCPv6 config then this should hopefully work and let me know how that works out
Thank you for creating this @babywhale . I've a VPS with 2+ IPV4 on my @VirMach vps, and i would like to add that ipv4 to my VM? is that possible in bashvm?
since all of ipv4 are in eth0 and bashvm only read default and natbr1. Sorry if i'm newbie with this.