mirror of
https://github.com/community-scripts/ProxmoxVE
synced 2025-02-08 08:49:17 +00:00
53ed69e090
commit 995fa24aaffa98b8e12e8ebe084cbce61f605995 Author: oOStroudyOo <111181956+oOStroudyOo@users.noreply.github.com> Date: Mon Dec 23 14:41:35 2024 +0000 Improve motd Added gold colour. Added TABS (A longer version of TAB for central heading / Reduced code). Added building icon. Added hammer and spanner icon (GitHub). Change LXC Container title to more central location and in gold. Added website URL. Split the lines to show Org, Website and GitHub on separate lines. Change Org icon to building. Added the hammer and spanner emoji to GitHub line. Changed IP icon from idea to network. Added line break under the title for better readability. Added line break under the IP address for better readability. commit0d18fb33ce
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sun Dec 22 10:45:03 2024 +0100 Update navidrome-install.sh commit003f7c3ab4
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sun Dec 22 10:42:47 2024 +0100 Update navidrome.sh commit525362f3c5
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at> Date: Fri Dec 20 09:20:20 2024 +0100 Changes commit9e6770f03b
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at> Date: Fri Dec 20 09:14:04 2024 +0100 Change to dpkg -i commit775ed987db
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at> Date: Thu Dec 19 15:33:28 2024 +0100 New Script: CheckMk commit8950eb302e
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu Dec 19 09:48:05 2024 +0100 Update apache-guacamole-install.sh commit3ac7c9093b
Merge:9ae03880
75772753
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at> Date: Thu Dec 19 09:28:30 2024 +0100 Merge branch 'develop' of https://github.com/community-scripts/ProxmoxVE into develop commit9ae03880a4
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at> Date: Thu Dec 19 09:28:13 2024 +0100 Update Bookstack for testing commit757727537b
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed Dec 18 16:37:01 2024 +0100 Update apache-guacamole-install.sh commit7e2b1fd87f
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at> Date: Wed Dec 18 15:05:32 2024 +0100 Suppres output commitc00c17290e
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at> Date: Wed Dec 18 14:10:01 2024 +0100 Update zammad-install.sh commit66fafe2b10
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at> Date: Wed Dec 18 14:00:00 2024 +0100 Update zammad-install.sh commitc85462809d
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at> Date: Wed Dec 18 13:56:31 2024 +0100 Update zammad-install.sh commit887c70c35a
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at> Date: Wed Dec 18 13:47:11 2024 +0100 Update zammad-install.sh commitd87f3f777b
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at> Date: Wed Dec 18 13:05:49 2024 +0100 Push Zammad and Apache Guacamole commitef3bb43405
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed Dec 18 12:30:24 2024 +0100 fix paths to tmp commitb6104103cb
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed Dec 18 10:21:29 2024 +0100 Update build.func commitfbb1b7d88a
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed Dec 18 10:12:32 2024 +0100 Update authentik.sh commitdaba45f93a
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed Dec 18 10:07:28 2024 +0100 Add files via upload commita13c0617b2
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed Dec 18 10:07:02 2024 +0100 Update authentik.sh commit934f989f10
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed Dec 18 10:03:12 2024 +0100 Update authentik.sh commitc1b2476a30
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed Dec 18 10:02:52 2024 +0100 Add files via upload commitb7e00c4885
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri Dec 13 11:42:19 2024 +0100 dev commitdaf650be1f
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri Dec 13 11:40:40 2024 +0100 test commit5a3dca218e
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue Dec 10 14:41:59 2024 +0100 Update alpine-vaultwarden-install.sh commitb4c59c7044
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue Dec 10 09:44:54 2024 +0100 Update nginxproxymanager.sh commit9ef229b90a
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue Dec 10 09:29:21 2024 +0100 Update nginxproxymanager-install.sh commite6361570b3
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue Dec 10 09:23:56 2024 +0100 Update keycloak.sh commitf901cd55dd
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 13:16:27 2024 +0100 Update build.func commit02a0d16bee
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 13:14:36 2024 +0100 Update build.func commite30f96e038
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 11:26:35 2024 +0100 switch *arr to arr commit90246d1537
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 10:38:14 2024 +0100 add space option commit693ad497f6
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 10:35:19 2024 +0100 update motd for OS_version/name commit107243d576
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 10:34:15 2024 +0100 remove project in motd commite65593751c
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 10:32:15 2024 +0100 noCancel commit7fc60c9039
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 10:23:24 2024 +0100 switch nocancel commitef837ab8b9
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 10:21:25 2024 +0100 Update build.func commit37b398a5c9
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 10:20:24 2024 +0100 Update build.func commit6ea43228c4
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 10:16:10 2024 +0100 Update build.func commit8d89c107f9
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 10:08:57 2024 +0100 Update build.func commit6e90b44e7e
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 10:08:47 2024 +0100 Update build.func commit4c2965f850
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 10:06:34 2024 +0100 Update build.func commit29209dbee6
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 09:57:47 2024 +0100 Update build.func commit63be70cc25
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 09:50:49 2024 +0100 Update build.func commit02ded1ee47
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 09:46:39 2024 +0100 Update build.func commitb42d5c6a57
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 09:41:04 2024 +0100 Update build.func commit9e90ab1921
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 09:39:16 2024 +0100 Update build.func commit03301f12d2
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 09:36:00 2024 +0100 Update build.func commitd10c404b60
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 09:24:57 2024 +0100 Update create_lxc.sh commitb72eb02fde
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 09:19:32 2024 +0100 space for spinner commit542c4f703b
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 09:11:02 2024 +0100 Update install.func commit0f914e5ad7
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 09:06:49 2024 +0100 TAGS > var_tags commitd270b5535d
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 08:59:15 2024 +0100 fix space in spinner commitffca06575e
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon Dec 9 08:58:22 2024 +0100 fix space in spinner commitd73c19f5cd
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat Dec 7 22:10:22 2024 +0100 Fix Ressource-Check for other languages commitf107a60062
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat Dec 7 11:41:13 2024 +0100 netbox HTTPS instead http commitf6604e09d4
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri Dec 6 15:31:00 2024 +0100 fix for dev branch commit8063b68434
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri Dec 6 15:28:44 2024 +0100 Update install.func commitc0ff715175
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri Dec 6 15:28:19 2024 +0100 Update create_lxc.sh commitae614234df
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri Dec 6 15:26:57 2024 +0100 prepare for develop branch commit0141f3fc86
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri Dec 6 15:24:05 2024 +0100 Update build.func commit6d390bbd78
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri Dec 6 15:19:58 2024 +0100 Full Update
467 lines
15 KiB
Bash
467 lines
15 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Copyright (c) 2021-2024 tteck
|
|
# Author: tteck (tteckster)
|
|
# License: MIT
|
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
|
|
function header_info {
|
|
clear
|
|
cat <<"EOF"
|
|
__ __ ___ _ __ __ ____ _____
|
|
/ / / /___ ____ ___ ___ / | __________(_)____/ /_____ _____ / /_ / __ \/ ___/
|
|
/ /_/ / __ \/ __ `__ \/ _ \ / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/ / / / /\__ \
|
|
/ __ / /_/ / / / / / / __/ / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_ / /_/ /___/ /
|
|
/_/ /_/\____/_/ /_/ /_/\___/ /_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ \____//____/
|
|
|
|
EOF
|
|
}
|
|
header_info
|
|
echo -e "\n Loading..."
|
|
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
|
|
NEXTID=$(pvesh get /cluster/nextid)
|
|
VERSIONS=(stable beta dev)
|
|
for version in "${VERSIONS[@]}"; do
|
|
eval "$version=$(curl -s https://raw.githubusercontent.com/home-assistant/version/master/$version.json | grep "ova" | cut -d '"' -f 4)"
|
|
done
|
|
YW=$(echo "\033[33m")
|
|
BL=$(echo "\033[36m")
|
|
HA=$(echo "\033[1;34m")
|
|
RD=$(echo "\033[01;31m")
|
|
BGN=$(echo "\033[4;92m")
|
|
GN=$(echo "\033[1;92m")
|
|
DGN=$(echo "\033[32m")
|
|
CL=$(echo "\033[m")
|
|
BFR="\\r\\033[K"
|
|
HOLD=" "
|
|
CM="${GN}✓${CL}"
|
|
CROSS="${RD}✗${CL}"
|
|
THIN="discard=on,ssd=1,"
|
|
SPINNER_PID=""
|
|
set -Eeuo pipefail
|
|
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
|
trap cleanup EXIT
|
|
|
|
function error_handler() {
|
|
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
|
|
printf "\e[?25h"
|
|
local exit_code="$?"
|
|
local line_number="$1"
|
|
local command="$2"
|
|
local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
|
|
echo -e "\n$error_message\n"
|
|
cleanup_vmid
|
|
}
|
|
|
|
function cleanup_vmid() {
|
|
if qm status $VMID &>/dev/null; then
|
|
qm stop $VMID &>/dev/null
|
|
qm destroy $VMID &>/dev/null
|
|
fi
|
|
}
|
|
|
|
function cleanup() {
|
|
popd >/dev/null
|
|
rm -rf $TEMP_DIR
|
|
}
|
|
|
|
TEMP_DIR=$(mktemp -d)
|
|
pushd $TEMP_DIR >/dev/null
|
|
if whiptail --backtitle "Proxmox VE Helper Scripts" --title "HOME ASSISTANT OS VM" --yesno "This will create a New Home Assistant OS VM. Proceed?" 10 58; then
|
|
:
|
|
else
|
|
header_info && echo -e "⚠ User exited script \n" && exit
|
|
fi
|
|
|
|
function spinner() {
|
|
local chars="/-\|"
|
|
local spin_i=0
|
|
printf "\e[?25l"
|
|
while true; do
|
|
printf "\r \e[36m%s\e[0m" "${chars:spin_i++%${#chars}:1}"
|
|
sleep 0.1
|
|
done
|
|
}
|
|
|
|
function msg_info() {
|
|
local msg="$1"
|
|
echo -ne " ${HOLD} ${YW}${msg} "
|
|
spinner &
|
|
SPINNER_PID=$!
|
|
}
|
|
|
|
function msg_ok() {
|
|
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
|
|
printf "\e[?25h"
|
|
local msg="$1"
|
|
echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
|
|
}
|
|
|
|
function msg_error() {
|
|
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
|
|
printf "\e[?25h"
|
|
local msg="$1"
|
|
echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
|
|
}
|
|
|
|
function check_root() {
|
|
if [[ "$(id -u)" -ne 0 || $(ps -o comm= -p $PPID) == "sudo" ]]; then
|
|
clear
|
|
msg_error "Please run this script as root."
|
|
echo -e "\nExiting..."
|
|
sleep 2
|
|
exit
|
|
fi
|
|
}
|
|
|
|
function pve_check() {
|
|
if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then
|
|
msg_error "This version of Proxmox Virtual Environment is not supported"
|
|
echo -e "Requires Proxmox Virtual Environment Version 8.1 or later."
|
|
echo -e "Exiting..."
|
|
sleep 2
|
|
exit
|
|
fi
|
|
}
|
|
|
|
function arch_check() {
|
|
if [ "$(dpkg --print-architecture)" != "amd64" ]; then
|
|
msg_error "This script will not work with PiMox! \n"
|
|
echo -e "Exiting..."
|
|
sleep 2
|
|
exit
|
|
fi
|
|
}
|
|
|
|
function ssh_check() {
|
|
if command -v pveversion >/dev/null 2>&1; then
|
|
if [ -n "${SSH_CLIENT:+x}" ]; then
|
|
if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SSH DETECTED" --yesno "It's suggested to use the Proxmox shell instead of SSH, since SSH can create issues while gathering variables. Would you like to proceed with using SSH?" 10 62; then
|
|
echo "you've been warned"
|
|
else
|
|
clear
|
|
exit
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function exit-script() {
|
|
clear
|
|
echo -e "⚠ User exited script \n"
|
|
exit
|
|
}
|
|
|
|
function default_settings() {
|
|
BRANCH="$stable"
|
|
VMID="$NEXTID"
|
|
FORMAT=",efitype=4m"
|
|
MACHINE=""
|
|
DISK_CACHE="cache=writethrough,"
|
|
HN="haos$stable"
|
|
CPU_TYPE=" -cpu host"
|
|
CORE_COUNT="2"
|
|
RAM_SIZE="4096"
|
|
BRG="vmbr0"
|
|
MAC="$GEN_MAC"
|
|
VLAN=""
|
|
MTU=""
|
|
START_VM="yes"
|
|
echo -e "${DGN}Using HAOS Version: ${BGN}${BRANCH}${CL}"
|
|
echo -e "${DGN}Using Virtual Machine ID: ${BGN}${VMID}${CL}"
|
|
echo -e "${DGN}Using Machine Type: ${BGN}i440fx${CL}"
|
|
echo -e "${DGN}Using Disk Cache: ${BGN}Write Through${CL}"
|
|
echo -e "${DGN}Using Hostname: ${BGN}${HN}${CL}"
|
|
echo -e "${DGN}Using CPU Model: ${BGN}Host${CL}"
|
|
echo -e "${DGN}Allocated Cores: ${BGN}${CORE_COUNT}${CL}"
|
|
echo -e "${DGN}Allocated RAM: ${BGN}${RAM_SIZE}${CL}"
|
|
echo -e "${DGN}Using Bridge: ${BGN}${BRG}${CL}"
|
|
echo -e "${DGN}Using MAC Address: ${BGN}${MAC}${CL}"
|
|
echo -e "${DGN}Using VLAN: ${BGN}Default${CL}"
|
|
echo -e "${DGN}Using Interface MTU Size: ${BGN}Default${CL}"
|
|
echo -e "${DGN}Start VM when completed: ${BGN}yes${CL}"
|
|
echo -e "${BL}Creating a HAOS VM using the above default settings${CL}"
|
|
}
|
|
|
|
function advanced_settings() {
|
|
if BRANCH=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "HAOS VERSION" --radiolist "Choose Version" --cancel-button Exit-Script 10 58 3 \
|
|
"$stable" "Stable " ON \
|
|
"$beta" "Beta " OFF \
|
|
"$dev" "Dev " OFF \
|
|
3>&1 1>&2 2>&3); then
|
|
echo -e "${DGN}Using HAOS Version: ${BGN}$BRANCH${CL}"
|
|
else
|
|
exit-script
|
|
fi
|
|
|
|
while true; do
|
|
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
|
|
if [ -z "$VMID" ]; then
|
|
VMID="$NEXTID"
|
|
fi
|
|
if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
|
|
echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
|
|
sleep 2
|
|
continue
|
|
fi
|
|
echo -e "${DGN}Virtual Machine ID: ${BGN}$VMID${CL}"
|
|
break
|
|
else
|
|
exit-script
|
|
fi
|
|
done
|
|
|
|
if MACH=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "MACHINE TYPE" --radiolist --cancel-button Exit-Script "Choose Type" 10 58 2 \
|
|
"i440fx" "Machine i440fx" ON \
|
|
"q35" "Machine q35" OFF \
|
|
3>&1 1>&2 2>&3); then
|
|
if [ $MACH = q35 ]; then
|
|
echo -e "${DGN}Using Machine Type: ${BGN}$MACH${CL}"
|
|
FORMAT=""
|
|
MACHINE=" -machine q35"
|
|
else
|
|
echo -e "${DGN}Using Machine Type: ${BGN}$MACH${CL}"
|
|
FORMAT=",efitype=4m"
|
|
MACHINE=""
|
|
fi
|
|
else
|
|
exit-script
|
|
fi
|
|
|
|
if DISK_CACHE1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "DISK CACHE" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \
|
|
"0" "None" OFF \
|
|
"1" "Write Through (Default)" ON \
|
|
3>&1 1>&2 2>&3); then
|
|
if [ $DISK_CACHE1 = "1" ]; then
|
|
echo -e "${DGN}Using Disk Cache: ${BGN}Write Through${CL}"
|
|
DISK_CACHE="cache=writethrough,"
|
|
else
|
|
echo -e "${DGN}Using Disk Cache: ${BGN}None${CL}"
|
|
DISK_CACHE=""
|
|
fi
|
|
else
|
|
exit-script
|
|
fi
|
|
|
|
if VM_NAME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 haos${BRANCH} --title "HOSTNAME" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
|
if [ -z $VM_NAME ]; then
|
|
HN="haos${BRANCH}"
|
|
echo -e "${DGN}Using Hostname: ${BGN}$HN${CL}"
|
|
else
|
|
HN=$(echo ${VM_NAME,,} | tr -d ' ')
|
|
echo -e "${DGN}Using Hostname: ${BGN}$HN${CL}"
|
|
fi
|
|
else
|
|
exit-script
|
|
fi
|
|
|
|
if CPU_TYPE1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CPU MODEL" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \
|
|
"0" "KVM64" OFF \
|
|
"1" "Host (Default)" ON \
|
|
3>&1 1>&2 2>&3); then
|
|
if [ $CPU_TYPE1 = "1" ]; then
|
|
echo -e "${DGN}Using CPU Model: ${BGN}Host${CL}"
|
|
CPU_TYPE=" -cpu host"
|
|
else
|
|
echo -e "${DGN}Using CPU Model: ${BGN}KVM64${CL}"
|
|
CPU_TYPE=""
|
|
fi
|
|
else
|
|
exit-script
|
|
fi
|
|
|
|
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
|
|
if [ -z $CORE_COUNT ]; then
|
|
CORE_COUNT="2"
|
|
echo -e "${DGN}Allocated Cores: ${BGN}$CORE_COUNT${CL}"
|
|
else
|
|
echo -e "${DGN}Allocated Cores: ${BGN}$CORE_COUNT${CL}"
|
|
fi
|
|
else
|
|
exit-script
|
|
fi
|
|
|
|
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
|
|
if [ -z $RAM_SIZE ]; then
|
|
RAM_SIZE="4096"
|
|
echo -e "${DGN}Allocated RAM: ${BGN}$RAM_SIZE${CL}"
|
|
else
|
|
echo -e "${DGN}Allocated RAM: ${BGN}$RAM_SIZE${CL}"
|
|
fi
|
|
else
|
|
exit-script
|
|
fi
|
|
|
|
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
|
|
if [ -z $BRG ]; then
|
|
BRG="vmbr0"
|
|
echo -e "${DGN}Using Bridge: ${BGN}$BRG${CL}"
|
|
else
|
|
echo -e "${DGN}Using Bridge: ${BGN}$BRG${CL}"
|
|
fi
|
|
else
|
|
exit-script
|
|
fi
|
|
|
|
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
|
|
if [ -z $MAC1 ]; then
|
|
MAC="$GEN_MAC"
|
|
echo -e "${DGN}Using MAC Address: ${BGN}$MAC${CL}"
|
|
else
|
|
MAC="$MAC1"
|
|
echo -e "${DGN}Using MAC Address: ${BGN}$MAC1${CL}"
|
|
fi
|
|
else
|
|
exit-script
|
|
fi
|
|
|
|
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
|
|
if [ -z $VLAN1 ]; then
|
|
VLAN1="Default"
|
|
VLAN=""
|
|
echo -e "${DGN}Using Vlan: ${BGN}$VLAN1${CL}"
|
|
else
|
|
VLAN=",tag=$VLAN1"
|
|
echo -e "${DGN}Using Vlan: ${BGN}$VLAN1${CL}"
|
|
fi
|
|
else
|
|
exit-script
|
|
fi
|
|
|
|
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
|
|
if [ -z $MTU1 ]; then
|
|
MTU1="Default"
|
|
MTU=""
|
|
echo -e "${DGN}Using Interface MTU Size: ${BGN}$MTU1${CL}"
|
|
else
|
|
MTU=",mtu=$MTU1"
|
|
echo -e "${DGN}Using Interface MTU Size: ${BGN}$MTU1${CL}"
|
|
fi
|
|
else
|
|
exit-script
|
|
fi
|
|
|
|
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "START VIRTUAL MACHINE" --yesno "Start VM when completed?" 10 58); then
|
|
echo -e "${DGN}Start VM when completed: ${BGN}yes${CL}"
|
|
START_VM="yes"
|
|
else
|
|
echo -e "${DGN}Start VM when completed: ${BGN}no${CL}"
|
|
START_VM="no"
|
|
fi
|
|
|
|
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create HAOS ${BRANCH} VM?" --no-button Do-Over 10 58); then
|
|
echo -e "${RD}Creating a HAOS VM using the above advanced settings${CL}"
|
|
else
|
|
header_info
|
|
echo -e "${RD}Using Advanced Settings${CL}"
|
|
advanced_settings
|
|
fi
|
|
}
|
|
|
|
function start_script() {
|
|
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "SETTINGS" --yesno "Use Default Settings?" --no-button Advanced 10 58); then
|
|
header_info
|
|
echo -e "${BL}Using Default Settings${CL}"
|
|
default_settings
|
|
else
|
|
header_info
|
|
echo -e "${RD}Using Advanced Settings${CL}"
|
|
advanced_settings
|
|
fi
|
|
}
|
|
|
|
check_root
|
|
arch_check
|
|
pve_check
|
|
ssh_check
|
|
start_script
|
|
|
|
msg_info "Validating Storage"
|
|
while read -r line; do
|
|
TAG=$(echo $line | awk '{print $1}')
|
|
TYPE=$(echo $line | awk '{printf "%-10s", $2}')
|
|
FREE=$(echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk '{printf( "%9sB", $6)}')
|
|
ITEM=" Type: $TYPE Free: $FREE "
|
|
OFFSET=2
|
|
if [[ $((${#ITEM} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then
|
|
MSG_MAX_LENGTH=$((${#ITEM} + $OFFSET))
|
|
fi
|
|
STORAGE_MENU+=("$TAG" "$ITEM" "OFF")
|
|
done < <(pvesm status -content images | awk 'NR>1')
|
|
VALID=$(pvesm status -content images | awk 'NR>1')
|
|
if [ -z "$VALID" ]; then
|
|
msg_error "Unable to detect a valid storage location."
|
|
exit
|
|
elif [ $((${#STORAGE_MENU[@]} / 3)) -eq 1 ]; then
|
|
STORAGE=${STORAGE_MENU[0]}
|
|
else
|
|
while [ -z "${STORAGE:+x}" ]; do
|
|
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
|
|
printf "\e[?25h"
|
|
STORAGE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Storage Pools" --radiolist \
|
|
"Which storage pool you would like to use for ${HN}?\nTo make a selection, use the Spacebar.\n" \
|
|
16 $(($MSG_MAX_LENGTH + 23)) 6 \
|
|
"${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
|
|
done
|
|
fi
|
|
msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location."
|
|
msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}."
|
|
msg_info "Retrieving the URL for Home Assistant ${BRANCH} Disk Image"
|
|
if [ "$BRANCH" == "$dev" ]; then
|
|
URL=https://os-artifacts.home-assistant.io/${BRANCH}/haos_ova-${BRANCH}.qcow2.xz
|
|
else
|
|
URL=https://github.com/home-assistant/operating-system/releases/download/${BRANCH}/haos_ova-${BRANCH}.qcow2.xz
|
|
fi
|
|
sleep 2
|
|
msg_ok "${CL}${BL}${URL}${CL}"
|
|
wget -q --show-progress $URL
|
|
echo -en "\e[1A\e[0K"
|
|
FILE=$(basename $URL)
|
|
msg_ok "Downloaded ${CL}${BL}haos_ova-${BRANCH}.qcow2.xz${CL}"
|
|
msg_info "Extracting KVM Disk Image"
|
|
unxz $FILE
|
|
STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
|
|
case $STORAGE_TYPE in
|
|
nfs | dir)
|
|
DISK_EXT=".raw"
|
|
DISK_REF="$VMID/"
|
|
DISK_IMPORT="-format raw"
|
|
THIN=""
|
|
;;
|
|
btrfs | local-zfs)
|
|
DISK_EXT=".raw"
|
|
DISK_REF="$VMID/"
|
|
DISK_IMPORT="-format raw"
|
|
FORMAT=",efitype=4m"
|
|
THIN=""
|
|
;;
|
|
esac
|
|
for i in {0,1}; do
|
|
disk="DISK$i"
|
|
eval DISK${i}=vm-${VMID}-disk-${i}${DISK_EXT:-}
|
|
eval DISK${i}_REF=${STORAGE}:${DISK_REF:-}${!disk}
|
|
done
|
|
msg_ok "Extracted KVM Disk Image"
|
|
msg_info "Creating HAOS VM"
|
|
qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
|
|
-name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
|
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
|
|
qm importdisk $VMID ${FILE%.*} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
|
qm set $VMID \
|
|
-efidisk0 ${DISK0_REF}${FORMAT} \
|
|
-scsi0 ${DISK1_REF},${DISK_CACHE}${THIN}size=32G \
|
|
-boot order=scsi0 \
|
|
-description "<div align='center'><a href='https://Helper-Scripts.com' target='_blank' rel='noopener noreferrer'><img src='https://raw.githubusercontent.com/community-scripts/ProxmoxVE/develop/misc/images/logo-81x112.png'/></a>
|
|
|
|
# Home Assistant OS
|
|
|
|
<a href='https://ko-fi.com/D1D7EP4GF'><img src='https://img.shields.io/badge/☕-Buy me a coffee-blue' /></a>
|
|
</div>" >/dev/null
|
|
msg_ok "Created HAOS VM ${CL}${BL}(${HN})"
|
|
if [ "$START_VM" == "yes" ]; then
|
|
msg_info "Starting Home Assistant OS VM"
|
|
qm start $VMID
|
|
msg_ok "Started Home Assistant OS VM"
|
|
fi
|
|
msg_ok "Completed Successfully!\n"
|