vmango

Your own personal IaaS cloud.

Vmango turns your libvirt hosts into a small, self-hosted cloud. Choose a cloud image and instance type, add your SSH keys and launch it from your browser.

Read the documentation Quick start → Run with Docker →

Manage the machines you launch

Linux with QEMU/KVM is the main target. Local development on macOS is also possible with QEMU/HVF.

Run Vmango with Docker

The published image includes the web interface, libvirt clients, SSH and cloud-init ISO tools. It supports Linux amd64 and arm64; Docker selects the matching architecture automatically.

Vmango · Docker imageDocker Hub
docker pull subuk/vmango:0.15.1

Connect your existing libvirt hosts and keep application state in a persistent volume. Follow the Docker installation guide for configuration, host access and the required HTTPS proxy.

A clear view of your cloud

See machine states, allocated resources and IP addresses together. Filter by host or state, then open a machine to inspect its configuration or connect to its console.

Vmango machine inventory showing running and stopped machines, total vCPUs and memory, host filters and IP addresses.
Machine inventory with resource summaries and filters. Screenshots use demonstration data; select an image to view it at full size.
See how machine creation works

Select an image, availability zone and instance type. CPU, memory and boot disk size are shown before you launch. Add SSH keys and cloud-init data, and Vmango chooses a suitable host in the selected zone.

Vmango creation form with an instance type providing 4 vCPUs, 4 GiB of memory and a 40 GiB boot disk, plus network, SSH key and cloud-init settings.
Machine creation with the selected instance type's included resources. Demonstration data.

Define your cloud in a config file

Define instance types and configure each host inside its cloud, including its libvirt URI, logical network and storage-class bindings.

Replace the cloud "local" block in the quick-start configuration with this example. Keep its image and API settings, including the ubuntu-24.04-x86_64-bios image. The host needs an active libvirt network and a writable storage pool, both named default.

vmango.conf · cloud configurationDownload example
# Replace the quick-start cloud block; keep its image and API settings.
cloud "local" {
    name = "Local cloud"
    images = ["ubuntu-24.04-x86_64-bios"]

    zone "local" { name = "Local zone" }
    network "lan" { name = "Private LAN" }
    storage_class "standard" { name = "Standard storage" }

    instance_type "small" {
        name = "Small"
        cpu = 2
        memory_mib = 2048
        boot_disk_gib = 20
    }

    instance_type "medium" {
        name = "Medium"
        cpu = 4
        memory_mib = 4096
        boot_disk_gib = 40
    }

    host "local" {
        uri = "qemu:///system"
        config_drive_pool = "default"
        zone = "local"
        cpu_reserve = 1
        cpu_overcommit = 4
        memory_reserve_mib = 1024
        network "lan" { network = "default" }
        storage_class "standard" { pool = "default" }
    }
}

Vmango uses the catalog to offer compatible configurations and place machines automatically. Read the cloud configuration guide for multiple hosts, resource reserves and placement rules.

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.