Proxmox Hypervisor

Proxmox Hypervisor

When it comes to deploying systems and services on private, or commodity hardware for production, development, and prototyping, one of the most popular is ProxmoxVE. It is an operating system based on Debian, built and designed around functioning as a hypervisor, and management interface for creating and deploying Virtual Machines and Linux Containers.

ProxmoxVE is a free and open operating system, however they also have a subscription service that allows for a more robust set of software repositories designed around enterprise use, that also includes support channels. However you aren't really missing anything by using the free version, and it's one of my favorite operating systems. You can disable the enterprise repositories, enable the free ones, and still enjoy full functionality and software updates.

To begin, you'll need to download the ProxmoxVE installation ISO from the official website. Once downloaded, create a bootable USB drive using the ISO file. Then, insert the USB drive into your server and restart it. During the boot process, select the option to boot from the USB drive.

Once in the installation menu, follow these steps:

  1. Choose the language and keyboard layout.
  2. Select the hard disk where you want to install ProxmoxVE.
  3. Configure the network settings (optional).
  4. Set the root password.
  5. Configure any additional settings as needed.

Disable Enterprise Repositories and Add the Free Repositories

Once Installation is complete, and rebooted you may login to the machine via SSH, or open up the web based management interface via

http://<ipaddress-of-proxmox>:8006

Once you have disabled/enabled the proper repositories for your use case

You should now make a list of your favorite operating systems, and download their ISO files. You can then place them on the sever for use in VM/Containers by copying them directly to

/var/lib/vz/template/iso

or you can opt to upload them via the web console

At this point you can click on one of the buttons at the top of the web interface and create your first machine

ProxmoxVE supports both virtual machines (VMs) and Linux containers (LXC). While VMs provide a more traditional, hardware-emulated environment, LXC allows you to run multiple Linux instances on a single host without the need for hardware emulation.

When choosing between a VM and an LXC, consider:

  • VMs are suitable for:
    • Legacy applications that require specific hardware configurations.
    • Applications with high resource requirements (e.g., CPU, memory).
  • LXC is suitable for:
    • Lightweight, Linux-based applications.
    • Containers that need to run on the same host.

Beware that a container will share the kernel of the Proxmox host OS, while the VM will be a fully independent, and virtualized operating system. This could be an important decision with regards to security, so be aware of the potential risks when using linux containers for any publicly exposed services.

When serving to your local environment, and security isn't a major complication, containers can be very flexible, especially when making changes to hardware resources. I will frequently use a template I have created with docker/podman pre-installed, as well as my favorite management utilities. I can then quickly boot the container, pull the docker compose file, and be off to the races testing.

When deploying public service, take the time to first familiarize yourself with the fully configurable firewall, and software defined networking stacks that are included in ProxmoxVE to ensure you are prepared, and configured for public exposure.