Proxmox Virtual Environment or short Proxmox VE is an Open Source server virtualization software based on Debian Linux with an RHEL kernel, modified to allow you to create and deploy new virtual machines for private servers and containers. Proxmox provides two types of virtualization: containers with LXC and full virtualization with KVM. Proxmox gives you an easy way to install and configure virtual machines from a web browser (Java plugin Iced tea required), it offers nice command line tools and a REST API for the third-party applications. If you want to install on a server that you have physical access to, then download the Proxmox iso from the official website. In this tutorial, I will show you the installation of Proxmox on a server that runs a minimal Debian 8 installation, e.g. in a datacenter.
In this tutorial, I will guide you trough the Proxmox installation on Debian Jessie.
The first step that we will start with is to configure the server FQDN (Fully Qualified Domain Name).
Check the server hostname with the command below:
So my server hostname is "aumu".
Edit the "/etc/hosts" file with vim and add your server "IP + hostname.domain-name.com + hostname".
I'll add configuration for the host below:
192.168.1.111 aumu.myproxmox.co aumu
Replace the hostname and FQDN with the one that you like to use for your server, then save the configuration and exit.
Reboot the server and check the hostname and the FQDN:
Login again and check hostname and FQDN:
The result should be:
The result should be:
Now add the Proxmox repository to "sources.list.d" directory and add the Proxmox key to authenticate the packages:
echo "deb http://download.proxmox.com/debian jessie pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -
Now update the Debian repository and run a dis-upgrade on the system, then reboot the machine:
apt-get update && apt-get dist-upgrade
Install Proxmox VE and some other required packages with the apt command below:
apt-get install proxmox-ve ntp ssh postfix ksm-control-daemon open-iscsi systemd-sysv
Postfix configuration during the installation:
Reboot the server:
After the server has been restarted, we now can access the Debian Proxmox from a browser. Type in the server IP with https and port 8006 in the URL bar. In my case:
Login to the Proxmox admin with username root and your password. After gging into the web interface, we have to configure the networking for Proxmox.
I've one network interface "eth0" for outgoing connections with the IP address '192.168.1.111' and my gateway is '192.168.1.254'. In this step, we want to create a new network interface (bridge) 'vmbr0', then we enable routing on this network interface and enable proxy arp on the outgoing interface 'eth0'. Vmbr0 is the interface for the VM's (Virtual Machines) in Proxmox. This is a good option if we only have one public IP and we want the to hide the VM's behind the host IP.
Go to the '/etc/network' directory and edit interfaces file with vim.
Below my eth0 configuration with the option enable proxy arp.
iface eth0 inet static
post-up echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
Next, configure a new bridge vmbr0 and enable routing on this interface by adding configuration below:
iface vmbr0 inet static
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '192.168.2.0/24' -o eth0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.168.2/24' -o eth0 -j MASQUERADE
A virtual machine in Proxmox will use this interface and get an IP address '192.168.2.xxx'.
The two lines at the bottom will enable the NAT function.
Save the configuration and exit, then reboot the server:
Now check the server IP, we will have two network interfaces eth0 and vmbr0.
There are many options to configure the Network in Proxmox VE, you can find the full documentation about Proxmox network configuration options here https://pve.proxmox.com/wiki/Network_Model.
In this step, we will add a new ISO file for the VM installation. We can add an ISO file from within the web interface by uploading the file, or we can download the iso file directly to the server on the command line (this is my recommendation).
Download iso file to directory "/var/lib/vz/template/iso" with wget or curl.
Example to download a Ubuntu 15.04 image:
Log into the Proxmox web interface, click on the right corner on the "Create VM" button.
Then you will get a new form, Name is the name of the new virtual machine here. Then clicks Next.
Select your Operating System. Here I will use Ubuntu Linux with kernel version 4. and click Next.
Select the ISO file that we've downloaded on step 5, then click Next.
Set the disk size for the virtual machine and click Next.
CPU configuration - core, sockets, type of virtual machine (here we use kvm64) and click Next.
Give memory/RAM size for the virtual machine and click next.
On the network configuration, select bridge mode to vmbr0. And the Model I use Realtek RTL8139. Click next.
And confirm the configuration by clicking on 'Finish'.
Now we van start the VM installation by clicking on the 'start' button and accessing the VM by clicking on 'console'.
Now you can install the Ubuntu OS in the VM in the way you like.
When the VM is installed, we will have to configure the network so that the VM can access the internet.
Edit the interfaces file in the VM.
I will add a new interface 'eth0' in the VM by adding the configuration below:
iface eth0 inet static
Save the file and exit.
The gateway IP is vmbr0 IP address on the host machine.
Now reboot the virtual machine and then try to access the internet by updating the repository or ping a server.
The proxmox installation is finished.
If you want to access the VM from the outside of proxmox, then you have to add new port forwarding rule on the host. For example, to access the SSH service in the VM, add the IPTables rules below:
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.2.10:22
The iptables rule will route the eth0 interface port 2222 to the virtual machine on IP 192.168.2.10 port 22. So now we can access the SSH in the VM from outside:
ssh -p 2222 vmusername@HOSTIP
Proxmox VE is an open source server virtualization based on Debian OS. Proxmox available as ISO file, so we can directly download and install it when we have physical access to the server, or we can install proxmox on our Debian server. Proxmox is powerful and easy to use, it provides a web-based administration interface so we can install and configure virtual machines with our Browser (Java and Icedtea should be installed). We can also configure Proxmox from the command line of the server, and Proxmox provides REST API for third-party applications. Proxmox has support for local and network storage systems, comes with high availability options builtin and provides functions for easy backup and restore of virtual servers. In my opinion, it is one of the best solutions for server virtualization.