vmango

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

  1. Choose an image. Use a cloud-init-enabled OS image in your storage pool as the starting point for new machines.
  2. 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.
  3. 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

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.

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.

Ubuntu
Release PPADevelopment PPA
RPM
Release COPRDevelopment COPR

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 web

Open 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.