This is the first part of Proxmox from scratch. By the end of it you have a server running Proxmox Virtual Environment, reachable from a browser and up to date. The following parts build on it: virtual machines, containers, storage, networking and backups.

Everything here is done on Proxmox VE 9.2, which came out in May 2026 [7]. If you find an older guide for version 8, be aware that 8 stopped getting security updates on 31 August 2026 [7].

What Proxmox is

Proxmox VE is an operating system for running other operating systems. You install it on a computer in place of Windows or an ordinary Linux, and from then on that computer hosts virtual machines and containers, which you manage from a web page. It is built on Debian, it is free to use, and it is what my own servers run.

Planning the server

Hardware requirements

The official minimum is modest: a 64-bit processor with Intel VT or AMD-V “for KVM full virtualization support”, and for trying it out “1 GB RAM, plus additional RAM needed for guests” [1]. For real use Proxmox recommends at least 2 GB for Proxmox itself, plus whatever you give your virtual machines and containers [1].

In practice that means almost any business PC from the last ten years will do. What decides how much you can run on it is memory, more than the processor.

The machine I use in this series is a Lenovo ThinkCentre M710q Tiny, a one-litre PC with a 7th generation Intel Core i5 (an i5-7500T) and 32 GB of RAM. It has one network port, and room for one M.2 drive and one 2.5" drive. Mine has a 2 TB NVMe drive, and a 1 TB 2.5" hard drive in the bay that I am still testing. I will use the NVMe for everything: booting, Proxmox VE itself, and the virtual machines and containers.

The Lenovo ThinkCentre M710q Tiny from the front

Opened from below, the Tiny shows its two memory slots, and the M.2 slot with the NVMe drive:

The underside of the M710q opened, with two memory modules and an NVMe drive in the M.2 slot

Two things to check on your own hardware before you start:

  • Virtualisation is switched on in the BIOS or UEFI setup. It is usually called Intel Virtualization Technology (VT-x) or SVM on AMD, and on many PCs it is off when they leave the factory. I had used mine as a desktop machine at our old place, so I had already switched on VT-x. I suggest double-checking it before you install, just to be sure.
  • The disk can be erased. The installer takes the whole disk: “All existing data on the selected drives will be removed during the installation process.” [3]

On the M710q the setting is under Advanced → CPU Setup. Both Intel(R) Virtualization Technology and VT-d were enabled on mine. VT-d is the one part 9 of this series needs, for passing the built-in graphics through to a virtual machine.

The CPU Setup page in the M710q’s BIOS, with Intel Virtualization Technology and VT-d enabled

While you are in there, one more setting is worth a look on a server: what the PC does when the power comes back after a power cut. On the M710q it is Power → After Power Loss, and I have it on Last State, so the server starts again by itself if it was running when the power went.

The After Power Loss setting in the M710q’s BIOS, with the choices Power Off, Power On and Last State

Storage considerations: ZFS, LVM-thin and network shares

The one decision in the installer that is hard to change later is the file system on the disk you install to. The choices are ext4, xfs, ZFS and BTRFS, where BTRFS is marked as a technology preview [3].

  • ext4 (or xfs) is the plain choice. The installer sets the disk up with LVM, and your virtual machines end up on a storage called local-lvm [3] [5]. It needs little memory and works on anything.
  • ZFS checks your data for corruption, compresses it, and makes snapshots cheap [6]. With two disks it can mirror them, so the server survives one disk failing. The price is memory: the ZFS documentation says “you need at least 8GB to start” [6], and Proxmox’s rule of thumb is about 1 GB of memory for every TB of storage in use [1].

One warning if your server has a RAID controller: “ZFS on top of any hardware RAID is not supported and can result in data loss.” [3] ZFS wants to see the disks directly.

I use ZFS, also on a server with only one disk. A single disk gives no protection against the disk failing, but I still get the checksums, the compression and the snapshots, and the later parts on storage and backups build on ZFS. With one disk, the installer calls this ZFS (RAID0) [6].

A single-drive pool is not ideal, but for me ZFS on a single drive is still better than ext4, because:

  1. I get told about errors and bit rot. The drive won’t die silently.
  2. I get snapshots. They freeze the drive at a point in time, which matters for protection against ransomware.
  3. I get ZFS send and receive. When replicating the drive to the backup server, it only has to transfer the blocks that have changed, and through the snapshots it knows exactly which blocks those are. rsync has to look at every file on both source and target to find out.

You do not have to plan the rest of the storage now. More disks, and shares from a NAS over NFS or SMB, can be added afterwards, and part 4 of the series is about exactly that.

Preparing the installation media

I did not use a USB stick myself. I have a small NVMe drive in an M.2-to-USB enclosure with Ventoy on it. Ventoy is a tool that boots ISO files you copy onto the drive, and shows a menu of them, so one drive holds every installer I use. I picked proxmox-ve_9.2-1.iso in the menu and then Boot in normal mode, and the Proxmox installer started. Ventoy will get a post of its own. If it does not boot the installer on your PC, the plain way below is what to fall back on.

A black, ribbed M.2-to-USB enclosure with its cable
Ventoy’s menu with several ISO files, proxmox-ve_9.2-1.iso selected

Download the installer from Proxmox’s download page: the file is called something like proxmox-ve_9.2-1.iso. You also need a USB stick that is larger than the file, and that you do not mind erasing [2].

How you write it to the stick depends on what your everyday computer runs:

  • Windows: use Etcher, or Rufus. In Rufus, answer No when it asks about downloading a different version of GRUB, and choose DD mode when it asks how to write the image [2].

  • Linux: find the stick’s device name by running lsblk before and after you plug it in, and then [2]:

    sh
    dd bs=1M conv=fdatasync if=./proxmox-ve_*.iso of=/dev/XYZ

    Replace XYZ with the stick. Be careful here: dd writes to whatever you point it at, without asking.

  • macOS: the documentation has a three-step method with hdiutil, diskutil and dd [2]. Etcher works on a Mac as well.

One tool not to use: “Do not use UNetbootin. It does not work with the Proxmox VE installation image.” [2]

Installing Proxmox VE

Connect a screen, a keyboard and the network cable, plug in the USB stick, and start the PC from the stick. On most PCs you get the boot menu with F12, on some with F2, Esc or Del.

1. The boot menu. Choose Install Proxmox VE (Graphical). If the picture is garbled or the screen stays black, start again and choose Install Proxmox VE (Terminal UI), which is the same installer in text mode [3]. I used the Terminal UI, so that is what the screenshots below show; it asks the same questions.

The Proxmox VE 9.2 installer’s boot menu, with Install Proxmox VE (Terminal UI) selected

2. The licence. Accept it.

3. Target disk. Pick the disk to install on. Click Options to choose the file system. For ZFS on a single disk, choose zfs (RAID0) and make sure only that disk is selected [3]. The advanced ZFS settings (ashift, compression, checksum, ARC size) can stay as they are.

The Target harddisk screen with the 2 TB NVMe drive chosen

In the Terminal UI the button is called Advanced options, and the file system is the first line in it:

The list of file systems in the installer: ext4, XFS, the ZFS levels and BTRFS, with ZFS (RAID0) selected

Below it, the installer lists every disk it can see, and they are all selected to begin with. Mine had three: the NVMe drive, the 2.5" hard drive, and the Ventoy drive I was installing from. Set every disk except the one you are installing to to – do not use –:

The advanced options with only the NVMe drive used, the two other disks set to do not use, and ashift 12, compression and checksum on

4. Location and keyboard. Country, time zone and keyboard layout. The installer usually guesses these [3]; check the keyboard layout, because you are about to type a password with it.

The location screen: Denmark, Europe/Copenhagen and a Danish keyboard layout

5. Password and email. This is the password for root, the administrator. It has to be at least 8 characters [3]; make it a good one, since this account can do everything. The email address is where the server sends its notifications, such as available updates and errors from scheduled jobs [3].

6. Network. Choose the network port, and give the server a name, an IP address, a gateway and a DNS server. The name has to be a full one, with a domain, for example pve1.home.arpa. Give the server an address that will not change: either one outside the range your router hands out, or one you reserve in the router. Everything you do later starts with typing this address into a browser.

My server is called priscilla, which is the name you will see in the rest of the screenshots. The installer also had Pin network interface names ticked, and I left it that way: it gives the network port a fixed name, here nic0.

The network screen with the management interface nic0, the hostname priscilla and the addresses blanked out

7. Summary. Check it and click Install. It “should not take more than a few minutes” [3]. When it is done, remove the USB stick and let the server restart.

The installer’s summary: ZFS (RAID0) on /dev/nvme0n1, Europe/Copenhagen, keyboard da, hostname priscilla, and Automatically reboot after successful installation ticked

When it has started, the screen shows a login prompt and, above it, the address of the web interface. From now on the server does not need a screen or a keyboard.

The console after the first start: a welcome text with the web interface’s address, and the priscilla login prompt

First steps after installation

On another computer, open a browser and go to the address from the screen: https:// followed by the server’s IP address and :8006 [3]. The browser warns you about the certificate, because the server has made its own; accept it and continue. In Firefox that means Advanced and then Proceed.

Firefox’s warning about the server’s self-signed certificate, with the button to proceed at the bottom

Log in as root with the password you chose, and with Linux PAM standard authentication as the realm [3].

The Proxmox VE login dialog, with the user name root and the realm Linux PAM standard authentication

You will get a message that the server has no valid subscription. That is expected. Proxmox is free to use, and a subscription buys support and access to the most thoroughly tested updates.

The No valid subscription message in the web interface

Click the server’s name in the tree to the left to see its Summary: processor, memory, disk, the kernel and the Proxmox version.

The Summary page for priscilla: 4 CPUs, 31 GiB of RAM, kernel 7.0 and pve-manager 9.2.2

Package repositories and updates

A new installation is set up to fetch updates from the enterprise repository, which needs a subscription. Without one, updating fails, so this is the first thing to change. This is what apt update said in the Shell on my new server: the Debian lines work, and the two enterprise lines fail with 401 Unauthorized.

apt update in the Shell, failing on the two enterprise repositories with 401 Unauthorized

Proxmox describes the alternative, the no-subscription repository, as meant “for testing and non-production use”, with packages that are “not always as heavily tested and validated” [4]. For a server at home that is the normal choice.

In the web interface:

  1. Click the server’s name in the tree to the left, then Updates → Repositories.
  2. Select the pve-enterprise line and click Disable. There is also an enterprise line for Ceph, in ceph.sources; disable that too.
  3. Click Add and choose No-Subscription.
The Add Repository dialog with its list: Enterprise, No-Subscription, Test and the same three for each Ceph version

Here is the list halfway through: the Ceph enterprise line is disabled and greyed out, pve-no-subscription has been added, and the pve-enterprise line at the bottom is selected, ready for Disable. The yellow warnings are Proxmox reminding you that no-subscription is not meant for production; on a server at home you can live with them.

You can also see that I have added the no-subscription lines for Ceph Squid and Ceph Tentacle, so my server uses the no-subscription repositories for Proxmox VE and for Ceph alike.

The APT Repositories page with the Ceph enterprise line disabled, pve-no-subscription added and pve-enterprise selected

Behind the scenes that creates the file /etc/apt/sources.list.d/proxmox.sources with this content [4]:

text
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg

If you have used older versions: Proxmox VE 9 is built on Debian 13, which uses these .sources files where there used to be one-line entries in sources.list.

Then install the updates. Under Updates, click Refresh, which fetches the package lists and should end with TASK OK:

The task viewer for Update package database, ending in TASK OK

The page then lists the packages that have a newer version:

The Updates page listing packages with their current and new versions

Upgrade opens a console window that runs the upgrade and asks before it starts. On my new server it was 76 packages to upgrade and 4 new ones; answer Y.

The upgrade console listing the packages to upgrade and asking Do you want to continue

Or, in the Shell in the web interface [4]:

sh
apt update
apt full-upgrade

Use full-upgrade, not plain upgrade: Proxmox updates sometimes add or replace packages, and plain upgrade skips those. If a new kernel was installed, restart the server.

Two tools for the shell: tmux and btop

Proxmox doesn’t come with every tool you might want on the command line. I install two right after the updates, both from the Debian repositories the server already uses:

sh
apt install tmux btop

tmux keeps a shell session running on the server when your connection to it is cut. Without it, anything you start over SSH, or in the Shell in the web interface, stops when the connection drops or the browser tab is closed. That matters for jobs that run for hours, like testing a disk or copying a large amount of data. Start tmux, run the job inside it, and leave with Ctrl-b followed by d. The job keeps running. Later, tmux attach takes you back to it. tmux can do a lot more, with several windows and split panes in one session; its own Getting Started guide [8] and Ham Vocke’s A Quick and Easy Guide to tmux [9] are good places to start.

btop shows what the server is busy with: load on each processor core, memory, disk and network activity, and the processes using the most. The web interface’s Summary gives you the overall picture; btop is quicker for finding which process is to blame.

Adding storage: ZFS, NFS and SMB/CIFS

After the installation the server has two storages. local holds ISO images, container templates and backups; local-zfs (or local-lvm if you chose ext4) holds the disks of your virtual machines and containers [5]. That is enough for the next two parts.

When you need more, there are two places to look:

  • More disks in the server: under the server’s name, Disks → ZFS creates a new pool on empty disks and adds it as storage in one go.
  • A share on another machine: Datacenter → Storage → Add has entries for NFS and SMB/CIFS, among others. Both can hold ISO images and backups, which makes a NAS a good place for those [5].

Part 4, Storage in Proxmox, goes through both.

Next steps in this series

The server is running, but it is not doing anything yet. In part 2, we create the first virtual machine. After that:

  • Part 3: an LXC container
  • Part 4: storage
  • Part 5: networking inside Proxmox
  • Part 6: backup of virtual machines and containers
  • Parts 7 and 8: a second server, a cluster, and moving guests between the two
  • Part 9: passing the built-in graphics through to a virtual machine
  • Part 10: upgrading and expanding a ZFS mirror

Sources

  1. System Requirements (Proxmox VE documentation), pulled 2026-10-05
  2. Prepare Installation Media (Proxmox VE documentation), pulled 2026-10-05
  3. Installation (Proxmox VE documentation), pulled 2026-10-05
  4. Package Repositories (Proxmox VE documentation), pulled 2026-10-05
  5. Storage (Proxmox VE documentation), pulled 2026-10-05
  6. ZFS on Linux (Proxmox VE documentation), pulled 2026-10-05
  7. Proxmox VE (endoflife.date), pulled 2026-10-05
  8. Getting Started (tmux wiki), pulled 2026-10-21
  9. A Quick and Easy Guide to tmux (Ham Vocke), pulled 2026-10-21