Homelab Guides
Description
Proxmox Virtual Environment is a complete, open-source server management platform for enterprise virtualization. It tightly integrates the KVM hypervisor and Linux Containers (LXC), software-defined storage and networking functionality, on a single platform. With the integrated web-based user interface you can manage VMs and containers, high availability for clusters, or the integrated disaster recovery tools with ease.
BIOS Settings
In the BIOS, ensure the below are enabled:
Intel(R) Virtualization Technology
VT-d
Personally I disableCSM Support
and use UEFI exclusively.
Additionally, I also like to tweak the machine for reduced power consumption:C State Support
set to setting with highest level of C-State (e.g.,C1C3C6C7C8
).- Disable
PxE
andWake on Lan
- Enable
Enhanced Power Saving Mode
- Disable all other
Wake on*
options - Enable
ASPM Support
for PCIe
Initial Setup
The installation is straightforward, download the ISO, flash it to a USB drive using your tool of choice, and if you get stuck, follow the instructions at Installation - Proxmox Virtual Environment.
On the first screen where choosing your Target Harddisk
, click Options and reduce
maxroot
to 32.0
(GiB). As the name suggests this will use 32GB for your root
volume, and the balance for local-lvm
, which is where your containers and virtual machines
can be stored.
Follow the rest of the steps in the wizard, and you should end up with the machine booting into the command line with details showing what IP address and port you can access the web UI on.
This machine will now be a "Node" in your Proxmox environment. If you build more physical machines running Proxmox VE, they will each be a node, which you could group together under one Proxmox Datacenter.
Storage
Proxmox runs Debian under the hood, and thus has direct access to all the storage devices on your machine. However, if you want to use external USB hard drives as storage, you will have to manually mount them in the CLI (and handle things like automount/mount at boot). As you might assume, Proxmox doesn't particularly handle disconnected drives well.
If you have multiple drives in your system, you have the option to passthrough entire drive(s) to virtual machines, e.g. if you're running a NAS in a Virtual Machine, such as OpenMediaVault.
local
vs local-lvm
local
is folder where you can store ISO images, backups of containers/VMs, templates, and
other files. local-lvm
is a thin provisioned volume where you can store container and VM
volumes that act as virtual hard drives inside the guest. In practice, you'll place an Installer ISO in
local
, and the guest's virtual C:\
drive on local-lvm
.
Authentication
Later on you'll want to create additional users to separate privileges. In particular, running commands remotely using the API, and using the mobile app will require API tokens. For this I'd highly recommend creating separate users instead of using the root account.
PVE Users
When creating a new user, you'll see an option where you can choose "Linux PAM standard authentication"
or "Proxmox VE authentication server". PAM uses the OS' user accounts (e.g., the ones you create in the
shell using adduser
), whilst PVE accounts are specific to Proxmox. You'll want to choose the
latter so that Proxmox can manage the new account.
API Tokens
Each API Token is linked to a user. Something that I overlooked initially is that both the User Account and the API Token need to be granted permissions. This will come in particularly handy if you make use of SPICE to remotely access Linux Virtual Machines.
Mobile App
There is a mobile app that works much better on a smartphone than the web UI. I find it particularly useful for (re)starting virtual machines that use GPU and USB passthrough, allowing you to use your Proxmox server as a sort-of thin client to access a specific VM.
Community Repositories
- Package Repositories - Proxmox VE
- Comment out the two repos in:
/etc/apt/sources.list.d/ceph.list
/etc/apt/sources.list.d/pve-enterprise.list
- Append the below line to the file
/etc/apt/sources.list
:deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
- Now you can run
apt update && apt upgrade -y