Skip to content
Your own personal IaaS cloud
JavaScript CSS Go HTML Shell Makefile Other
Branch: master
Clone or download

Latest commit


Type Name Latest commit message Commit time
Failed to load latest commit information.
.copr Support copr RPM build Sep 6, 2019
bootstrap Add ability to hide volumes Apr 24, 2020
compute Fix no boot device error for new vms by moving cloned volumes up Apr 25, 2020
config Add ability to hide volumes Apr 24, 2020
configdrive Add support for openstack metadata format Sep 4, 2019
debian Release 0.12.0 Apr 26, 2020
dockerbuild Centos 8 build Nov 22, 2019
filesystem Allow to use readonly key file Apr 24, 2020
libvirt Fix vm autostart state change May 8, 2020
static New machine create forms Apr 19, 2020
templates Mark hugepages checkbox as disabled by default May 8, 2020
util Add pool filter to volume list page Apr 17, 2020
vendor Update libvirt-go dependency Apr 20, 2020
vendortools Start from the scratch Aug 31, 2019
web Add ability to enable hugepages Apr 24, 2020
.editorconfig Reformat templates Apr 3, 2020
.gitignore Add RPM packaging Sep 3, 2019
Dockerfile Add Dockerfile Apr 4, 2020 Add release howto Nov 24, 2019
LICENSE Add MIT license Sep 3, 2019
Makefile Fix a typo in debian build makefile Sep 8, 2019 Debianization Sep 7, 2019 Add discord server badge to readme Apr 5, 2020 Centos 8 build Nov 22, 2019
go.mod Add ugly node details page Apr 20, 2020
go.sum Add ugly node details page Apr 20, 2020
main.go Add new genpw subcommand Nov 24, 2019 Add post create hooks Sep 10, 2019
vmango.dist.conf Add remote url example to dist config Apr 26, 2020
vmango.service Add new genpw subcommand Nov 24, 2019 Release 0.12.0 Apr 26, 2020



Vmango is a virtual machines management web interface written using Go.

The main goal of project is not to provide a hypervisor configuration tool, because that problem already solved by many configuration management systems like Ansible or Puppet, but provide a convenient way to manage virtual machines on existing hypervisors.

Current features:

  • SSH keys management and injection
  • Volume management
  • KVM machines via libvirt
  • Web console
  • Support for cloud OS images (with cloud-init installed)
  • Custom userdata for cloud-init
  • Bridged network


There are two RPM repositories:

  • vmango for the latest tagged release, it may be considered stable
  • vmango-devel contains packages built automatically from the latest commit in master branch

CentOS 7 and 8

  1. Enable copr reposotory, use subuk/vmango-devel for the latest version, subuk/vmango for stable
  2. Install package
  3. Edit configuration file /etc/vmango.conf
  4. Start and enable systemd service vmango
yum install -y yum-plugin-copr && yum copr -y enable subuk/vmango
yum install -y vmango
systemctl enable --now vmango

Ubuntu 18.04

  1. Follow instructions on vmango or vmango-devel ppa page
  2. Install package
  3. Edit configuration file /etc/vmango.conf
sudo add-apt-repository ppa:subuk/vmango
sudo apt-get install vmango

Hypervisor configuration

Install libvirt and qemu-kvm.


sudo apt-get install libvirt-bin qemu-kvm qemu-system


yum install -y libvirt qemu-kvm
systemctl enable --now libvirtd

Allow your user to access libvirt socket:

sudo usermod -aG libvirtd [username]
newgrp libvirtd

Download vm images to default libvirt pool location:

cd /var/lib/libvirt/images/

Define default volume pool (if not exists) and start it:

virsh pool-define-as default dir --target /var/lib/libvirt/images/
virsh pool-start default
virsh pool-autostart default

Local run

Copy vmango.dist.conf to vmango.conf and change configuration if needed.

Run app

make && ./bin/vmango web

View it on http://localhost:8080 (login with admin / admin by default)

Dependencies for Ubuntu 14.04+

Install libvirt and kvm

sudo apt-get install libvirt-dev libvirt-bin qemu-kvm qemu-system genisoimage

Install Go compiler. Configure libvirt as described above. Now you can use your own computer as hypervisor.

Dependencies for MacOS

Install Go compiler, libvirt C library and mkisofs util (for configdrive creation)

brew install go
brew install libvirt
brew install dvdrtools

You need a linux hypervisor somewhere in the world, because libvirt doesn't support MacOS. Make sure to add ?socket option to remote libvirt urls.

Build RPM

With docker for Centos 7:

./ centos-7 make rpm


make rpm

Build DEB

With docker for Ubuntu 18.04:

./ ubuntu-1804 make deb


make deb
You can’t perform that action at this time.