Setting Up Proxmox

Date: 11/19/2025

Introduction

I wanted to obtain experience with Proxmox because I've always managed VM's in either VMWare, Virtualbox, or Hyper-V. Specifically Type 2 hypervisors, nothing bare metal. Proxmox seemed like the next best step because it forced me to learn about managing the OS, but also allowed me to get experience with the additional features like ISO management, backups, storage, networking, certificates, etc., that Proxmox had to offer.

Installation

During installation, I found that the Proxmox installer automatically detected and assigned a DHCP address from my network. However, I quickly learned that for a server that would be hosting critical VMs, a static IP was essential for consistent access. The installer picked up the DHCP address initially, but to ensure stability, I created a DHCP reservation in my router and then manually configured that same IP address as a static assignment during the Proxmox setup process. I had to assign in statically because for some reason, only on the installer/setup, it would still put a DHCP address. This approach gave me the best of both worlds: preventing IP conflicts while maintaining a predictable address for management access. This is basic networking 101, but being able to utilize best practices

Creating VMs

The VM creation process in Proxmox was straightforward once I understood the interface. I started with a basic Linux VM to familiarize myself with the workflow, configuring CPU cores, RAM allocation, and disk space through the web interface. One key difference from Type 2 hypervisors was the need to understand storage backends. Proxmox uses LVM-thin by default, which provides efficient snapshot capabilities. I experimented with different VM configurations to understand resource allocation and learned how to properly size VMs based on their intended workload. The ability to clone VMs and create templates became invaluable for quickly spinning up test environments.

Uploading ISOs

ISO management in Proxmox proved to be more nuanced than I initially expected. I discovered that Proxmox offers a fantastic feature where you can download ISOs directly from a URL, which automatically pulls the latest version and stores it in the correct directory structure. This method worked flawlessly for distributions like Ubuntu and Debian. However, I ran into issues when attempting to upload ISOs directly through the browser interface by copying from my desktop. These uploads consistently resulted in corrupted ISO files that failed during VM installation, throwing errors about invalid boot sectors or unreadable media. I learned that for local ISOs, using SCP or the command line to transfer files to the `/var/lib/vz/template/iso/` directory was the reliable approach, ensuring file integrity throughout the transfer process.

The Why Behind This Project

The primary motivation for moving to Proxmox was achieving independence from my desktop and laptop for running virtual machines. Previously, my VMs were dependent on whichever machine I was using at the time, meaning they'd shut down when I powered off my workstation or needed to reboot. With Proxmox running on dedicated hardware, I now have VMs that run continuously, providing consistent access to my lab environment regardless of which device I'm working from. This is particularly valuable for my Parrot OS instance. I can now access the same environment whether I'm at my desktop in my home office or working from my Ubuntu laptop elsewhere. Having a persistent, always-available lab environment has fundamentally changed how I approach learning and testing. This lead me to another project that I want to work on, and that's a repeatable Docker config where I can run these as containers instead on any device that I'm on.

Next Steps

Building on this foundation, my next project involves deploying Windows Server 2025 as a VM on Proxmox to host internal DNS services. This will allow me to implement proper name resolution across my homelab, create custom internal domains, and gain hands-on experience with more advanced DNS functionality. Managing DNS internally will also enable me to better simulate enterprise network configurations and explore more advanced scenarios like split-horizon DNS and conditional forwarding. That project will get its own dedicated writeup as I work through the implementation and document the lessons learned.

← Back to Write-ups