Changes for page proxmox
Last modified by Kevin Wiki on 2026/05/18 15:44
From version
2.3
edited by Kevin Wiki
on 2025/07/05 20:14
on 2025/07/05 20:14
Change comment:
There is no comment for this version
To version
10.3
edited by Kevin Wiki
on 2026/05/18 08:20
on 2026/05/18 08:20
Change comment:
There is no comment for this version
Summary
Details
- Page properties
-
- Content
-
... ... @@ -4,18 +4,265 @@ 4 4 ((( 5 5 {{children/}} 6 6 7 -= Getting started - vm & lxc templates = 8 8 9 - List and importlxctemplates:8 += Getting Started with Proxmox VE LXC and VM Templates = 10 10 11 -``` 10 +Proxmox VE (PVE) allows users to create and manage both LXC containers and KVM virtual machines (VMs). This guide walks you through the process of downloading, importing, and creating templates for both. 11 + 12 +== LXC Templates == 13 + 14 +LXC containers are lightweight and ideal for running Linux services with minimal overhead. 15 + 16 +=== List Available Templates === 17 + 18 +To view the available LXC templates: 19 + 20 +{{code language="bash"}} 12 12 pveam list 22 +{{/code}} 23 + 24 +=== Download Templates === 25 + 26 +Use the pveam download command to import templates to the local storage: 27 + 28 +{{code language="bash"}} 13 13 pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.gz 14 14 pveam download local ubuntu-24.04-standard_24.04-1_amd64.tar.zst 15 15 pveam download local debian-12-standard_11.7-1_amd64.tar.zst 32 +{{/code}} 16 16 17 - ```34 +Once downloaded, these templates can be used to create new LXC containers from the Proxmox web interface or via CLI. 18 18 36 +== VM Template from Ubuntu Cloud Image == 37 + 38 +KVM VMs are ideal when you need full virtualization, for instance, to run Windows or more complex Linux systems. 39 + 40 +=== Download Ubuntu Cloud Image === 41 + 42 +Download the official Ubuntu 24.04 cloud [[image:]] 43 + 44 +{{code language="bash"}} 45 +wget http://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img 46 +{{/code}} 47 + 48 +=== Create the Virtual Machine === 49 + 50 +Create a new VM with ID 910 (you can pick any unused ID): 51 + 52 +{{code language="bash"}} 53 +qm create 910 -name template-ubuntu-jammy -memory 2048 -net0 virtio,bridge=vmbr0 -cores 2 -sockets 1 54 +{{/code}} 55 + 56 +=== Import and Attach the Disk === 57 + 58 +Choose the correct storage (replace nvme if you use a different storage name): 59 + 60 +{{code language="bash"}} 61 +qm importdisk 910 ubuntu-24.04-server-cloudimg-amd64.img nvme 62 +qm set 910 -scsihw virtio-scsi-pci -virtio0 nvme:vm-910-disk-0 63 +{{/code}} 64 + 65 +=== Configure the VM === 66 + 67 +{{code language="bash"}} 68 +qm set 910 -serial0 socket 69 +qm set 910 -boot c -bootdisk virtio0 70 +qm set 910 -agent 1 71 +qm set 910 -hotplug disk,network,usb 72 +qm set 910 -vcpus 1 73 +qm set 910 -vga qxl 74 +qm set 910 -ide2 nvme:cloudinit 75 +qm resize 910 virtio0 +8G 76 +{{/code}} 77 + 78 + 79 +If your disk is using SCSI instead of virtio, resize like this: 80 + 81 +{{code language="bash"}} 82 +qm resize 910 scsi0 +8G 83 +{{/code}} 84 + 85 +=== Convert the VM into a Template === 86 + 87 +{{code language="bash"}} 88 +qm template 910 89 +{{/code}} 90 + 91 +Now you can use this template to clone new VMs instantly. 92 + 93 +== Bash Script to Automate Setup == 94 + 95 +Install the above using bash script below 96 + 97 +=== setup_proxmox_templates.sh === 98 + 99 +{{code language="bash"}} 100 +#!/bin/bash 101 + 102 +# Exit on errors 103 +set -e 104 + 105 +echo "Downloading LXC templates..." 106 +pveam download nvme ubuntu-22.04-standard_22.04-1_amd64.tar.zst 107 +pveam download nvme ubuntu-24.04-standard_24.04-2_amd64.tar.zst 108 +pveam download nvme alpine-3.21-default_20241217_amd64.tar.xz 109 +pveam download nvme debian-12-standard_12.7-1_amd64.tar.zst 110 + 111 +echo "Downloading Ubuntu cloud image..." 112 +wget -N http://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img 113 + 114 +echo "Creating VM Template..." 115 +qm create 910 -name template-ubuntu-jammy -memory 2048 -net0 virtio,bridge=vmbr0 -cores 2 -sockets 1 && 1 116 + 117 +# qm importdisk 910 ubuntu-24.04-server-cloudimg-amd64.img nvme 118 +# qm set 910 -scsihw virtio-scsi-pci -scsi0-virtio0 nvme:910/vm-910-disk-0 119 +qm set 910 -scsihw virtio-scsi-pci -scsi0 nvme:0,import-from=/mnt/nvmestorage/template/iso/ubuntu-24.04-server-cloudimg-amd64.img 120 + 121 +qm set 910 -serial0 socket 122 +qm set 910 -boot c -bootdisk virtio0 123 +qm set 910 -agent 1 124 +qm set 910 -hotplug disk,network,usb 125 +qm set 910 -vcpus 1 126 +qm set 910 -vga qxl 127 +qm set 910 -ide2 nvme:cloudinit 128 +# qm resize 910 scsi0 +8G 129 + 130 +read -p "Confirm converting to template by pressing Enter" 131 +qm template 910 132 + 133 +echo "Templates setup complete." 134 +{{/code}} 135 + 136 + 137 += VM runtime setup = 138 + 139 +After creating the VM and before making it into a template there are some programs and settings we want to ensure exists always. 140 + 141 +**qemu-guest-agent** is for allowing proxmox to query information from the VM such as IP address, shutdown commands, etc 142 + 143 +{{code language="bash"}} 144 +sudo apt update 145 +sudo apt upgrade -y 146 +sudo apt install qemu-guest-agent -y 147 + 148 +sudo systemctl enable qemu-guest-agent.service 149 +sudo systemctl start qemu-guest-agent.service 150 +{{/code}} 151 + 152 +**reset machine-id** to not have overlapping ids from same template 153 + 154 +{{code language="bash"}} 155 +cat /dev/null > /etc/machine-id 156 +cat /dev/null > /var/lib/dbus/machine-id 157 +{{/code}} 158 + 159 +**clear bash history** to not leave any configuration in history 160 + 161 + 162 +**cloud-init** is a great hook for installing or configuring programs or receiving variables from cloudinit CDROM drive. Making it easier to change IP, hostname, DNS, username/password, etc between VMs 163 + 164 +{{code language="bash"}} 165 +cloud-init clean 166 +{{/code}} 167 + 168 +This is a debian example of what we are looking for: 169 + 170 +{{code language="yaml"}} 171 +# The top level settings are used as module 172 +# and system configuration. 173 +# A set of users which may be applied and/or used by various modules 174 +# when a 'default' entry is found it will reference the 'default_user' 175 +# from the distro configuration specified below 176 +users: 177 + - default 178 + 179 +# If this is set, 'root' will not be able to ssh in and they 180 +# will get a message to login instead as the default $user 181 +disable_root: true 182 + 183 +# This will cause the set+update hostname module to not operate (if true) 184 +preserve_hostname: false 185 + 186 +apt: 187 + # This prevents cloud-init from rewriting apt's sources.list file, 188 + # which has been a source of surprise. 189 + preserve_sources_list: true 190 + 191 +# The modules that run in the 'init' stage 192 +cloud_init_modules: 193 + - seed_random 194 + - bootcmd 195 + - write-files 196 + - growpart 197 + - resizefs 198 + - disk_setup 199 + - mounts 200 + - set_hostname 201 + - update_hostname 202 + - update_etc_hosts 203 + - ca-certs 204 + - rsyslog 205 + - users-groups 206 + - ssh 207 + 208 +# The modules that run in the 'config' stage 209 +cloud_config_modules: 210 + - locale 211 + - set-passwords 212 + - grub-dpkg 213 + - apt-pipelining 214 + - apt-configure 215 + - ntp 216 + - timezone 217 + - disable-ec2-metadata 218 + - runcmd 219 + 220 +# The modules that run in the 'final' stage 221 +cloud_final_modules: 222 + - package-update-upgrade-install 223 + - write-files-deferred 224 + - scripts-vendor 225 + - scripts-per-once 226 + - scripts-per-boot 227 + - scripts-per-instance 228 + - scripts-user 229 + - ssh-authkey-fingerprints 230 +# - keys-to-console 231 + - install-hotplug 232 +# - phone-home 233 + - final-message 234 + - power-state-change 235 + 236 +# System and/or distro specific settings 237 +# (not accessible to handlers/transforms) 238 +system_info: 239 + # This will affect which distro class gets used 240 + distro: debian 241 + # Default user name + that default users groups (if added/used) 242 + default_user: 243 + name: debian 244 + lock_passwd: True 245 + gecos: Debian 246 + groups: [sudo] 247 + # Disables password-less sudo commands for default/debian user 248 + sudo: ["ALL=(ALL) ALL"] 249 + shell: /bin/bash 250 + # Other config here will be given to the distro class and/or path classes 251 + paths: 252 + cloud_dir: /var/lib/cloud/ 253 + templates_dir: /etc/cloud/templates/ 254 + package_mirrors: 255 + - arches: [default] 256 + failsafe: 257 + primary: https://deb.debian.org/debian 258 + security: https://deb.debian.org/debian-security 259 + ssh_svcname: ssh 260 +{{/code}} 261 + 262 + 263 + 264 + 265 + 19 19 20 20 ))) 21 21
- image.jpg
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.kevin - Size
-
... ... @@ -1,1 +1,0 @@ 1 -40.8 KB - Content