Introduction
This project was an exciting opportunity to repurpose an old computer into a home server using Proxmox VE. The primary goal was to understand networking, Linux system administration, and the world of virtualization. By experimenting with virtual machines (VMs) and containers, I gained hands-on experience in networking protocols, security measures, and system configuration, which significantly improved my understanding of the Linux ecosystem.
Repurposing the Old Computer
I started by choosing a spare computer for the project. Here are the specifications of the machine before and after upgrades:
Before Upgrade:
- CPU: i5 2300
- GPU: Palit Geforce 760
- RAM: 2 x 4 GB DDR3
- MOBO: INTEL DQ67SW
- PSU: 500W
Upgrades:
- CPU: Upgraded to Intel Xeon E3-1275
- RAM: Upgraded to 4 x 8 GB DDR3
Once the hardware was ready, I installed Proxmox VE, a Type 1 hypervisor, on the computer. Proxmox allows users to deploy and manage virtual machines and containers efficiently. After completing the installation and initial configuration, I gained access to Proxmox's web-based interface, where I could upload VM images, create VMs, and allocate resources like vCPUs and RAM.
Setting Up Virtual Machines
With Proxmox, I was able to create several virtual machines running different operating systems, including Ubuntu, Windows, and Debian. The main aim was to understand how to deploy and configure various OSs within a server environment.
Setting up VMs was straightforward, but I encountered a limitation with architecture compatibility. Specifically, I found that Proxmox does not fully support ARM64 OS images for production environments, despite having some experimental support. This is something to consider when running operating systems typically used for the Raspberry Pi, as these often run on ARM-based architectures.
Virtualization and Resource Allocation
One of the benefits of upgrading to a Xeon E3-1275 CPU was the addition of Hyper-Threading technology. This allowed me to double the virtual cores available for the VMs, which greatly enhanced the server's performance by providing more threads to allocate to various virtual machines.
For the VMs running Ubuntu, I installed the Docker engine to allow for containerized applications. Docker proved to be a great tool for simplifying the deployment and management of software. Since Ubuntu is widely used and supported, it was an ideal choice for the base OS.
Docker Management with Portainer
After setting up Docker, I installed Portainer on my Ubuntu VM. Portainer provides a simple web-based interface to manage Docker containers, which is a major improvement over using the command line for container management. With Portainer, I could easily monitor container statuses, manage networks, and troubleshoot containerized applications.
Conclusion
This project was a valuable learning experience that deepened my knowledge of virtualization, networking, and system administration. Using Proxmox VE, I was able to efficiently manage multiple virtual machines and explore containerization with Docker and Portainer. By repurposing an old computer into a home server, I created a flexible and cost-effective platform for hosting various applications, experimenting with different operating systems, and learning more about server management.
Sources: