Skip to content

From Scratch to Snapshots: Creating Perfect VM Templates in Proxmox

In a homelab or production environment, efficiency matters. When you need to deploy multiple virtual machines (VMs) with similar configurations—such as base Ubuntu servers, Windows environments, or web hosts—it’s best to avoid repetitive setup steps. That’s where VM templates in Proxmox VE come in.

In this article, I’ll walk you through how to create, configure, and use VM templates in Proxmox to speed up deployment and maintain consistency across your virtual infrastructure.

✅ What Is a Virtual Machine Template?

A template in Proxmox is a special type of virtual machine image that is cloned instead of run directly. It serves as a base image for creating multiple new VMs with the same configuration, OS, and settings.

Templates are:

Not bootable on their own

Lightweight and reusable

• Cloned into full VMs in seconds

🛠️ 1. Prepare the Base Virtual Machine

Start by creating a virtual machine with the OS and configuration you want to replicate.

Example: Ubuntu Server Template

1. Go to Proxmox Web UI → Click Create VM

2. Choose:

• Name: ubuntu-template

• ISO Image: Ubuntu 22.04 LTS

• Disk size: 10–20 GB (thin-provisioned)

• CPU/RAM: 2 cores / 2 GB (can be changed per clone)

• Network: Use virtio or e1000, bridged to vmbr0

3. Install the OS as usual via the console.

🔧 2. Configure the VM Internally (Before Turning It Into a Template)

Inside the VM, perform these steps before shutting it down:

a. Update & Clean the OS

sudo apt update && sudo apt upgrade -y

sudo apt clean

b. Install QEMU Guest Agent (optional, but recommended)

sudo apt install qemu-guest-agent -y

sudo systemctl enable qemu-guest-agent

Then in Proxmox:

VM → Options → Enable QEMU Guest Agent

c. Optional Hardening

• Create a generic user (e.g. admin)

• Disable SSH password login (for security)

• Install common packages like curl, htop, net-tools

📴 3. Shut Down the VM

Once everything is ready and clean:

sudo poweroff

Or shut it down via the Proxmox interface.

📦 4. Convert the VM Into a Template

Now that the VM is powered off:

1. Go to the VM in the Proxmox GUI

2. Click More (three dots menu or right-click)

3. Select Convert to Template

Proxmox will move the VM into the “Template” section, making it read-only and non-bootable.

📤 5. Deploy a New VM from the Template

You can now quickly clone this template into fully functional VMs.

Full Clone (default):

• Creates an independent VM with its own disk and MAC address

• Suitable for most uses

Linked Clone (if using LVM/ZFS):

• Shares the base disk

• Uses less space

• Fast to deploy (but tied to the template’s storage)

To clone:

1. Right-click the template

2. Select Clone

3. Choose:

• VM ID & name

• Target node and storage

• Full or linked clone

Start the new VM and customize it as needed (hostname, SSH keys, etc.)

💡 Best Practices

• Keep templates minimal and updated

• Disable swap or set minimal disk use for flexibility

• Use cloud-init to auto-configure VMs on boot (hostname, SSH keys, etc.)

• Store templates on fast storage (SSD/ZFS)

• Maintain a template versioning system (e.g., ubuntu-template-v1, v2, etc.)

🧪 Bonus: Using Cloud-Init Templates (Advanced)

Proxmox supports cloud-init, which lets you automate:

• Hostname

• User/password

• IP address

• SSH key injection

Create a cloud-init-ready VM, convert it into a template, and generate dynamic VMs in seconds—perfect for DevOps and automation workflows.

🏁 Conclusion

Creating VM templates in Proxmox VE is a powerful way to speed up your homelab or production deployments. With just a few minutes of setup, you can reuse a single clean base image to spin up dozens of servers on demand—saving time and ensuring consistency across your virtual environment.

Whether you’re managing Linux containers, application stacks, or a fleet of test environments, templates are an essential part of any serious Proxmox setup.

Would you like this article converted into a PDF tutorial, or followed by a companion guide on cloud-init configuration? Just let me know!

Leave a Reply

Your email address will not be published. Required fields are marked *

wpChatIcon
wpChatIcon