Installing proxmox on a old server desktop

Installing proxmox on a old server desktop

Background

Recently I got my hands on an old server desktop. I plan to repurpose it into a home lab to host some internal applications to be used at home and also host some of my side projects which can be externally accessed by the public. I have decided to try installing Proxmox on the desktop.

Proxmox is an open-source virtualization management platform that can provide both Kernel-based Virtual machines (KVM) and also container-based virtualization with Linux Containers (LXC). It also provides a nifty web-based interface for the user to interact with Proxmox.

Hardware specs

Here is some hardware information about my old server desktop:

  • Precision Tower 5810

  • Intel Xeon E5-1607 v3

  • Nvidia Quadro K2200

  • 8GB of ram

  • 256GB Samsung SSD

  • 500GB Hard disk drive

It's a pretty old desktop, released in 2014 and I managed to get all its components for free. Next, we can try to wipe everything in the disk drives and install Proxmox.

Installing Proxmox

  1. The Proxmox VE (Virtual Environment) can be downloaded for free from the official Proxmox website. The version I am using is proxmox-ve_7.3-1.iso.

  2. Create a bootable installation media from a USB drive. Here I used Rufus to write the Proxmox ISO image.

    Rufus

    For Rufus, remember to write in DD Image or else it would not work.

    select DD image mode

  3. Insert the USB drive into the desktop and boot from the USB drive.

    • remember to disable secure boot on the BIOS of certain Desktop

    • you might need to enter the BIOS to change the boot order so that the USB drive can be booted first

  4. Follow the installation guide shown on the desktop

    1. Select install proxmox ve

    2. Accept End User License Agreement

    3. Select which disk to be used for installing Proxmox

    4. Select password, language and keyboard layout

    5. Configure the management network settings. Here my router is on 192.168.1.254, which I will be using as my gateway and DNS server. I set the IP address of my Proxmox server to 192.168.1.2 for easy reference. In the router web interface, I also assigned a static IP address of 192.168.1.2 to the Mac address of my desktop.

      • Hostname: host1.pve.local

      • IP address: 192.168.1.2

      • Gateway: 192.168.1.254

      • DNS server: 192.168.1.254

    6. After installation is successful, you will be prompted to reboot.

Accessing Proxmox Web Interface

Once fully installed, we can go to the Proxmox web interface denoted by the IP address of the Proxmox server and run on port 8006. In my case, it would be at https://192.168.1.2:8006. The interface is shown below.

proxmox interface

Currently, it only has one node, which represents a physical server that is currently running. We could install another Promox on another desktop to have another node, but one should be enough for a small home lab.

Creating Linux Containers

Now, we are ready to create our Linux Containers.

I want to use Linux Containers (LXC) over Kernel-based Virtual machines (KVM) because it provides lightweight virtualization and efficient resource utilization. KVM runs its own kernel as compared with LXC which uses the host operating system's kernel and shares them with other containers. This means that there is less overhead and fewer resources utilized.

The downside of LXC is that since our host operating system uses Linux, LXC can only run Linux-based operating systems such as Ubuntu or ArchLinux.

Let's get some LXC templates first. Under host1 > local > CT Templates > Templates, choose ubuntu-22.04-standard and then press download.

download template

then click on Create CT on the top right-hand side of the interface. Set our Node as host1, our physical server and the hostname of our LXC as internal. I intend for this LXC to contain all my docker applications that are used internally in my home and not exposed to the public.

create LXC 1

Next, select the template we had just downloaded earlier.

create LXC template

Set the amount of disk space we require.

create LXC storage

Followed by the size of the ram we require.

create LXC RAM

Lastly, we configure the IPv4 and IPv6 to use DHCP, to dynamically allocate IP addresses for our new LXC.

create LXC network

Confirm our selection and then reboot. Once our LXC has started up, we can view it through the console tab as shown below.

console output

I will set up 2 more containers, one that is externally accessible for public use, named external, and the other for development use, named dev.

Architecture

Here is an overview of what I have created.

architecture

Conclusion

I have installed Proxmox on an old desktop and launched three Linux containers. In the future, I plan to install applications that I can use in my own home network and also to host some of my projects to the public.