How to Install Proxmox in your Homelab

Proxmox is an ultra-lightweight operating system (OS) based on Debian Linux. Unlike other systems, it focuses on providing a stellar virtualization experience through KVM and LXC. In this article, we will show you how to install Proxmox in a homelab system and convert it to a hypervisor powerhouse.

Preparing the Proxmox Installer

The first step in installing Proxmox is to obtain the ISO file from the developer’s website.

A screenshot highlighting the download button for the Proxmox ISO in the developer's website.

Next, use an image writer to create a bootable flash disk with the Proxmox ISO. In my case, I’m going to use BalenaEtcher on a separate machine to create my USB installer.

Click Flash from file, then select the Proxmox ISO from your system’s file browser.

A screenshot highlighting the "Flash from file" button in BalenaEtcher.

Click Select target and pick the flash disk that you want to write the image to. At the moment, a disk with around 4 GB of storage or more should be enough for a Proxmox installer.

A screenshot showing the available flash disk for writing the ISO image.

Click Flash! to start the ISO writing process. This could take between 3 to 5 minutes depending on the speed of your machine’s USB interface.

A screenshot highlighting the "Flash!" button in the BalenaEtcher program.

Installing Proxmox

Once done, you can now install Proxmox into your homelab server. Begin by making sure that your machine is completely turned off.

Plug the Proxmox flash drive into one of your server’s USB port, then load the system’s BIOS. Most motherboards allow you to access the BIOS by pressing either F12 or Delete as soon as you turn on the machine.

Select your Proxmox flash drive from the server’s BIOS and boot into it.

A picture highlighting the USB flash disk entry in the server's BIOS menu for booting up Proxmox.

Note: some systems don’t have a Quick Boot option for removable disks. You can fix this by putting your Proxmox flash drive at the top of your BIOS’ boot order.

Select Install Proxmox VE (Graphical), then press Enter.

A screenshot highlighting the Proxmox VE Graphical installer from the bootable USB.

Pick the disk where you want to install Proxmox from the Target Harddisk drop down box, then click Next.

A screenshot highlighting the drop down box for picking the main disk for Proxmox.

Select the Timezone and Keyboard Layout for your Proxmox server, then click Next. If your machine is connected to the internet, the installer will fill these with values based on your IP address.

A screenshot showing the appropriate locale and time zone settings for the server.

Provide a sufficiently random password for your Proxmox system, then type a valid Email address on the Email textbox.

A screenshot showing the password and email prompt for the installer.

Note: the password will serve as the root user’s password for your Proxmox system.

Double check that all the values are correct, then click Next.

Click the Management Interface drop down box, then select your homelab’s primary network interface. By default, the installer will select the currently active network interface.

A screenshot highlighting the drop down box for selecting the main network interface for the server.

Provide a hostname for your Proxmox system, then click Next.

A screenshot highlighting a valid FQDN for the Proxmox server running only on a local network.

Note: Proxmox requires an FQDN for its hostname. If you’re only running it on a local network, you can use “.arpa” for the homelab’s Top-Level Domain.

Confirm that the install details for your homelab are correct, then click Install to start the installation process. Once done, it will automatically restart your system and boot into Proxmox.

Post-Installation

At this point, you now have a Proxmox system running on your network. To access it, open a web browser on your client machine, then navigate to your homelab’s IP address followed by “:8006.”

A screenshot showing the IP address of the local homelab server along with its appropriate port.

Provide the credentials of your Proxmox system’s root user, then click Login.

Select pve on the left sidebar, then go to Updates -> Repositories.

A screenshot highlighting the section of the Proxmox dashboard for managing a node's repositories.

Click Add, then select “No-Subscription” from the Repository drop down box.

A screenshot showing the "No-Subscription" repository in the Proxmox dashboard.

Add a second repository, pick “Ceph Quincy No-Subscription” from the drop-down box, then click Add to finalize it.

Lastly, select the Enterprise repo links for Proxmox and Ceph, then click Disable. This will prevent the system from pulling package updates from these repositories.

A screenshot showing the two Enterprise-focused repositories that the user needs to disable.

Adding a New User in Proxmox

Click the Shell button on the dashboard’s upper right corner.

A screenshot highlighting the "Shell" button in the pve node's dashboard screen.

Run the following command to create a new user on your Proxmox system:

adduser ramces

Provide a password for your new Linux system user, then press Enter.

Fill up the account’s personal details, then press Enter to confirm it.

A terminal showing the process of creating a new user in the Proxmox console.

Go back to your Proxmox dashboard, select Datacenter on the left sidebar, then go to Permissions -> Users.

A screenshot highlighting the relative location of the Users section in Proxmox.

Click Add, then provide the username of the user that you just made in the root shell.

Keep the other fields in their default values, then click Add to create the account for your Proxmox dashboard.

A screenshot showing the user details screen for the new user in the Proxmox dashboard.

Note: the new user will have no privileges by default. You can change this by going to the Permissions section in the Datacenter dashboard.

Securing the SSH Daemon in Proxmox

While Proxmox is primarily managed through the web browser, there can be instances where you have to connect to the system through a terminal session. As such, it’s good practice to make sure that your system’s SSH daemon is secure and working.

Begin by clicking the Shell button on the dashboard’s upper right corner.

Open the SSH daemon’s config file using your favorite text editor:

nano /etc/ssh/sshd_config

Remove the Pound Sign (#) in front of the “Port” variable and change its value to a number above 1024. For instance, I set my SSH daemon to use port 30070.

A terminal highlighting the custom port number for the Proxmox SSH daemon.

Scroll down the file, look for the “PermitRootLogin” variable and change its value from “no” to “yes.”

A terminal highlighting the "PermitRootLogin" permission for the Proxmox server's SSH daemon.

Save your SSH config file, then run the following command to apply your new settings:

systemctl restart sshd.service

Enabling the Firewall and Limiting Access

Another thing that you can do to secure your Proxmox instance is to install and configure a firewall daemon to your server. This limits and allows you to control the open ports in your system.

Start by installing the UFW daemon from the Proxmox terminal:

apt update && apt upgrade -y
apt install ufw

Allow incoming connections to your SSH daemon and your Proxmox server’s dashboard:

ufw allow ssh
ufw allow 8006
A terminal showing the process of enabling two sets of ports for the Proxmox server.

Note: if you’ve changed the default SSH port, make sure to change the ufw command for SSH to your custom port number.

Enable UFW’s logging feature. This allows you to easily diagnose potential emerging issues on the homelab’s firewall:

ufw logging on

Start firewall daemon on your system:

ufw enable

Confirm that it’s working properly by checking the status of the firewall:

ufw status

Creating a Basic VM in Proxmox

With the server both secure and up-to-date, you can now create your first virtual machine inside Proxmox. Begin by clicking the local entry on your dashboard’s left sidebar.

A screenshot highlighting the location of the local disk entry in the Proxmox dashboard.

Select the ISO Images category, then click Upload. This will bring up a small pop-up window where you can select a local ISO image on your desktop that you can upload to your homelab.

A screenshot highlighting the "Upload" button for uploading ISO images to the Proxmox server.

Note: you can also click the Download from URL button to let Proxmox download the ISO image from its source website.

Once done, click the Create VM button on the dashboard’s upper right corner.

A screenshot highlighting the "Create VM" button in the Proxmox dashboard.

Provide a name for your new virtual machine, then click Next.

A screenshot highlighting the textbox for the VM's name.

Select your installer ISO from the ISO image drop down box, then click Next. In my case, I will install Debian as a VM in my Proxmox server.

A screenshot highlighting the Debian ISO in the Proxmox ISO image selection screen.

Use the default settings for the System, Disks, CPU, Memory, and Network sections. Conversely, you can tweak each option in these sections to customize your new VM further. For example, setting the value of the Disk size (GiB) in the Disks category will determine the total size of your VM’s hard disk.

A screenshot highlighting the "Disk size" textbox which determines the total size of the VM's hard disk.

Verify the current configuration of your Proxmox VM, then click Finish to create it.

A screenshot showing the overview confirmation screen for the new Proxmox VM.

Select your new VM from the dashboard’s left sidebar.

Lastly, click Start on the VM’s overview window to start the installation process for your guest system.

A screenshot highlighting the "Start" button for booting up the guest system.

Wrapping Up

With Proxmox running on your server, you can now explore and install different homelab apps for your local network. Start your self-hosting journey today by installing Docker and Tailscale on your Proxmox guest systems.

All alterations and screenshots by Ramces Red.

Be the first to comment! Get the discussion going.

Leave a Comment

Yeah! You've decided to leave a comment. That's fantastic! Check out our comment policy here. Let's have a personal and meaningful conversation.