If you've ever installed Proxmox VE by hand, you know the drill. Boot the USB stick, click through the EULA, pick a disk, type the root password twice, set the timezone, configure the network, wait for the copy to finish, reboot. It takes maybe ten minutes the first time. It's mildly annoying the fifth time. By the tenth time — because you're rebuilding a homelab node, testing a cluster, or provisioning several machines at a colo — it stops being annoying and starts being a waste of an afternoon.

Proxmox VE has a built-in way to skip all of that clicking. You write a small configuration file describing exactly how you want the install to go, bake it into a custom ISO (or serve it over the network), and the installer runs itself. No keyboard required at the target machine.

What You Will Learn

  • What an "answer file" is and why Proxmox VE uses the TOML format for it
  • How to install and use proxmox-auto-install-assistant, the tool that builds automated-install media
  • How to write a working answer.toml covering the root password, network, and disk setup
  • How to validate the file before you trust it on real hardware
  • How to bake the answer file into a bootable ISO and run an unattended install
  • The other two delivery methods — a labeled USB partition and an HTTP/PXE server — and when you'd actually reach for them
  • The errors people run into most often, and where the installer hides its logs when something goes wrong

What Is This Feature?

Automated installation is a mode built into the Proxmox VE installer since version 8.1. Instead of you answering the installer's questions on screen, the installer reads the answers from a file. That file is called an answer file, and it's written in TOML — a plain-text configuration format that looks a lot like an INI file, with sections in square brackets and key = "value" pairs underneath. It's designed to be readable without a manual, which is part of why Proxmox picked it.

The tool that does the actual work is proxmox-auto-install-assistant. It takes a standard Proxmox VE ISO and your answer file, and produces a new ISO (or PXE boot files, or a USB image) that skips the interactive questions entirely. When that media boots, you'll notice a new entry on the boot menu called "Automated Installation," which is selected automatically after a 10-second countdown.

None of this is a separate product or a paid add-on — it ships as a regular Debian package (proxmox-auto-install-assistant) that you install with apt, and it works with the same free ISO you'd normally download from proxmox.com.

Why Would You Use It?

The obvious case is standing up more than one node. If you're building a three-node cluster, typing the same answers into the installer three times in a row is exactly the kind of repetitive task computers are supposed to save you from.

It's also useful for anyone who rebuilds the same box repeatedly — testing storage configurations, benchmarking different ZFS layouts (ZFS is Proxmox's built-in software RAID and volume manager; more on that below), or just resetting a lab machine back to a known state after breaking it on purpose.

There's a quieter benefit too: consistency. When you type answers by hand, at 11pm, on your fourth reinstall of the day, you eventually fat-finger a hostname or pick the wrong disk. An answer file removes that risk because the same file produces the same result every time.

Honestly, if you're installing Proxmox once on a single home server and you're not planning to touch it again for a year, skip this. The interactive installer takes ten minutes and there's no reason to learn TOML syntax for a one-time job. This feature earns its keep once you're doing the same install more than two or three times.

Prerequisites

  • A Proxmox VE ISO downloaded from proxmox.com (version 8.1 or newer — automated installation didn't exist before that release)
  • A Linux machine to prepare the media on. This can be your workstation, an existing Proxmox VE host, or any Debian-based system — it doesn't need to be the target machine
  • Root or sudo access on that machine, since you'll be installing a package and writing to a USB device
  • A blank USB drive, 4 GB or larger, if you're going the "bootable USB" route (most common for homelabs)
  • Basic comfort with a text editor and a terminal — you don't need to know TOML beforehand, this guide covers everything you'll type
  • The disk and network details for your target machine, if you want the answer file to pick a specific disk rather than the first one it finds

Step-by-Step Tutorial

1. Install the assistant tool and its dependency

On the machine you'll use to prepare the media, run:

apt update
apt install proxmox-auto-install-assistant xorriso

xorriso is the utility that actually rebuilds ISO images — the assistant tool calls it behind the scenes, so without it the ISO-building step fails.

2. Get the source ISO

Download the standard Proxmox VE ISO from the official downloads page if you haven't already. You don't need a special "automated" edition — the same ISO everyone uses for a manual install works here. Place it somewhere convenient, for example /root/pve-8.4.iso.

3. Write your answer.toml file

Create a file named answer.toml and start with the [global] section. This covers the same basic questions the interactive installer asks first — keyboard layout, location, root password, and where the machine reports its status.

[global]
keyboard = "en-us"
country = "us"
fqdn = "pve1.homelab.local"
mailto = "admin@homelab.local"
timezone = "America/New_York"
root-password = "ChangeMe123!"
reboot-on-error = false

Two things to know here. First, you need exactly one of root-password or root-password-hashed — never both, never neither, or validation will fail. Second, leave reboot-on-error set to false while you're testing. If it's true and something goes wrong, the machine reboots and loops the same failure before you get a chance to read the error.

Next, add the [network] section. The simplest option is to let DHCP hand out an address:

[network]
source = "from-dhcp"

If you want a fixed IP instead, set the source to from-answer and specify it directly:

[network]
source = "from-answer"
cidr = "192.168.1.50/24"
gateway = "192.168.1.1"
dns = "192.168.1.1"

Finally, the [disk-setup] section tells the installer which disk to wipe and how to format it. This is the section to double-check carefully, since it decides what gets erased.

[disk-setup]
filesystem = "ext4"
disk-list = ["sda"]
lvm.swapsize = 8

If you'd rather use ZFS — Proxmox's built-in storage system that pools multiple disks together and can survive a drive failure without losing data — swap the filesystem line and add a raid level:

[disk-setup]
filesystem = "zfs"
disk-list = ["sda", "sdb"]
zfs.raid = "raid1"

On a machine you're not physically standing in front of, naming disks by sda/sdb is risky because Linux doesn't always assign those names consistently between boots. A safer approach is matching by serial number instead:

[disk-setup]
filesystem = "ext4"
filter.ID_SERIAL = "Samsung_SSD_870*"

4. Validate the answer file before you trust it

This step catches typos before they turn into a failed install on real hardware:

proxmox-auto-install-assistant validate-answer answer.toml

If everything parses correctly, the tool exits quietly. If something's wrong — a missing quote, a section named incorrectly, both password fields set — it tells you exactly which line and field to fix.

5. Build the ISO with the answer file baked in

Now generate a new ISO that already contains your answer file:

proxmox-auto-install-assistant prepare-iso pve-8.4.iso \
  --fetch-from iso \
  --answer-file answer.toml \
  --output pve-8.4-auto.iso

This takes well under a minute on most machines — it's just repacking the ISO, not rebuilding it from scratch. You'll end up with a new file, pve-8.4-auto.iso, that behaves exactly like the original except it now skips the interactive questions.

6. Write the new ISO to a USB drive

Use whatever tool you'd normally use to write a bootable ISO — dd, balenaEtcher, Rufus, whichever you're comfortable with. On Linux:

dd if=pve-8.4-auto.iso of=/dev/sdX bs=4M status=progress conv=fsync

Replace /dev/sdX with your actual USB device — check with lsblk first, because pointing dd at the wrong device will silently destroy whatever's on it.

7. Boot the target machine

Plug the USB drive into the target machine and boot from it. You'll see the normal Proxmox VE boot menu, but now with an extra entry: "Automated Installation." Leave it alone and it selects itself after 10 seconds. From there, the installer runs through every step on its own — partitioning the disk, copying files, setting the password, configuring the network — with no prompts.

8. Confirm it worked

Once the machine reboots into its new install, check the console for the IP address it picked up, then open https://that-ip:8006 in a browser and log in as root with the password from your answer file. If you set an fqdn, that hostname should also show up in the top-left corner of the web interface.

Other ways to deliver the answer file

Baking the file into the ISO is the simplest method and the right starting point, but it's not the only one. If you'd rather keep one generic ISO and swap answer files without rebuilding it each time, use --fetch-from partition instead of iso, then copy answer.toml onto a second, FAT-formatted USB partition labeled PROXMOX-AIS. The installer looks for that label at boot and reads the file from there.

For larger deployments — say, a rack of new servers all booting over the network — --fetch-from http points the installer at a web server that hands back the answer file, optionally keyed by MAC address so each machine gets its own configuration. Combine that with the --pxe flag and a TFTP server and you can install an entire rack without ever plugging in a USB stick. That's genuinely overkill for a homelab, but it's the same mechanism scaled up.

Commands Explained

CommandWhat it does
apt install proxmox-auto-install-assistant xorrisoInstalls the assistant tool and the ISO-rebuilding library it depends on.
proxmox-auto-install-assistant validate-answer <file>Checks your TOML syntax and required fields without touching any ISO. Always run this first.
proxmox-auto-install-assistant prepare-iso <iso> --fetch-from iso --answer-file <file> --output <name>Builds a new ISO with the answer file embedded directly inside it.
proxmox-auto-install-assistant device-match disk ID_SERIAL='...'Shows you which physical disks a filter pattern would actually match, before you commit to it in disk-list.
proxmox-auto-install-assistant device-info -t diskLists every disk the running system can see, along with the udev properties (serial, model, size) you can filter on.
dd if=<iso> of=/dev/sdX bs=4M status=progress conv=fsyncWrites the finished ISO to a USB drive so you can boot the target machine from it.

Common Errors

"Answer file is not valid: missing field root-password" — you set neither root-password nor root-password-hashed in [global]. Pick exactly one.

"Answer file is not valid: both root-password and root-password-hashed are set" — the opposite problem. Delete one of the two lines.

Boot menu shows the normal installer, no "Automated Installation" entry — you booted the original ISO instead of the one prepare-iso produced. Double-check the filename on the USB drive.

Installer hangs at "Fetching answer file..." — this only happens with the HTTP or partition methods. For HTTP, the target machine can't reach your web server (wrong IP, firewall, or the network came up after the fetch attempt). For partition, the USB label doesn't match what the installer expects.

disk-list filter matches zero or more than one disk — run device-match disk with your filter pattern before building the ISO to confirm it hits exactly the disk you intend.

TOML parse error pointing at a line that looks fine — nine times out of ten this is a missing closing quote or bracket on the line above it. TOML errors often point one line later than the actual mistake.

Troubleshooting

When an automated install fails and reboot-on-error is set to false (which it should be while you're testing), the installer drops you to a shell instead of rebooting. From there you can inspect three log files that cover almost every failure mode:

  • /tmp/fetch_answer.log — covers problems retrieving the answer file itself: network timeouts, wrong URL, certificate mismatches on HTTP delivery
  • /tmp/auto_installer — logs from the automated install process once the answer file was successfully parsed
  • /tmp/install-low-level-start-session.log — the lowest-level installer log, useful if the failure happens before the automated logic even starts

If you're using the HTTP delivery method, test the URL from a browser or with curl on another machine on the same network before you ever boot the target hardware. It's much faster to debug a 404 from your laptop than from a server's console.

If the install fails partway through disk partitioning, it's almost always the disk-list or filter section pointing at a disk that doesn't exist on that particular machine — common if you're reusing one answer file across hardware that isn't quite identical.

Best Practices

  • Always run validate-answer before prepare-iso. It takes two seconds and catches most mistakes before they reach real hardware.
  • Use root-password-hashed instead of a plaintext password once you're past initial testing, especially if the ISO or answer file will sit on shared storage. Anyone who can read the file can read a plaintext password.
  • Match disks by serial number or another stable udev property rather than by /dev/sdX name, particularly on servers with more than one drive — device names aren't guaranteed to stay consistent across reboots.
  • Keep reboot-on-error = false until you've successfully installed at least once with a given answer file. Flip it to true only for unattended, walk-away deployments where you won't be watching the console.
  • If you manage more than a couple of node types, keep one answer file template per hardware profile rather than editing a single file each time — it's easier to review and less error-prone.
  • For HTTP or PXE delivery, put a real TLS certificate in front of the answer server and use --cert-fingerprint. Plain HTTP means the root password in your answer file travels across the network in the clear.

Frequently Asked Questions

Does this work with Proxmox Backup Server too?

Yes. The same answer-file mechanism and the same proxmox-auto-install-assistant tool apply to Proxmox Backup Server ISOs, not just Proxmox VE.

Can I skip typing a root password entirely and just use SSH keys?

No — root-password or root-password-hashed is mandatory, but you can add root-ssh-keys alongside it in [global] to also authorize key-based login from the first boot.

What Proxmox VE versions support this?

Automated installation was introduced in Proxmox VE 8.1 and continues to work on the current 8.x and 9.x release lines. It's not available on anything older than 8.1.

Is my plaintext root password stored anywhere permanent on the ISO?

Yes, if you use root-password instead of root-password-hashed, it sits in the answer file embedded in the ISO in plain text. Treat that ISO like a secret, or switch to the hashed option.

Can I use this to reinstall a machine without losing my VMs?

No. Automated installation wipes the target disk just like the manual installer does — it's meant for fresh installs, not in-place upgrades or reinstalls that preserve data.

Conclusion

The interactive installer is fine for a single server you'll set up once. Once you're rebuilding the same box repeatedly, or standing up more than one node at a time, an answer file turns a ten-minute chore into something you kick off and walk away from. Start small — validate a basic answer file against a spare drive or a test VM before you point it at anything you actually care about — and once it works, you'll probably never go back to clicking through the installer by hand.