A simple self-hosted PHP + SQLite3 control panel for Linux KVM clusters, nodes, and guest VMs.
Find a file
KuJoe e0bc51ed10 Initial upload for release 0.1
Uploading the code in its entirety, basic testing completed but still more work and code clean-up needed.
2025-02-10 17:36:04 -05:00
assets Updating CSS and assets 2025-02-10 07:38:57 -05:00
scripts Update setup.sh 2025-02-10 10:34:34 -05:00
vendor Initial deployment of install.php, config.php, and phplibsec library. 2025-02-08 08:07:32 -05:00
account.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
auth.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
clusters.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
composer.json Initial deployment of install.php, config.php, and phplibsec library. 2025-02-08 08:07:32 -05:00
composer.lock Initial deployment of install.php, config.php, and phplibsec library. 2025-02-08 08:07:32 -05:00
config.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
favicon.ico Updating CSS and assets 2025-02-10 07:38:57 -05:00
footer.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
functions.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
get_vm_status.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
header.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
home.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
index.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
install.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
ipv4.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
ipv6.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
isos.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
LICENSE Initial commit 2025-02-07 15:59:05 -05:00
logout.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
node.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
nodes.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
README.md Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
settings.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
updateNodes.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
users.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
vm.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00
vms.php Initial upload for release 0.1 2025-02-10 17:36:04 -05:00

KontrolVM Logo

A simple self-hosted PHP + SQLite3 control panel for Linux KVM clusters, nodes, and guest VMs.

DEMO

This is mostly a tour of the control panel and not functional at this time.
All of the current assets and UI are placeholders, I'll find somebody to design a better looking UI in the near future.

Table of Contents

Features

User Management

  • Create user accounts
  • Delete user accounts
  • Update user details (username, email, status, password)
  • Cloudflare Turnstile invisible CAPTCHA
  • 🚧Multifactor Authentication
  • 🚧User permissions/levels
  • 🚧Password reset
  • 🚧Notifications

Node Management

  • Add nodes to the cluster
  • Remove nodes from the cluster
  • Edit node details (hostname, IP address, SSH port, status, etc.)
  • Get node statistics (CPU, RAM, disk usage, etc.)
  • Update node statistics
  • Enable/disable nodes
  • 🚧Import existing Linux KVM nodes
  • 🚧Setup multiple virtual networks (i.e. VLANs, public, private, etc...)

VM Management

  • Create VMs
  • Edit VM details (name, hostname, IP address, resources, etc.)
  • Start, stop, restart, shut down VMs
  • Delete VMs
  • Mount/unmount ISO images to VMs
  • Set I/O limits for VMs
  • Configure NIC speed for VMs
  • Enable/disable VNC for VMs
  • HTML5 + VNC Console
  • Reset VNC passwords
  • Change disk and network drivers for VMs
  • Set boot order for VMs
  • 🚧Adjusting VM resources (CPU, RAM, disk space, etc...)
  • 🚧Adding and removing disks
  • 🚧Adding and removing NICs
  • 🚧Backup/Restore/Snapshot VMs
  • 🚧Migrate VMs between nodes/clusters
  • 🚧IP Management (DHCP, vSwitch, etc...)
  • 🚧Display VM resource usage + history
  • 🚧Bandwidth accounting/monitoring
  • 🚧Expiring VNC access

Cluster Management

  • Add clusters
  • Delete clusters
  • Enable/disable clusters
  • 🚧Load balancing
  • 🚧Resource based deployment

Other Features

  • Add ISOs
  • Get total resources (CPU, disk, RAM, VMs, nodes)
  • 🚧Manage IP addresses (add, delete, reserve, unreserve)
  • 🚧Logging and alerting
  • 🚧Automated backups of SQLite3 database
  • 🚧Automatic updates of KontrolVM + Nodes

Requirements

  • PHP 8.x (tested on PHP 8.1 and 8.2)
  • SQLite3

KontrolVM Installation

  1. Download the latest release.
  2. Extract the files and upload them to your web directory.
    OPTIONAL: Update the config.php file if needed.
  3. Navigate to the install.php file in your browser to run the installer.
    NOTE: Save the username and password generated in this file for later.

Linux KVM Node Setup

At this time only AlmaLinux 9, RockyLinux 9, and CentOS Stream 9 have been tested and are supported. We will add more server OS options later. Login to your Linux KVM node and run the following command as root:

curl -fsSL https://kontrolvm.com/setup.sh | bash