Part 1: Setting up a Proxmox Cluster
After acquiring four HP EliteDesk 800 G3 PCs from eBay, the first phase of my home data center project was getting them from bare metal to a fully functioning, clustered platform.
Each server came with:
- Intel Core i5-7500 CPU
- 8GB DDR4-2400 SDRAM (up to 64GB)
- 256GB SSD
All four cost me £84 (an absolute bargain).
For networking, I found a TP-Link TL-SG1016D 16-port unmanaged gigabit switch. Yes, it's unmanaged, but it was cheap and does the job.
Update the BIOS
Before installing any operating system, I updated the BIOS on all four machines. It's easy to overlook, but important for security and stability.

Running the latest BIOS patches hardware vulnerabilities and ensures the best compatibility for everything that follows.
Installing Proxmox VE

With the hardware in place, I installed Proxmox Virtual Environment (VE) on each server's 256GB SSD.
Proxmox is a powerful, open-source hypervisor that manages both full virtual machines and lightweight Linux Containers (LXC). This flexibility makes it perfect for running various open source services. You can find the installer and documentation on the Proxmox website.
Post-Installation Scripts
A standard Proxmox install is configured for commercial use. Using enterprise repositories that require a subscription and displaying a reminder every time you log in.
For my setup, I used the recommended Proxmox VE Helper-Scripts. One script to automate switching to the public (non-subscription repositories) and to disable the nag screen.
To install, on your Proxmox server, enter the following into the terminal:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/post-pve-install.sh)"
Update Processor Microcode
I updated the Intel processor microcode on each server. Microcode updates fix's hardware bugs, improves performance, and security.
➡️Proxmox VE Processor Microcode
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/microcode.sh)"
Setting Up Email Notifications
I wanted to receive email notifications, s0 I configured an SMTP relay on each server using a dedicated Gmail account. This lets each server send email notifications for system events such as, backup completions, hardware failures, and other events.
Generate Gmail App Password
- In your Google Account, go to Security -> 2-Step Verification and ensure it's enabled
- In the Security section, go to App passwords
- For ‘App’, select Mail. For ‘Device’, select Other, name it (e.g., “Proxmox“)
- Click Generate and copy the 16-character password
Install Required Packages
apt update
apt install -y libsasl2-modules mailutils
Create Credential File
Create and edit the password file:
nano /etc/postfix/sasl_passwd
Add the following line, replacing the placeholders with your details:
[smtp.gmail.com]:587 [email protected]:your-16-character-app-password
Secure the file and create the Postfix database:
chmod 600 /etc/postfix/sasl_passwd
postmap hash:/etc/postfix/sasl_passwd
Configure Postfix
Edit the main configuration file:
nano /etc/postfix/main.cf
Add these lines to the very end of the file.
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
Apply and Test
Reload the Postfix:
systemctl reload postfix
Send a test email, replacing the placeholder with your destination email address.
echo "This is a test email from Proxmox" | mail -s "Proxmox Test" [email protected]
Check your inbox to confirm it has arrived.
Installing Tailscale for Remote Access
To manage my cluster remotely, I installed Tailscale on each server. Tailscale builds a secure, private network over the internet using WireGuard, letting me access the Proxmox control panel from anywhere as if I were on the local network.
Run the Installation Script
Execute the official Tailscale installation script:
curl -fsSL https://tailscale.com/install.sh | sh
Start Tailscale and connect to your account.
tailscale up
After running the command, a login URL will appear. Copy it, paste it into a browser, and authenticate with your Tailscale account to add the server to your network (tailnet).
Verify Installation
Check that Tailscale is active:
tailscale status
Your Proxmox server is now securely connected to your tailnet.
Creating the Proxmox Cluster
With the individual servers ready, it was time to unite them. I configured them into a cluster, which allows all machines to be managed as a single entity from one web interface.
I decided not to enable high-availability storage at this point due to my network speeds, as each server currently has only a single 1GbE network interface. A redundant, high-speed storage network is a planned future upgrade.
Prerequisites
- All servers installed and running on the same network
- Nodes can ping each other by IP address
- Each node has a unique hostname
- You're logged into the Proxmox web interface
On the Main Node (Node 1)
Create the Cluster
In the terminal of your chosen main server, run:
pvecm create YourClusterName
Give your cluster a unique name without spaces.
Copy Join Information
In the Proxmox web interface, navigate to Datacenter → Cluster. Click Join Information, then click Copy Information. This copies the connection details to your clipboard.
On Each Joining Node (Node 2, Node 3, etc.)
Join the Cluster
In the web interface of the node you want to add, navigate to Datacenter → Cluster.
Paste Join Information
- Click
Join Cluster - Paste the information from the main node into the
Informationtext box. The IP address and fingerprint fields will fill automatically - Enter the root password for the main server (Node 1)
- Click
Join Your Cluster Name
The server's web interface will refresh as it joins. Repeat for any other servers.
Verify the Cluster
On any server, refresh the web interface. You should now see all connected servers listed under the data center view.
Alternatively, run this command in any server terminal:
pvecm nodes
It can be very tempting to install utilities or services directly on the Proxmox host, after all, it is just a standard Linux system underneath. This can lead to system clutter, where installed packages and their dependencies eventually conflict with Proxmox's own updates.
Keeping the host 'clean' is much safer because additional software can cause major system upgrades to fail or introduce security vulnerabilities that compromise the entire hypervisor.
It's regarded best practice to treat the host purely as infrastructure and place all applications inside their own VMs or LXC containers.
Quick Cheat Sheet 📄
Proxmox Post-Install & Microcode
# Run post-install script (non-subscription repos, disable nag)
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/post-pve-install.sh)"
# Update processor microcode
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/microcode.sh)"
Gmail SMTP Relay Setup
# Install packages
apt update
apt install -y libsasl2-modules mailutils
# Create/edit password file
nano /etc/postfix/sasl_passwd
# Add this line to the file:
[smtp.gmail.com]:587 [email protected]:your-16-character-app-password
# Secure file and create Postfix DB
chmod 600 /etc/postfix/sasl_passwd
postmap hash:/etc/postfix/sasl_passwd
# Edit main Postfix config
nano /etc/postfix/main.cf
# Add the following lines to the end of the file:
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
# Reload Postfix
systemctl reload postfix
# Send test email
echo "This is a test email from Proxmox" | mail -s "Proxmox Test" [email protected]
Tailscale Remote Access
# Install Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
# Start Tailscale and connect
tailscale up
# Check status
tailscale status
Proxmox Cluster Creation
# On Main Node (Node 1) - Create the cluster
pvecm create YourClusterName
# On Any Node - Verify cluster status
pvecm nodes
Applications and Packages
Virtualization & Management
- Proxmox Virtual Environment (VE)
- Website: https://www.proxmox.com
- Proxmox VE Helper-Scripts
Networking (VPN)
- Tailscale
- Website: https://tailscale.com
- WireGuard (Mentioned as the protocol Tailscale uses)
- Website: https://www.wireguard.com
System Services (Email)
- Postfix
- Website: https://www.postfix.org
- libsasl2-modules (Debian/Ubuntu Package)
- mailutils (GNU Package)
- Website: https://mailutils.org