Skip to content

Commit 06960d3

Browse files
committed
Update docker-vm.sh
1 parent fd813b8 commit 06960d3

File tree

1 file changed

+95
-75
lines changed

1 file changed

+95
-75
lines changed

vm/docker-vm.sh

Lines changed: 95 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,30 @@ BGN=$(echo "\033[4;92m")
3636
GN=$(echo "\033[1;92m")
3737
DGN=$(echo "\033[32m")
3838
CL=$(echo "\033[m")
39+
40+
CL=$(echo "\033[m")
41+
BOLD=$(echo "\033[1m")
3942
BFR="\\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}"
4363
THIN="discard=on,ssd=1,"
4464
set -e
4565
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
@@ -57,38 +77,39 @@ function error_handler() {
5777
}
5878

5979
function 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

6686
function cleanup() {
6787
popd >/dev/null
68-
rm -rf "$TEMP_DIR"
88+
post_update_to_api "done" "none"
89+
rm -rf $TEMP_DIR
6990
}
7091

7192
TEMP_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
:
7596
else
76-
header_info && echo -e "User exited script \n" && exit
97+
header_info && echo -e "${CROSS}${RD}User exited script${CL}\n" && exit
7798
fi
7899

79100
function msg_info() {
80101
local msg="$1"
81-
echo -ne " ${HOLD} ${YW}${msg}..."
102+
echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}"
82103
}
83104

84105
function msg_ok() {
85106
local msg="$1"
86-
echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
107+
echo -e "${BFR}${CM}${GN}${msg}${CL}"
87108
}
88109

89110
function msg_error() {
90111
local msg="$1"
91-
echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
112+
echo -e "${BFR}${CROSS}${RD}${msg}${CL}"
92113
}
93114

94115
function check_root() {
@@ -103,7 +124,7 @@ function check_root() {
103124

104125
function 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

114135
function 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() {
176196
function 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

357378
function 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-
369389
check_root
370390
arch_check
371391
pve_check
@@ -375,9 +395,9 @@ post_to_api_vm
375395

376396
msg_info "Validating Storage"
377397
while 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
407427
msg_ok "${CL}${BL}${URL}${CL}"
408428
curl -f#SL -o "$(basename "$URL")" "$URL"
409429
echo -en "\e[1A\e[0K"
410-
FILE=$(basename "$URL")
430+
FILE=$(basename $URL)
411431
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
412432

413433
STORAGE_TYPE=$(pvesm status -storage "$STORAGE" | awk 'NR>1 {print $2}')
@@ -452,7 +472,7 @@ pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
452472
qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
453473
qm 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
458478
qm resize $VMID scsi0 8G >/dev/null
@@ -490,18 +510,18 @@ EOF
490510
)
491511
qm 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
496516
else
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
499519
fi
500520

501521
msg_ok "Created a Docker VM ${CL}${BL}(${HN})"
502522
if [ "$START_VM" == "yes" ]; then
503523
msg_info "Starting Docker VM"
504-
qm start "$VMID"
524+
qm start $VMID
505525
msg_ok "Started Docker VM"
506526
fi
507527
post_update_to_api "done" "none"

0 commit comments

Comments
 (0)