Just wanted to share my (successful) procedure for creating in PVE9 a VM Template for a Debian Trixie Server with Cloud-Init, which I have done in the past for previous Debian versions in PVE8. This is most useful to quickly spin up a Debian server for any purpose.
The following procedure was successfully done in a Debian server running 12.11 as a VM within PVE9:
In PVE host:
In Host node shell:
In GUI of VM 200 (or your {vmid} as above):
Done! #I make a backup of this VM template once done.
Testing:
The following procedure was successfully done in a Debian server running 12.11 as a VM within PVE9:
Code:
apt install libguestfs-tools #needed for the virt-customize tool
wget https://cloud.debian.org/images/cloud/trixie/latest/debian-13-genericcloud-amd64.qcow2 #the current Trixie latest cloud image available
sha512sum debian-13-genericcloud-amd64.qcow2 #check against https://cloud.debian.org/images/cloud/trixie/latest/SHA512SUMS
#customize the image:
virt-customize -a debian-13-genericcloud-amd64.qcow2 --install qemu-guest-agent,curl,wget,nano,rsync,htop,tmux #tools I like to add
virt-customize -a debian-13-genericcloud-amd64.qcow2 --run-command "sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config" #to enable root login which is off by default
virt-customize -a debian-13-genericcloud-amd64.qcow2 --run-command "sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config" #to enable SSH authentication by password - my use choice
qemu-img convert -O qcow2 -c -o preallocation=off debian-13-genericcloud-amd64.qcow2 debian-13-genericcloud-amd64-shrink.qcow2 #convert & compress qcow2 image
#send image to PVE host:
scp debian-13-genericcloud-amd64-shrink.qcow2 root@........................... #enter desired location on host node
In PVE host:
- Create a VM 200 # use {vmid} you wish
- Name:
Debian-Trixie-CloudINIT-Template
#name I used - Do not use any media, Qemu Agent (ticked), Remove all disk, 2 cores x86-64-v2-AES, 4096 RAM #settings I chose
- Set to not run on completion
In Host node shell:
Code:
qm importdisk 200 debian-13-genericcloud-amd64-shrink.qcow2 Storage --format qcow2 #change 200 to the actual {vmid} you used above & required Storage location, I used 'Storage'
In GUI of VM 200 (or your {vmid} as above):
- Remove the CD/DVD drive # I don't need one
- Add unused disk as
scsi0
, ssd on discard on default nocache #my choices, adjust accordingly - Add cloud-init drive as
ide0
- In cloud-init set User as root & password, set IPV4 as dhcp #my choices, adjust accordingly
- In VM Options set boot order
scsi0
as first & only boot device - Convert VM 200 (or your {vmid} as above) to Template
Done! #I make a backup of this VM template once done.
Testing:
- Create a Full clone
- Set Cloud-Init settings of the clone as required & regenerate Cloud-Init image
- Start cloned VM (This will fully setup the VM & should fully Update & Upgrade it)
- Shutdown
- In GUI; Remove Cloud-Init drive from Hardware
Last edited: