Server Installation
The source material this page replaces covers Ubuntu Server 14.04 installation in 24 screenshot steps. This series diverges at the most fundamental level: the server runs Proxmox VE 8.x, not bare Ubuntu Server. Proxmox is the hypervisor layer. Ubuntu Server runs inside LXC containers and VMs on top of it, not on the bare metal.
This page covers downloading and verifying the Proxmox ISO, creating the installation USB drive, and working through the Proxmox installer on the February hardware.
Prerequisites
The physical build of the February server is documented in the February Server Project series. By this point:
- The server is assembled and verified to POST correctly
- All hardware is detected in the BIOS: CPU, RAM, storage devices, GPU
- The BIOS is updated to the latest version
- UEFI secure boot is disabled (Proxmox requires this)
- Virtualisation is enabled in the BIOS (AMD-V / SVM for the Ryzen 7 5700X)
Download and verify the Proxmox ISO
Download the current Proxmox VE ISO from the official website:
https://www.proxmox.com/en/downloads/proxmox-virtual-environment/iso
Download the latest stable release (Proxmox VE 8.x at the time of writing) and the corresponding SHA256 checksum file.
Verify the download before writing it to USB:
# Verify the checksum
sha256sum -c proxmox-ve_*.iso.sha256sums
# Expected output: proxmox-ve_x.x-x.iso: OK
Proxmox also publishes GPG-signed checksum files. Verify the signature if you want additional assurance:
# Import the Proxmox release key
gpg --keyserver keys.openpgp.org \
--recv-keys 'F4E1 26CB A3A0 2F7C 5FA2 A9B7 F35B B786 7BBE B512'
# Verify the signed checksum file
gpg --verify proxmox-ve_*.iso.sha256sums.asc proxmox-ve_*.iso.sha256sums
Create the installation USB drive
Write the ISO to a USB drive (8GB minimum). On the Kubuntu desktop:
# Identify the USB drive device
lsblk
# Write the ISO (replace /dev/sdX with your USB drive device)
sudo dd if=proxmox-ve_*.iso of=/dev/sdX bs=4M conv=fsync status=progress
Alternatively, use the Disks application in KDE to restore the image to the USB drive via the graphical interface.
Boot from USB
Insert the USB drive into the February server and power it on. Press the boot device selection key at startup (typically F12, F10, or Del depending on the motherboard). Select the USB drive.
The Proxmox boot menu appears. Select Install Proxmox VE (Graphical) for the guided installer.
Installation walkthrough
License agreement
Accept the EULA to proceed. Proxmox VE is open source software licensed under the GNU AGPL v3 for the core components.
Target hard disk
Proxmox will install its operating system on a dedicated drive. For the February server with multiple storage devices, select the NVMe drive for the Proxmox OS installation. This leaves the HDDs and SSDs available for storage configuration after installation.
Click Options to configure the filesystem:
| Setting | Value |
|---|---|
| Filesystem | ext4 (for the OS drive) or ZFS (RAID0) |
| Disk | The NVMe drive |
For the OS drive, ext4 is simpler and perfectly adequate. ZFS on the OS drive is possible but adds complexity without meaningful benefit for a small NVMe hosting only the Proxmox OS.
Click Next after selecting the target disk.
Location and timezone
| Setting | Value |
|---|---|
| Country | United Kingdom |
| Timezone | Europe/London |
| Keyboard Layout | English (UK) |
Administration password and email
Set the root password for Proxmox. Generate a strong password in KeePassXC and store it there. This is the password for the Proxmox web interface and the root SSH account.
Enter an email address for system notifications. This should be your actual address since Proxmox sends alerts for critical events. The email delivery configuration is covered in the server mail section.
Network configuration
Proxmox detects the available network interfaces. Configure the management interface:
| Setting | Value |
|---|---|
| Management Interface | The primary NIC (typically the first detected interface) |
| Hostname (FQDN) | server.yourdomain.net |
| IP Address | 10.1.0.10 (or the Core VLAN address assigned in the DHCP section) |
| Netmask | 255.255.255.0 |
| Gateway | 10.1.0.1 |
| DNS Server | 10.1.0.1 (internal Unbound resolver, or 1.1.1.1 if not yet available) |
The IP address here becomes the permanent management address for the Proxmox web interface. Set it to a static address outside the DHCP range that matches the static DHCP assignment configured on the UDM-SE.
Summary and installation
Review the summary screen. Verify the target disk, network settings, and timezone before proceeding.
Click Install. The installation takes approximately 5-10 minutes depending on storage speed. The server reboots automatically when complete.
Remove the USB drive when prompted or after the reboot begins.
First boot and web interface
After the reboot, Proxmox displays a console message showing the management URL:
Welcome to the Proxmox Virtual Environment. Please use your web browser to configure this server - connect to:
https://10.1.0.10:8006/
From the Kubuntu desktop, open Brave and navigate to https://10.1.0.10:8006/. A certificate warning appears because Proxmox uses a self-signed certificate by default. Accept the exception for now. The certificate will be replaced with one from the internal CA in the server TLS configuration section.
Log in with:
- Username:
root - Password: the password set during installation
- Realm: Linux PAM standard authentication
The Proxmox dashboard shows the server node, current resource usage, and the storage configuration. The left panel shows the node name (pve by default, or whatever was set during installation).
Post-installation: update Proxmox
Before doing anything else, update Proxmox to the latest packages. Proxmox installs from the enterprise repository by default, which requires a subscription. For a homelab without a subscription, switch to the no-subscription repository.
Disable the enterprise repository
In the web interface, navigate to the node > Updates > Repositories. Disable the enterprise repository by selecting it and clicking Disable.
Enable the no-subscription repository
Add the no-subscription repository. In a shell on the Proxmox host (via the web interface: node > Shell, or via SSH):
# Add the no-subscription repository
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" | \
tee /etc/apt/sources.list.d/pve-no-subscription.list
# Disable the enterprise repo (if not already done via the GUI)
sed -i 's/^deb/# deb/' /etc/apt/sources.list.d/pve-enterprise.list
# Update and upgrade
apt update && apt full-upgrade -y
After the upgrade, reboot if a new kernel was installed:
reboot
Accept the no-subscription nag
Proxmox shows a subscription nag dialog on login when using the no-subscription repository. This is cosmetic and does not affect functionality. It can be suppressed by editing the Proxmox web UI JavaScript:
# Suppress the subscription nag (re-apply after Proxmox updates)
sed -i.bak "s/data.status !== 'Active'/false/g" \
/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
# Restart the Proxmox web service
systemctl restart pveproxy
This modification is overwritten by Proxmox package updates. Re-apply it after any Proxmox update. Alternatively, accept the nag dialog on each login and move on.
Connecting via SSH
SSH access to the Proxmox host uses the same root credentials set during installation.
Add an entry to the desktop SSH config:
Host pve
Hostname 10.1.0.10
User root
Port 22
IdentityFile ~/.ssh/id_ed25519
Add your desktop’s public SSH key to the Proxmox host:
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@10.1.0.10
Verify SSH access:
ssh pve
What comes next
The Proxmox installation is complete. The server is running but empty: no VMs, no containers, no services. The next steps are:
- Storage configuration: ZFS pool for the eight HDDs, SSD allocation for VM and container storage
- Network configuration: VLAN bridges, bonding, and the management interface
- Base container template: Ubuntu 24.04 LTS with common configuration applied
- First container: DNS resolver (Unbound)
Each of these is covered in the following pages.
Proxmox is stable and rarely requires attention once configured. The most common cause of problems in the early stages is storage misconfiguration. Take time with the ZFS pool setup. A ZFS pool configured incorrectly before data is stored on it is straightforward to rebuild. One configured incorrectly after services are running is considerably more painful.