Proxmox Cloud-Init OS template creation


In this guide we will go over creating a Proxmox KVM Template from a Cloud Image. This same process will work for any Cloud-Init Openstack based image type you can find online.

Having done a number of these for our Proxmox based VPS service I wanted to post up a guide to help anyone else looking to do the same thing.

My workflow for customizing one of those for use with Proxmox with cloud-init deployment from WHMCS and root login is below. Once you setup one template you can rapidly reinstall new containers and test stuff.

Setup Environment

If not installed already installed you will need libguestfs-tools :

apt-get install libguestfs-tools

To edit the image before importing. We will use virt-edit which is a part of libguestfs-tools. Continue reading “Proxmox Cloud-Init OS template creation” »


Fixing Slow Windows VM boot on Proxmox KVM with balloon driver

Download the Win-Virtio Driver and load it on VM CDRom Drive. Download can be found here:

Now install the Virtio Balloon driver AND the Balloon service in the guest as follows:

  1. Open Device Manager and see if there is an unknown PCI device. If so, right click it and install the driver manually from D:\Balloon\2K16\amd64 (or 2k12, 2k8, etc)
  2. Now copy the entire amd64 folder into C:\Program Files\ (NOT x86) and rename it “Balloon”. So, now you have the amd64 folder from the disc copied as C:\Program Files\Balloon
  3. Open an Administrative Command Prompt and cd to C:\Program Files\Balloon
  4. Run this command:

Continue reading “Fixing Slow Windows VM boot on Proxmox KVM with balloon driver” »


How to Add Additional Physical NICs to XenServer

From the XenServer Command Line Interface (CLI), issue the following command:

xe pif-list

Press Enter.

Note: If you have more than one XenServer in the pool, you must issue the xe host-list command to list all the XenServer hosts and write down the Universally Unique Identifier (UUID) of the host that you added the new NIC, then issue command xe pif-list host-uuid=[uuid of the XenServer host]

The preceding command lists all the physical NICs of that XenServer. If you do not see the additional NIC, you must scan for new physical interface(s) on a XenServer and issue this command:

xe pif-scan host-uuid=[uuid of the XenServer host]

Press Enter. Continue reading “How to Add Additional Physical NICs to XenServer” »


Setup Xen Orchestra (XO) Community Edition

XCP-NG + Xen Orchestra Community Edition = a powerful 100% free virtualization environment and backup solution. I’m writing this to provide hand holding for those interested in XCP-NG but intimidated by the required command line setup to get Xen Orchestra Community Edition (XOCE) working.

The installation and update scripts for Xen Orchestra were written by DustinB3403; I’m using information from a few different sources to make an easy to follow guide.

For the purposes of this guide I’ll presume you already have XCP-NG installed and that XOCE will be running as a VM on XCP-NG. I’ll also assume you already have XCP-NG Center installed on a Windows OS. You can download XCP-NG Center at

*Updated 08-16-19 with TOML instructions for HTTPS. Thanks again to SloopDog for posting the HTTPS instructions.

Step 1: Download Linux ISO

I used Ubuntu Server 18.04 LTS ( If you’re not comfortable with Linux I suggest you do the same so you can use the same commands without modification. Otherwise, feel free to use your own flavor. Download the Linux ISO and save it in a shared windows folder. Continue reading “Setup Xen Orchestra (XO) Community Edition” »


Change cluster node IP in Proxmox

To update the present cluster host proxmox following files need to be updated:

/etc/pve/corosync.conf (only on one node necessary)

However, corosync.conf needs special way to edit the file!

Edit corosync.conf

Editing the corosync.conf file is not always very straightforward. There are two on each cluster node, one in /etc/pve/corosync.conf and the other in /etc/corosync/corosync.conf. Editing the one in our cluster file system will propagate the changes to the local one, but not vice versa. The configuration will get updated automatically as soon as the file changes. This means changes which can be integrated in a running corosync will take effect immediately. So you should always make a copy and edit that instead, to avoid triggering some unwanted changes by an in-between safe.

cp /etc/pve/corosync.conf /etc/pve/

Then open the config file with your favorite editor, nano and vim.tiny are preinstalled on any Proxmox VE node for example. Continue reading “Change cluster node IP in Proxmox” »


Clone KVM-based Virtual Machines on Redhat / CentOS Linux

Prerequisite: Operating System and Software Versions

  • Operating System: – Redhat 7.3
  • Software: – libvirtd (libvirt) 2.0.0

Obtain Source Virtual Machine’s information

Before we begin cloning any virtual machine we first need to obtain some basic information about it. The absolute minimum information required about the source virtual machine we are about to clone would be its name and number of disk in use. To get virtual machines name run:

# virsh list
Id Name State
1 server1.local running

Next, we may would like to know the number of disk our source virtual machines is using as well as its location. The information about disks location is optional as it only provides us with a hint on where to store new clone disk files for the sake of consistency: # virsh dumpxml server1.local | grep "source file"
<source file='/var/lib/libvirt/images/server1.local.qcow2'/>
<source file='/var/lib/libvirt/images/server1.local-1.qcow2'/>
<source file='/var/lib/libvirt/images/server1.local-2.qcow2'/>

From the above output we can see that our original virtual machine has three disks stored in location /var/lib/libvirt/images/. Continue reading “Clone KVM-based Virtual Machines on Redhat / CentOS Linux” »


Reinstall VirtualBox on Ubuntu & CentOS

For Ubuntu

To remove virtualbox

sudo dpkg --list virtualbox-*
sudo apt autoremove --purge virtualbox*
dpkg -l virtualbox* | grep ^i

Remove all PPAs from sources.list and source.list.d directory

mkdir ~/apt-tmp
sudo mv /etc/apt/sources.list.d/* ~/apt-tmp

Make sure there is nothing except official repositories sources in /etc/sources.list. And update your sources:

sudo apt update

Now we can search to see which versions are available to install:

apt-cache madison virtualbox | grep -iv sources

Which produces an output like this:

virtualbox | 5.0.32-dfsg-0ubuntu1.16.04.2 | xenial-updates/multiverse amd64 Packages
virtualbox | 5.0.18-dfsg-2build1 | xenial/multiverse amd64 Packages

Then I would install the last version mentioned in xenial-updates: Continue reading “Reinstall VirtualBox on Ubuntu & CentOS” »


Install Qemu Guest Agent on Proxmox

The qemu-guest-agent is a helper daemon, which is installed in the guest. It is used to exchange information between the host and guest, and to execute command in the guest.

In Proxmox VE, the qemu-guest-agent is used for mainly two things:

  • To properly shutdown the guest, instead of relying on ACPI commands or windows policies
  • To freeze the guest file system when making a backup (on windows, use the volume shadow copy service VSS).

Installation Host
You have to enable the guest-agent per VM, either set it in the GUI to “Yes” under options (see screenshot):

or via CLI:

qm set VMID --agent 1

Guest Linux
On Linux you have to simply install the qemu-guest-agent, please refer to the documentation of your system.

We show here the commands for Debian/Ubuntu and Redhat based systems:

Continue reading “Install Qemu Guest Agent on Proxmox” »


Install Proxmox VE 6 on Debian 10 (Buster)

Proxmox Virtual Environment (VE) is an enterprise-grade open-source server virtualization solution based on Debian Linux distribution with a modified Ubuntu LTS kernel. It allows you to deploy and manage both virtual machines and containers.

This setup presumes you have a running Debian 10 Buster Linux server running. If you don’t have one, follow our guide to Install Debian 10 on a dedicated server that will be used as a hypervisor. Please note that you need a 64-bit processor with support for the Intel 64 or AMD64 CPU extensions.

Below are the steps you’ll follow through to install Proxmox VE 6 on Debian 10 (Buster).

Step 1: Update Debian OS

Update apt package index before getting started.

sudo apt -y update
sudo apt -y upgrade
sudo reboot

Step 2: Set system hostname

We need to set the hostname and make sure it is resolvable via /etc/hosts.

sudo hostnamectl set-hostname --static
echo " prox6node01" | sudo tee -a /etc/hosts should be replaced with a valid domain name. Continue reading “Install Proxmox VE 6 on Debian 10 (Buster)” »


Resizing a VirtualBox Virtual Hard Disk

Before you start this procedure you’ll need to do the following.

  • Make sure you have the VBoxManage command-line tool installed on your host system.
  • Download the ISO for a GParted Live CD or else a Linux Live CD using a Linux distribution that includes the GParted partition editor utility.
  • IMPORTANT: If the virtual disk you want to resize is attached to a virtual machine with snapshots, you will need to delete these snapshots so that all disk state information is merged into the base virtual disk VDI file.
  • Resize the virtual disk (VirtualBox version 4.0+ only)
    If you are using VirtualBox version 4.0 or later, you can resize the logical capacity of a virtual disk using the VBoxManage modifyhd –resize command.

On the host system, run the following command:

cd /path/to/vbox/disks
VBoxManage modifyhd OldDisk.vdi –-resize 30000

where OldDisk.vdi is the filename of the virtual disk VDI file you want enlarge and 30000 is the new maximum size (in megabytes) of the virtual disk.

If your host OS is Windows, then the commands you need to enter at the Command Prompt will look more like the following. Continue reading “Resizing a VirtualBox Virtual Hard Disk” »