Now, we’ll need to install Proxmox on the server. I won’t cover the basic installation in this post, but I am using Proxmox VE 5, which is available as a template during installation with OVH’s wizard.

Securing Proxmox’s web interface

Once you have installed your hypervisor and logged in, I recommend taking a couple of extra steps to improve security, because the web interface is public facing:

  1. Set up your own administrative user and disable the default one.
  2. Set up two-factor authentication. I followed this guide.
  3. Get a valid SSL certificate. I followed this guide to get a certificate from Let’s Encrypt using (but the steps using certbot look good, too).
  4. Disable password authentication over SSH and use key authentication instead.

Disabling the enterprise APT repository

Unless you have a Proxmox subscription, apt will fail with an exit code of 100. This is because it is trying to read from the subscription-only enterprise APT repository.

Comment out the only line in /etc/apt/sources.list.d/pve-enterprise.list and run apt update.

Adding the “no subscription” repository to /etc/apt/sources.list means you will still receive Proxmox updates:

# Please note that the APT repositories in this sample file use the UK Debian
# mirror
deb bullseye main contrib

deb bullseye-updates main contrib

# security updates
deb bullseye-security main contrib

# PVE pve-no-subscription repository provided by,
# NOT recommended for production use
deb bullseye pve-no-subscription

See here for more information.

Network bridges

For the most basic setup, three network bridges are required (which will become the WAN, LAN and OPT1 interfaces in our router). These are configured in the host node’s network settings.

NameTypePorts/SlavesIP addressSubnet maskGateway
vmbr0Linux bridgeeth0Primary IP address (ex. gateway address (ex.
vmbr1Linux bridgedummy0(none)(none)(none)
vmbr2Linux bridgedummy1(none)(none)(none)

Virtual hardware for pfSense

Below are the current specifications for my router’s virtual hardware. Your mileage may vary.

CPU2 vCPUsA type of “host” (for host-passthrough) is required if you would like to use AES-NI CPU cryptography
Storage32GI am using a VirtIO disk
Network Device 1vmbr0, VirtIO (or E1000)This will be used as the WAN interface
Network Device 2vmbr1, VirtIO (or E1000)This will be used as the LAN interface
Network Device 3vmbr2, VirtIO (or E1000)This will be used as the OPT1 interface

In the next part, we’ll install pfSense and configure the basic interfaces.

Read part 3