Your own personal IaaS cloud.
Vmango turns your libvirt hosts into a small, self-hosted cloud. Choose a cloud image, set the machine's resources, add your SSH keys and launch it from your browser.
No booting an installer, mounting a CD or clicking through OS setup for every new VM. Start from a ready-made cloud image and let cloud-init handle the initial configuration.
From cloud image to your own machine
- Choose an image. Use a cloud-init-enabled OS image in your storage pool as the starting point for new machines.
- Make it yours. Set CPU, memory and disk size, select your SSH keys and optionally provide cloud-init userdata to install packages or run setup commands.
- Create and start. Vmango clones the disk and supplies the configuration to the guest. The OS boots from the image and configures itself on first boot.
Once your hosts and images are set up, launching another machine is a single form and a click. Your infrastructure stays on your own hardware.
Manage the machines you launch
- Create, start, stop and reboot virtual machines through libvirt.
- Provision from cloud images with SSH keys and cloud-init userdata.
- Create, clone, resize and attach storage volumes.
- Access serial and VNC consoles in the browser.
- Connect to local or remote libvirt hosts.
Linux with QEMU/KVM is the main target. Local development on macOS is also possible with QEMU/HVF.
Where to get cloud images
Download a pre-installed disk image with cloud-init from the distribution's
official site. For QEMU/libvirt, choose QCOW2 and the architecture of your
host: amd64/x86_64 or
arm64/aarch64.
- Ubuntu Cloud Images
— choose a supported release and its
server-cloudimg-*.imgdisk image (QCOW2 despite the.imgextension). - Debian Cloud Images
— choose a supported release, then
latest/and ageneric-*.qcow2image for broad driver support. - Fedora Cloud — download the Cloud Base QCOW2 image.
- AlmaLinux Generic Cloud — cloud-init-enabled QCOW2 images, with download links by release and architecture.
- Rocky Linux — choose a GenericCloud QCOW2 image from the cloud image downloads.
- Alpine Linux Cloud Images — choose a virtual-machine QCOW2 image with cloud-init as the bootstrap system and a boot method matching your VM (BIOS or UEFI).
Check the publisher's checksum, unpack the image if needed, and place it
in a libvirt storage pool on the host that will run the VM. Register its
path and OS metadata in an image block in
vmango.conf
so it appears in Vmango's image selector. Set efi = true
for images that require UEFI.
These are upstream download sources, not a tested compatibility matrix. Image defaults vary; select an SSH key when creating the VM and use the distribution's default cloud user to log in.
Getting started
You will need a configured libvirt host, a storage pool and a cloud-init-enabled OS image.
Choose a package repository below, then configure /etc/vmango.conf
for your environment.
See each repository for available distributions and builds. Development packages follow the master branch.
From source
Building requires Go 1.26 or newer, a C compiler, pkg-config and the libvirt
development libraries. Config drives also need mkisofs.
git clone https://github.com/subuk/vmango.git
cd vmango
make
cp vmango.dist.conf vmango.conf
# Edit vmango.conf for your host and web login.
./bin/vmango webOpen localhost:8080 once the server is running. Use HTTPS when exposing the web interface remotely.
The README has more details on host setup and development. The example configuration documents the available settings.
Development
Code, bug reports and contributions live on GitHub. If something does not work, please open an issue with your Vmango version, host setup and relevant logs.