@@ -36,10 +36,30 @@ BGN=$(echo "\033[4;92m")
3636GN=$( echo " \033[1;92m" )
3737DGN=$( echo " \033[32m" )
3838CL=$( echo " \033[m" )
39+
40+ CL=$( echo " \033[m" )
41+ BOLD=$( echo " \033[1m" )
3942BFR=" \\ r\\ 033[K"
40- HOLD=" -"
41- CM=" ${GN} ✓${CL} "
42- CROSS=" ${RD} ✗${CL} "
43+ HOLD=" "
44+ TAB=" "
45+
46+ CM=" ${TAB} ✔️${TAB}${CL} "
47+ CROSS=" ${TAB} ✖️${TAB}${CL} "
48+ INFO=" ${TAB} 💡${TAB}${CL} "
49+ OS=" ${TAB} 🖥️${TAB}${CL} "
50+ CONTAINERTYPE=" ${TAB} 📦${TAB}${CL} "
51+ DISKSIZE=" ${TAB} 💾${TAB}${CL} "
52+ CPUCORE=" ${TAB} 🧠${TAB}${CL} "
53+ RAMSIZE=" ${TAB} 🛠️${TAB}${CL} "
54+ CONTAINERID=" ${TAB} 🆔${TAB}${CL} "
55+ HOSTNAME=" ${TAB} 🏠${TAB}${CL} "
56+ BRIDGE=" ${TAB} 🌉${TAB}${CL} "
57+ GATEWAY=" ${TAB} 🌐${TAB}${CL} "
58+ DEFAULT=" ${TAB} ⚙️${TAB}${CL} "
59+ MACADDRESS=" ${TAB} 🔗${TAB}${CL} "
60+ VLANTAG=" ${TAB} 🏷️${TAB}${CL} "
61+ CREATING=" ${TAB} 🚀${TAB}${CL} "
62+ ADVANCED=" ${TAB} 🧩${TAB}${CL} "
4363THIN=" discard=on,ssd=1,"
4464set -e
4565trap ' error_handler $LINENO "$BASH_COMMAND"' ERR
@@ -57,38 +77,39 @@ function error_handler() {
5777}
5878
5979function cleanup_vmid() {
60- if qm status " $VMID " & > /dev/null; then
61- qm stop " $VMID " & > /dev/null
62- qm destroy " $VMID " & > /dev/null
80+ if qm status $VMID & > /dev/null; then
81+ qm stop $VMID & > /dev/null
82+ qm destroy $VMID & > /dev/null
6383 fi
6484}
6585
6686function cleanup() {
6787 popd > /dev/null
68- rm -rf " $TEMP_DIR "
88+ post_update_to_api " done" " none"
89+ rm -rf $TEMP_DIR
6990}
7091
7192TEMP_DIR=$( mktemp -d)
72- pushd " $TEMP_DIR " > /dev/null
73- if whiptail --backtitle " Proxmox VE Helper Scripts" --title " Docker VM" --yesno " This will create a New Docker VM. Proceed?" 10 58; then
93+ pushd $TEMP_DIR > /dev/null
94+ if whiptail --backtitle " Proxmox VE Helper Scripts" --title " Debian 12 VM" --yesno " This will create a New Debian 12 VM. Proceed?" 10 58; then
7495 :
7596else
76- header_info && echo -e " ⚠ User exited script \n" && exit
97+ header_info && echo -e " ${CROSS}${RD} User exited script${CL} \n" && exit
7798fi
7899
79100function msg_info() {
80101 local msg=" $1 "
81- echo -ne " ${HOLD} ${YW}${msg} ... "
102+ echo -ne " ${TAB} ${YW}${HOLD}${ msg}${HOLD} "
82103}
83104
84105function msg_ok() {
85106 local msg=" $1 "
86- echo -e " ${BFR} ${CM} ${GN}${msg}${CL} "
107+ echo -e " ${BFR}${CM}${GN}${msg}${CL} "
87108}
88109
89110function msg_error() {
90111 local msg=" $1 "
91- echo -e " ${BFR} ${CROSS} ${RD}${msg}${CL} "
112+ echo -e " ${BFR}${CROSS}${RD}${msg}${CL} "
92113}
93114
94115function check_root() {
@@ -103,7 +124,7 @@ function check_root() {
103124
104125function pve_check() {
105126 if ! pveversion | grep -Eq " pve-manager/8\.[1-4](\.[0-9]+)*" ; then
106- msg_error " This version of Proxmox Virtual Environment is not supported"
127+ msg_error " ${CROSS}${RD} This version of Proxmox Virtual Environment is not supported"
107128 echo -e " Requires Proxmox Virtual Environment Version 8.1 or later."
108129 echo -e " Exiting..."
109130 sleep 2
@@ -113,12 +134,11 @@ function pve_check() {
113134
114135function arch_check() {
115136 if [ " $( dpkg --print-architecture) " != " amd64" ]; then
116- if [ " $( dpkg --print-architecture) " != " arm64" ]; then
117- msg_error " This script will not work with your CPU Architekture \n"
118- echo -e " Exiting..."
119- sleep 2
120- exit
121- fi
137+ echo -e " \n ${INFO}${YWB} This script will not work with PiMox! \n"
138+ echo -e " \n ${YWB} Visit https://github.com/asylumexp/Proxmox for ARM64 support. \n"
139+ echo -e " Exiting..."
140+ sleep 2
141+ exit
122142 fi
123143}
124144
@@ -176,7 +196,7 @@ function default_settings() {
176196function advanced_settings() {
177197 METHOD=" advanced"
178198 while true ; do
179- if VMID=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Set Virtual Machine ID" 8 58 " $NEXTID " --title " VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
199+ if VMID=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Set Virtual Machine ID" 8 58 $NEXTID --title " VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
180200 if [ -z " $VMID " ]; then
181201 VMID=" $NEXTID "
182202 fi
@@ -185,7 +205,7 @@ function advanced_settings() {
185205 sleep 2
186206 continue
187207 fi
188- echo -e " ${DGN} Virtual Machine ID: ${BGN} $VMID ${CL} "
208+ echo -e " ${CONTAINERID}${BOLD}${ DGN} Virtual Machine ID: ${BGN} $VMID ${CL} "
189209 break
190210 else
191211 exit-script
@@ -196,12 +216,12 @@ function advanced_settings() {
196216 " i440fx" " Machine i440fx" ON \
197217 " q35" " Machine q35" OFF \
198218 3>&1 1>&2 2>&3 ) ; then
199- if [ " $MACH " = q35 ]; then
200- echo -e " ${DGN} Using Machine Type: ${BGN} $MACH ${CL} "
219+ if [ $MACH = q35 ]; then
220+ echo -e " ${CONTAINERTYPE}${BOLD}${ DGN} Machine Type: ${BGN} $MACH ${CL} "
201221 FORMAT=" "
202222 MACHINE=" -machine q35"
203223 else
204- echo -e " ${DGN} Using Machine Type: ${BGN} $MACH ${CL} "
224+ echo -e " ${CONTAINERTYPE}${BOLD}${ DGN} Machine Type: ${BGN} $MACH ${CL} "
205225 FORMAT=" ,efitype=4m"
206226 MACHINE=" "
207227 fi
@@ -224,28 +244,29 @@ function advanced_settings() {
224244 exit-script
225245 fi
226246
247+
227248 if DISK_CACHE=$( whiptail --backtitle " Proxmox VE Helper Scripts" --title " DISK CACHE" --radiolist " Choose" --cancel-button Exit-Script 10 58 2 \
228249 " 0" " None (Default)" ON \
229250 " 1" " Write Through" OFF \
230251 3>&1 1>&2 2>&3 ) ; then
231- if [ " $DISK_CACHE " = " 1" ]; then
232- echo -e " ${DGN} Using Disk Cache: ${BGN} Write Through${CL} "
252+ if [ $DISK_CACHE = " 1" ]; then
253+ echo -e " ${DISKSIZE}${BOLD}${ DGN} Disk Cache: ${BGN} Write Through${CL} "
233254 DISK_CACHE=" cache=writethrough,"
234255 else
235- echo -e " ${DGN} Using Disk Cache: ${BGN} None${CL} "
256+ echo -e " ${DISKSIZE}${BOLD}${ DGN} Disk Cache: ${BGN} None${CL} "
236257 DISK_CACHE=" "
237258 fi
238259 else
239260 exit-script
240261 fi
241262
242- if VM_NAME=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Set Hostname" 8 58 docker --title " HOSTNAME" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
243- if [ -z " $VM_NAME " ]; then
244- HN=" docker "
245- echo -e " ${DGN} Using Hostname: ${BGN} $HN ${CL} "
263+ if VM_NAME=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Set Hostname" 8 58 debian --title " HOSTNAME" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
264+ if [ -z $VM_NAME ]; then
265+ HN=" debian "
266+ echo -e " ${HOSTNAME}${BOLD}${ DGN} Hostname: ${BGN} $HN ${CL} "
246267 else
247- HN=$( echo " ${VM_NAME,,} " | tr -d ' ' )
248- echo -e " ${DGN} Using Hostname: ${BGN} $HN ${CL} "
268+ HN=$( echo ${VM_NAME,,} | tr -d ' ' )
269+ echo -e " ${HOSTNAME}${BOLD}${ DGN} Hostname: ${BGN} $HN ${CL} "
249270 fi
250271 else
251272 exit-script
@@ -255,117 +276,116 @@ function advanced_settings() {
255276 " 0" " KVM64 (Default)" ON \
256277 " 1" " Host" OFF \
257278 3>&1 1>&2 2>&3 ) ; then
258- if [ " $CPU_TYPE1 " = " 1" ]; then
259- echo -e " ${DGN} Using CPU Model: ${BGN} Host${CL} "
279+ if [ $CPU_TYPE1 = " 1" ]; then
280+ echo -e " ${OS}${BOLD}${ DGN} CPU Model: ${BGN} Host${CL} "
260281 CPU_TYPE=" -cpu host"
261282 else
262- echo -e " ${DGN} Using CPU Model: ${BGN} KVM64${CL} "
283+ echo -e " ${OS}${BOLD}${ DGN} CPU Model: ${BGN} KVM64${CL} "
263284 CPU_TYPE=" "
264285 fi
265286 else
266287 exit-script
267288 fi
268289
269290 if CORE_COUNT=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Allocate CPU Cores" 8 58 2 --title " CORE COUNT" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
270- if [ -z " $CORE_COUNT " ]; then
291+ if [ -z $CORE_COUNT ]; then
271292 CORE_COUNT=" 2"
272- echo -e " ${DGN} Allocated Cores: ${BGN} $CORE_COUNT ${CL} "
293+ echo -e " ${CPUCORE}${BOLD}${ DGN} CPU Cores: ${BGN} $CORE_COUNT ${CL} "
273294 else
274- echo -e " ${DGN} Allocated Cores: ${BGN} $CORE_COUNT ${CL} "
295+ echo -e " ${CPUCORE}${BOLD}${ DGN} CPU Cores: ${BGN} $CORE_COUNT ${CL} "
275296 fi
276297 else
277298 exit-script
278299 fi
279300
280- if RAM_SIZE=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Allocate RAM in MiB" 8 58 4096 --title " RAM" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
281- if [ -z " $RAM_SIZE " ]; then
282- RAM_SIZE=" 4096 "
283- echo -e " ${DGN} Allocated RAM: ${BGN} $RAM_SIZE ${CL} "
301+ if RAM_SIZE=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Allocate RAM in MiB" 8 58 2048 --title " RAM" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
302+ if [ -z $RAM_SIZE ]; then
303+ RAM_SIZE=" 2048 "
304+ echo -e " ${RAMSIZE}${BOLD}${ DGN} RAM Size : ${BGN} $RAM_SIZE ${CL} "
284305 else
285- echo -e " ${DGN} Allocated RAM: ${BGN} $RAM_SIZE ${CL} "
306+ echo -e " ${RAMSIZE}${BOLD}${ DGN} RAM Size : ${BGN} $RAM_SIZE ${CL} "
286307 fi
287308 else
288309 exit-script
289310 fi
290311
291312 if BRG=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Set a Bridge" 8 58 vmbr0 --title " BRIDGE" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
292- if [ -z " $BRG " ]; then
313+ if [ -z $BRG ]; then
293314 BRG=" vmbr0"
294- echo -e " ${DGN} Using Bridge: ${BGN} $BRG ${CL} "
315+ echo -e " ${BRIDGE}${BOLD}${ DGN} Bridge: ${BGN} $BRG ${CL} "
295316 else
296- echo -e " ${DGN} Using Bridge: ${BGN} $BRG ${CL} "
317+ echo -e " ${BRIDGE}${BOLD}${ DGN} Bridge: ${BGN} $BRG ${CL} "
297318 fi
298319 else
299320 exit-script
300321 fi
301322
302- if MAC1=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Set a MAC Address" 8 58 " $GEN_MAC " --title " MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
303- if [ -z " $MAC1 " ]; then
323+ if MAC1=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Set a MAC Address" 8 58 $GEN_MAC --title " MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
324+ if [ -z $MAC1 ]; then
304325 MAC=" $GEN_MAC "
305- echo -e " ${DGN} Using MAC Address: ${BGN} $MAC ${CL} "
326+ echo -e " ${MACADDRESS}${BOLD}${ DGN} MAC Address: ${BGN} $MAC ${CL} "
306327 else
307328 MAC=" $MAC1 "
308- echo -e " ${DGN} Using MAC Address: ${BGN} $MAC1 ${CL} "
329+ echo -e " ${MACADDRESS}${BOLD}${ DGN} MAC Address: ${BGN} $MAC1 ${CL} "
309330 fi
310331 else
311332 exit-script
312333 fi
313334
314335 if VLAN1=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Set a Vlan(leave blank for default)" 8 58 --title " VLAN" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
315- if [ -z " $VLAN1 " ]; then
336+ if [ -z $VLAN1 ]; then
316337 VLAN1=" Default"
317338 VLAN=" "
318- echo -e " ${DGN} Using Vlan : ${BGN} $VLAN1 ${CL} "
339+ echo -e " ${VLANTAG}${BOLD}${ DGN} VLAN : ${BGN} $VLAN1 ${CL} "
319340 else
320341 VLAN=" ,tag=$VLAN1 "
321- echo -e " ${DGN} Using Vlan : ${BGN} $VLAN1 ${CL} "
342+ echo -e " ${VLANTAG}${BOLD}${ DGN} VLAN : ${BGN} $VLAN1 ${CL} "
322343 fi
323344 else
324345 exit-script
325346 fi
326347
327348 if MTU1=$( whiptail --backtitle " Proxmox VE Helper Scripts" --inputbox " Set Interface MTU Size (leave blank for default)" 8 58 --title " MTU SIZE" --cancel-button Exit-Script 3>&1 1>&2 2>&3 ) ; then
328- if [ -z " $MTU1 " ]; then
349+ if [ -z $MTU1 ]; then
329350 MTU1=" Default"
330351 MTU=" "
331- echo -e " ${DGN} Using Interface MTU Size: ${BGN} $MTU1 ${CL} "
352+ echo -e " ${DEFAULT}${BOLD}${ DGN} Interface MTU Size: ${BGN} $MTU1 ${CL} "
332353 else
333354 MTU=" ,mtu=$MTU1 "
334- echo -e " ${DGN} Using Interface MTU Size: ${BGN} $MTU1 ${CL} "
355+ echo -e " ${DEFAULT}${BOLD}${ DGN} Interface MTU Size: ${BGN} $MTU1 ${CL} "
335356 fi
336357 else
337358 exit-script
338359 fi
339360
340361 if (whiptail --backtitle " Proxmox VE Helper Scripts" --title " START VIRTUAL MACHINE" --yesno " Start VM when completed?" 10 58); then
341- echo -e " ${DGN} Start VM when completed: ${BGN} yes${CL} "
362+ echo -e " ${GATEWAY}${BOLD}${ DGN} Start VM when completed: ${BGN} yes${CL} "
342363 START_VM=" yes"
343364 else
344- echo -e " ${DGN} Start VM when completed: ${BGN} no${CL} "
365+ echo -e " ${GATEWAY}${BOLD}${ DGN} Start VM when completed: ${BGN} no${CL} "
345366 START_VM=" no"
346367 fi
347368
348- if (whiptail --backtitle " Proxmox VE Helper Scripts" --title " ADVANCED SETTINGS COMPLETE" --yesno " Ready to create a Docker VM?" --no-button Do-Over 10 58); then
349- echo -e " ${RD} Creating a Docker VM using the above advanced settings${CL} "
369+ if (whiptail --backtitle " Proxmox VE Helper Scripts" --title " ADVANCED SETTINGS COMPLETE" --yesno " Ready to create a Debian 12 VM?" --no-button Do-Over 10 58); then
370+ echo -e " ${CREATING}${BOLD}${DGN} Creating a Debian 12 VM using the above advanced settings${CL} "
350371 else
351372 header_info
352- echo -e " ${RD} Using Advanced Settings${CL} "
373+ echo -e " ${ADVANCED}${BOLD}${ RD} Using Advanced Settings${CL} "
353374 advanced_settings
354375 fi
355376}
356377
357378function start_script() {
358379 if (whiptail --backtitle " Proxmox VE Helper Scripts" --title " SETTINGS" --yesno " Use Default Settings?" --no-button Advanced 10 58); then
359380 header_info
360- echo -e " ${BL} Using Default Settings${CL} "
381+ echo -e " ${DEFAULT}${BOLD}${ BL} Using Default Settings${CL} "
361382 default_settings
362383 else
363384 header_info
364- echo -e " ${RD} Using Advanced Settings${CL} "
385+ echo -e " ${ADVANCED}${BOLD}${ RD} Using Advanced Settings${CL} "
365386 advanced_settings
366387 fi
367388}
368-
369389check_root
370390arch_check
371391pve_check
@@ -375,9 +395,9 @@ post_to_api_vm
375395
376396msg_info " Validating Storage"
377397while read -r line; do
378- TAG=$( echo " $line " | awk ' {print $1}' )
379- TYPE=$( echo " $line " | awk ' {printf "%-10s", $2}' )
380- FREE=$( echo " $line " | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk ' {printf( "%9sB", $6)}' )
398+ TAG=$( echo $line | awk ' {print $1}' )
399+ TYPE=$( echo $line | awk ' {printf "%-10s", $2}' )
400+ FREE=$( echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk ' {printf( "%9sB", $6)}' )
381401 ITEM=" Type: $TYPE Free: $FREE "
382402 OFFSET=2
383403 if [[ $(( ${# ITEM} + $OFFSET )) -gt ${MSG_MAX_LENGTH:- } ]]; then
@@ -407,7 +427,7 @@ sleep 2
407427msg_ok " ${CL}${BL}${URL}${CL} "
408428curl -f#SL -o " $( basename " $URL " ) " " $URL "
409429echo -en " \e[1A\e[0K"
410- FILE=$( basename " $URL " )
430+ FILE=$( basename $URL )
411431msg_ok " Downloaded ${CL}${BL}${FILE}${CL} "
412432
413433STORAGE_TYPE=$( pvesm status -storage " $STORAGE " | awk ' NR>1 {print $2}' )
@@ -452,7 +472,7 @@ pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
452472qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:- } 1>& /dev/null
453473qm set $VMID \
454474 -efidisk0 ${DISK0_REF}${FORMAT} \
455- -scsi0 ${DISK1_REF} ,${DISK_CACHE}${THIN} size=2G \
475+ -scsi0 ${DISK1_REF} ,${DISK_CACHE}${THIN} size=${DISK_SIZE} \
456476 -boot order=scsi0 \
457477 -serial0 socket > /dev/null
458478qm resize $VMID scsi0 8G > /dev/null
@@ -490,18 +510,18 @@ EOF
490510)
491511qm set " $VMID " -description " $DESCRIPTION " > /dev/null
492512
493- if [ -n " $DISK_SIZE " ]; then
513+ f [ -n " $DISK_SIZE " ]; then
494514 msg_info " Resizing disk to $DISK_SIZE GB"
495- qm resize " $VMID " scsi0 " ${DISK_SIZE} " > /dev/null
515+ qm resize $VMID scsi0 ${DISK_SIZE} > /dev/null
496516else
497517 msg_info " Using default disk size of $DEFAULT_DISK_SIZE GB"
498- qm resize " $VMID " scsi0 " ${DEFAULT_DISK_SIZE} " > /dev/null
518+ qm resize $VMID scsi0 ${DEFAULT_DISK_SIZE} > /dev/null
499519fi
500520
501521msg_ok " Created a Docker VM ${CL}${BL} (${HN} )"
502522if [ " $START_VM " == " yes" ]; then
503523 msg_info " Starting Docker VM"
504- qm start " $VMID "
524+ qm start $VMID
505525 msg_ok " Started Docker VM"
506526fi
507527post_update_to_api " done" " none"
0 commit comments