WebVirtCloud is web interface build for KVM virtualization Administrators and Users. WebVirtCloud allows you to create, manage and delete Virtual Machines running on KVM hypervisor from an intuitive web console. A noVNC viewer presents a full graphical console to the guest domain. In this article we perform installation of WebVirtCloud KVM Management Dashboard on CentOS Stream 8 Linux operating system.

WebVirtCloud solution is built on Python 3.x & Django 3.2 LTS. These are the main dependencies for this installation. But we’ll provide you with all the steps that you’ll use to install WebVirtCloud KVM Management Dashboard on CentOS Stream 8. Some key features of WebVirtCloud are highlighted below:

  • Management of QEMU/KVM Hypervisor
  • Management of QEMU/KVM Instances – Creation, Deletion, and instance update
  • Provides web based stats for the Hypervisor & Instance
  • You’re able to manage multiple QEMU/KVM Hypervisors from same installation.
  • Management of Hypervisor Networks
  • Management of Datastore pools in your Hypervisor setup.
  • Support for user based Authorization and Authentication
  • Instance Console Access with Browsers
  • Supports cloud-init datasource interface
  • Management UI for Libvirt API
  • A user can add SSH public key to root in Instance (Tested only Ubuntu)
  • User can change root password in Instance (Tested only Ubuntu)

Before you begin this installation you should have a Centos/OEL/RHEL 8 server setup.

Step 1: Update CentOS 8 / CentOS Stream 8

Login to the instance and ensure updates are done:

sudo dnf -y update

If you need to convert CentOS 8 server to CentOS Stream 8 check out below guide:

How To Convert CentOS 8 Server to CentOS Stream

Step 2: Install KVM on CentOS 8 / CentOS Stream 8

The next step is installation and configuration of KVM on CentOS 8 / CentOS Stream 8. We have a detailed guide on this shared on link below:

How To Install and Use KVM on CentOS Stream 8

Ensure KVM libvirtd service is running:

$ systemctl status libvirtd
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-06-21 20:29:16 CEST; 59s ago
     Docs: man:libvirtd(8)
           https://libvirt.org
 Main PID: 23126 (libvirtd)
    Tasks: 19 (limit: 32768)
   Memory: 15.3M
   CGroup: /system.slice/libvirtd.service
           ├─23126 /usr/sbin/libvirtd --timeout 120
           ├─23251 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
           └─23252 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper

Jun 21 20:29:17 kvm-desktop dnsmasq[23251]: reading /etc/resolv.conf
Jun 21 20:29:17 kvm-desktop dnsmasq[23251]: using nameserver 213.133.100.100#53
Jun 21 20:29:17 kvm-desktop dnsmasq[23251]: using nameserver 213.133.99.99#53
Jun 21 20:29:17 kvm-desktop dnsmasq[23251]: using nameserver 213.133.98.98#53
Jun 21 20:29:17 kvm-desktop dnsmasq[23251]: using nameserver 2a01:4f8:0:1::add:9898#53
Jun 21 20:29:17 kvm-desktop dnsmasq[23251]: using nameserver 2a01:4f8:0:1::add:1010#53
Jun 21 20:29:17 kvm-desktop dnsmasq[23251]: using nameserver 2a01:4f8:0:1::add:9999#53
Jun 21 20:29:17 kvm-desktop dnsmasq[23251]: read /etc/hosts - 9 addresses
Jun 21 20:29:17 kvm-desktop dnsmasq[23251]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses
Jun 21 20:29:17 kvm-desktop dnsmasq-dhcp[23251]: read /var/lib/libvirt/dnsmasq/default.hostsfile

Step 3: Install WebVirtCloud KVM Management Dashboard on CentOS 8 / Stream 8

Download the installer script:

curl -o webvirtcloud-install.sh https://raw.githubusercontent.com/retspen/webvirtcloud/master/install.sh

Make the script executable using chmod command:

chmod +x webvirtcloud-install.sh

Then install WebVirtCloud KVM Management Dashboard on CentOS Stream 8 by running the script using the following command:

sudo ./webvirtcloud-install.sh

The installation can be done on a virtual machine, physical host or on a KVM host itself.

In the first prompt agree to configure fqdn for Nginx:

WEBVIRTCLOUD

  Welcome to Webvirtcloud Installer for CentOS, Fedora, Debian and Ubuntu!

  The installer has detected centos version 8.
  Q. Do you want to configure fqdn for Nginx? (y/n) y

Enter name of server/nginx fqdn:

  Q. What is the FQDN of your server? (mykvm.example.com):
     Setting to mykvm.example.com

Configure NOVNC service and public port number and Listen address:

  Q. Do you want to change NOVNC service port number?(Default: 6080)
     Setting novnc service port 6080

Q. Do you want to change NOVNC public port number for reverse proxy(e.g: 80 or 443)?(Default: 6080)
     Setting novnc public port 6080

Q. Do you want to change NOVNC host listen ip?(Default: 0.0.0.0)
     Setting novnc host ip 0.0.0.0

The dependency packages installation is performed by the script and should begin immediately:

* Adding wget & epel-release repository.
* Installing OS requirements.
  * Installing git
  * Installing python3-virtualenv
  * Installing python3-devel
  * libvirt-devel already installed
  * glibc already installed
  * Installing gcc
  * Installing nginx
  * Installing supervisor
  * Installing python3-lxml
  * Installing python3-libguestfs
  * iproute-tc already installed
  * Installing cyrus-sasl-md5

Same as all the configurations of the server and other servies

* Setting up hosts file.
* Creating webvirtcloud user.
* Cloning webvirtcloud from github to the web directory.
* Configuring settings.py file.
* Secret for Django generated: 0lbbiij(v+$8*r(o*l#wodwdry&3vu&!a8_#!xl68n*p)%endp
* Activate virtual environment.
Using base prefix '/usr'
New python executable in /srv/webvirtcloud/venv/bin/python3
Also creating executable in /srv/webvirtcloud/venv/bin/python
Installing setuptools, pip, wheel...done.
Running virtualenv with interpreter /bin/python3
* Install App's Python requirements.
Requirement already satisfied: pip in ./venv/lib/python3.6/site-packages (21.1.2)
* Django Migrate.
Operations to perform:
  Apply all migrations: accounts, admin, appsettings, auth, computes, contenttypes, instances, logs, otp_totp, sessions
Running migrations:
  No migrations to apply.
  Your models in app(s): 'accounts', 'appsettings', 'computes', 'instances', 'logs', 'otp_totp' have changes that are not yet reflected in a migration, and so won't be applied.
  Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
! SHOW_PROFILE_EDIT_PASSWORD is found inside settings.py
* Applying permission can_change_password for all users
! Warning!!! Setting to True for all users
! Don`t forget to remove the option from settings.py
Migrations for 'accounts':
  accounts/migrations/0006_auto_20210622_1626.py
    - Alter field id on userattributes
    - Alter field id on userinstance
    - Alter field id on usersshkey
Migrations for 'appsettings':
  appsettings/migrations/0006_alter_appsettings_id.py
    - Alter field id on appsettings
Migrations for 'computes':
  computes/migrations/0004_alter_compute_id.py
    - Alter field id on compute
Migrations for 'instances':
  instances/migrations/0010_auto_20210622_1626.py
    - Alter field id on flavor
    - Alter field id on instance
Migrations for 'logs':
  logs/migrations/0004_alter_logs_id.py
    - Alter field id on logs
Migrations for 'otp_totp':
  venv/lib/python3.6/site-packages/django_otp/plugins/otp_totp/migrations/0003_alter_totpdevice_id.py
    - Alter field id on totpdevice
* Configuring Nginx.
  * Copying Nginx configuration
* Configuring Supervisor.
  * Copying supervisor configuration
not running
* Setting Supervisor to start on boot and restart.
* Setting Nginx to start on boot and starting Nginx.

If the installation was successful you should get the URL used to access webvirtcloud web console.

***Open http://mykvm.example.com to login to webvirtcloud.***

* Cleaning up...
* Finished!

Step 4: Access WebVirtCloud Web Dashboard

Go to http://serverip_or_hostname and you should see the login screen.

Install WebVirtCloud KVM Management CentOS 01

The default login credentials are:

Username: admin
Password: admin

Change the admin user password after first login under admin > Profile

Install WebVirtCloud KVM Management CentOS 02

Click on “Change Password” button.

Install WebVirtCloud KVM Management CentOS 03

Input new user password and confirm.

Install WebVirtCloud KVM Management CentOS 04

Step 5: Add KVM Compute Hosts to Manage

On your webvirtcloud server generate ssh keys:

$ sudo -u nginx ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/nginx/.ssh/id_rsa):
Created directory '/var/lib/nginx/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/lib/nginx/.ssh/id_rsa.
Your public key has been saved in /var/lib/nginx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:H8fD+jjnaZQVjAj2sN3ObXpENOwwKQsogo1O2L/I5oM [email protected]
The key's randomart image is:
+---[RSA 3072]----+
|.=     .+. . =o  |
|+.+ . ...=o.=.+. |
|o  o .  ..oo.+.. |
| .  .     .= oo  |
| . . .  S . Bo+  |
|  + .    . +o=   |
| +        o.. .  |
|E o       .ooo   |
|   .      .=+    |
+----[SHA256]-----+

You can optionally disable StrictHostKeyChecking.

cat > /var/lib/nginx/.ssh/config << EOF
Host *
StrictHostKeyChecking no
EOF

Set ownership of the SSH configuration file to nginx user:

chown nginx -R /var/lib/nginx/.ssh/config

Confirm the files were created and are visible.

$ ls -lh /var/lib/nginx/.ssh/
total 12K
-rw-r--r-- 1 nginx root    32 Jun 22 17:01 config
-rw------- 1 nginx nginx 2.6K Jun 22 16:59 id_rsa
-rw-r--r-- 1 nginx nginx  571 Jun 22 16:59 id_rsa.pub

You need to upload webvirtcloud public key into authorized keys on the compute node.

For Local KVM Node:

cat /var/lib/nginx/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys

For a remote compute node you can use ssh tool from the webvirtcloud server:

sudo -u nginx ssh-copy-id [email protected]
sudo -u nginx ssh-copy-id [email protected]

Test connection as nginx user:

$ sudo -u nginx ssh [email protected]
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
Last login: Tue Jun 22 19:44:38 2021 from 127.0.0.1
[[email protected] ~]# exit
logout
Connection to 127.0.0.1 closed.

From the WebVirtCloud KVM Management web console navigate to Computes

Install WebVirtCloud KVM Management CentOS 05

Choose SSH connection method to add your KVM Nodes and input KVM node details – Name, IP/FQDN, Login username:

Install WebVirtCloud KVM Management CentOS 06

If all goes well the Status of the new node should show “Connected

Install WebVirtCloud KVM Management CentOS 07

In our next article we will show how you can use WebVirtCloud to create, update and delete Virtual Machines on a KVM hypervisor. Other KVM Administrative tasks such as Storage and Networks Management can be performed from the web interface.

More guides on KVM:

Virsh commands cheatsheet to manage KVM guest virtual machines

How To Use Vagrant with Libvirt KVM on CentOS 8

Install / Run Fedora CoreOS (FCOS) on KVM / OpenStack

Your support is our everlasting motivation,
that cup of coffee is what keeps us going!


As we continue to grow, we would wish to reach and impact more people who visit and take advantage of the guides we have on our blog. This is a big task for us and we are so far extremely grateful for the kind people who have shown amazing support for our work over the time we have been online.

Thank You for your support as we work to give you the best of guides and articles. Click below to buy us a coffee.

LEAVE A REPLY

Please enter your comment!
Please enter your name here