tteckster 2 lat temu
rodzic
commit
049b2cf770
100 zmienionych plików z 41 dodań i 17125 usunięć
  1. 0 162
      ct/adguard-v1.sh
  2. 0 256
      ct/adguard-v2.sh
  3. 0 358
      ct/adguard-v3.sh
  4. 1 1
      ct/adguard-v4.sh
  5. 1 1
      ct/blocky-v4.sh
  6. 1 1
      ct/casaos-v4.sh
  7. 1 1
      ct/changedetection-v4.sh
  8. 0 253
      ct/daemonsync-v2.sh
  9. 0 358
      ct/daemonsync-v3.sh
  10. 1 1
      ct/daemonsync-v4.sh
  11. 0 254
      ct/dashy-v2.sh
  12. 0 358
      ct/dashy-v3.sh
  13. 1 1
      ct/dashy-v4.sh
  14. 0 165
      ct/debian-v1.sh
  15. 0 257
      ct/debian-v2.sh
  16. 0 357
      ct/debian-v3.sh
  17. 1 1
      ct/debian-v4.sh
  18. 0 371
      ct/deconz-v3.sh
  19. 1 1
      ct/deconz-v4.sh
  20. 0 312
      ct/docker-v2.sh
  21. 0 361
      ct/docker-v3.sh
  22. 1 1
      ct/docker-v4.sh
  23. 1 1
      ct/emby-v4.sh
  24. 1 1
      ct/emqx-v4.sh
  25. 0 188
      ct/esphome-v1.sh
  26. 0 259
      ct/esphome-v2.sh
  27. 0 357
      ct/esphome-v3.sh
  28. 1 1
      ct/esphome-v4.sh
  29. 0 252
      ct/grafana-v2.sh
  30. 0 356
      ct/grafana-v3.sh
  31. 1 1
      ct/grafana-v4.sh
  32. 0 359
      ct/grocy-v3.sh
  33. 1 1
      ct/grocy-v4.sh
  34. 0 259
      ct/heimdalldashboard-v2.sh
  35. 0 357
      ct/heimdalldashboard-v3.sh
  36. 1 1
      ct/heimdalldashboard-v4.sh
  37. 1 1
      ct/homeassistant-core-v4.sh
  38. 0 176
      ct/homeassistant-v1.sh
  39. 0 316
      ct/homeassistant-v2.sh
  40. 0 365
      ct/homeassistant-v3.sh
  41. 1 1
      ct/homeassistant-v4.sh
  42. 0 251
      ct/homebridge-v2.sh
  43. 0 356
      ct/homebridge-v3.sh
  44. 1 1
      ct/homebridge-v4.sh
  45. 1 1
      ct/homepage-v4.sh
  46. 1 1
      ct/hyperion-v4.sh
  47. 0 250
      ct/influxdb-v2.sh
  48. 0 355
      ct/influxdb-v3.sh
  49. 1 1
      ct/influxdb-v4.sh
  50. 0 356
      ct/iobroker-v3.sh
  51. 1 1
      ct/iobroker-v4.sh
  52. 0 171
      ct/jellyfin-v1.sh
  53. 0 370
      ct/jellyfin-v3.sh
  54. 1 1
      ct/jellyfin-v4.sh
  55. 1 1
      ct/k0s-v4.sh
  56. 0 360
      ct/keycloak-v3.sh
  57. 1 1
      ct/keycloak-v4.sh
  58. 0 359
      ct/magicmirror-v3.sh
  59. 1 1
      ct/magicmirror-v4.sh
  60. 0 168
      ct/mariadb-v1.sh
  61. 0 252
      ct/mariadb-v2.sh
  62. 0 356
      ct/mariadb-v3.sh
  63. 1 1
      ct/mariadb-v4.sh
  64. 0 258
      ct/meshcentral-v2.sh
  65. 0 356
      ct/meshcentral-v3.sh
  66. 1 1
      ct/meshcentral-v4.sh
  67. 0 168
      ct/motioneye-v1.sh
  68. 0 258
      ct/motioneye-v2.sh
  69. 0 356
      ct/motioneye-v3.sh
  70. 1 1
      ct/motioneye-v4.sh
  71. 0 158
      ct/mqtt-v1.sh
  72. 0 250
      ct/mqtt-v2.sh
  73. 0 354
      ct/mqtt-v3.sh
  74. 1 1
      ct/mqtt-v4.sh
  75. 0 356
      ct/n8n-v3.sh
  76. 1 1
      ct/n8n-v4.sh
  77. 1 1
      ct/navidrome-v4.sh
  78. 1 1
      ct/nextcloudpi-v4.sh
  79. 0 162
      ct/nginx-proxy-manager-v1.sh
  80. 0 251
      ct/nginx-proxy-manager-v2.sh
  81. 0 356
      ct/nginx-proxy-manager-v3.sh
  82. 1 1
      ct/nginx-proxy-manager-v4.sh
  83. 0 258
      ct/nocodb-v2.sh
  84. 0 356
      ct/nocodb-v3.sh
  85. 1 1
      ct/nocodb-v4.sh
  86. 0 161
      ct/node-red-v1.sh
  87. 0 253
      ct/node-red-v2.sh
  88. 0 356
      ct/node-red-v3.sh
  89. 1 1
      ct/node-red-v4.sh
  90. 0 252
      ct/omada-v2.sh
  91. 0 356
      ct/omada-v3.sh
  92. 1 1
      ct/omada-v4.sh
  93. 1 1
      ct/omv-v4.sh
  94. 0 361
      ct/openhab-v3.sh
  95. 1 1
      ct/openhab-v4.sh
  96. 1 1
      ct/paperless-ngx-v4.sh
  97. 0 259
      ct/photoprism-v2.sh
  98. 0 357
      ct/photoprism-v3.sh
  99. 1 1
      ct/photoprism-v4.sh
  100. 0 162
      ct/pihole-v1.sh

+ 0 - 162
ct/adguard-v1.sh

@@ -1,162 +0,0 @@
-#!/usr/bin/env bash
-
-while true; do
-    read -p "This will create a New AdGuard Home LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-
-set -o errexit  
-set -o errtrace 
-set -o nounset  
-set -o pipefail 
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-CHECKMARK='\033[0;32m\xE2\x9C\x94\033[0m'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if [ ! -z ${MOUNT+x} ]; then
-    pct unmount $CTID
-  fi
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
-function load_module() {
-  if ! $(lsmod | grep -Fq $1); then
-    modprobe $1 &>/dev/null || \
-      die "Failed to load '$1' module."
-  fi
-  MODULES_PATH=/etc/modules
-  if ! $(grep -Fxq "$1" $MODULES_PATH); then
-    echo "$1" >> $MODULES_PATH || \
-      die "Failed to add '$1' module to load at boot."
-  fi
-}
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-wget -qL https://raw.githubusercontent.com/tteck/Proxmox/main/setup/adguard_setup.sh
-
-load_module overlay
-
-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 rootdir | awk 'NR>1')
-if [ $((${#STORAGE_MENU[@]}/3)) -eq 0 ]; then
-  warn "'Container' needs to be selected for at least one storage location."
-  die "Unable to detect valid storage location."
-elif [ $((${#STORAGE_MENU[@]}/3)) -eq 1 ]; then
-  STORAGE=${STORAGE_MENU[0]}
-else
-  while [ -z "${STORAGE:+x}" ]; do
-    STORAGE=$(whiptail --title "Storage Pools" --radiolist \
-    "Which storage pool you would like to use for the container?\n\n" \
-    16 $(($MSG_MAX_LENGTH + 23)) 6 \
-    "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
-  done
-fi
-info "Using '$STORAGE' for storage location."
-
-CTID=$(pvesh get /cluster/nextid)
-info "LXC ID is $CTID."
-
-echo -e "${CHECKMARK} \e[1;92m Updating LXC Template List... \e[0m"
-pveam update >/dev/null
-
-echo -e "${CHECKMARK} \e[1;92m Downloading LXC Template... \e[0m"
-OSTYPE=debian
-OSVERSION=${OSTYPE}-11
-mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($OSVERSION.*\)/\1/p" | sort -t - -k 2 -V)
-TEMPLATE="${TEMPLATES[-1]}"
-pveam download local $TEMPLATE >/dev/null ||
-  die "A problem occured while downloading the LXC template."
-
-STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
-case $STORAGE_TYPE in
-  dir|nfs)
-    DISK_EXT=".raw"
-    DISK_REF="$CTID/"
-    ;;
-  zfspool)
-    DISK_PREFIX="subvol"
-    DISK_FORMAT="subvol"
-    ;;
-esac
-DISK=${DISK_PREFIX:-vm}-${CTID}-disk-0${DISK_EXT-}
-ROOTFS=${STORAGE}:${DISK_REF-}${DISK}
-
-echo -e "${CHECKMARK} \e[1;92m Creating LXC... \e[0m"
-DISK_SIZE=2G
-pvesm alloc $STORAGE $CTID $DISK $DISK_SIZE --format ${DISK_FORMAT:-raw} >/dev/null
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-else
-  mkfs.ext4 $(pvesm path $ROOTFS) &>/dev/null
-fi
-ARCH=$(dpkg --print-architecture)
-HOSTNAME=adguard
-TEMPLATE_STRING="local:vztmpl/${TEMPLATE}"
-pct create $CTID $TEMPLATE_STRING -arch $ARCH -features nesting=1 \
-  -hostname $HOSTNAME -net0 name=eth0,bridge=vmbr0,ip=dhcp -onboot 1 -cores 1 -memory 512 \
-  -ostype $OSTYPE -rootfs $ROOTFS,size=$DISK_SIZE -storage $STORAGE >/dev/null
-
-MOUNT=$(pct mount $CTID | cut -d"'" -f 2)
-ln -fs $(readlink /etc/localtime) ${MOUNT}/etc/localtime
-pct unmount $CTID && unset MOUNT
-
-echo -e "${CHECKMARK} \e[1;92m Starting LXC... \e[0m"
-pct start $CTID
-pct push $CTID adguard_setup.sh /adguard_setup.sh -perms 755
-pct exec $CTID /adguard_setup.sh
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-info "Successfully created a AdGuard Home LXC to $CTID"
-echo -e "\e[1;92m AdGuard Home Setup should be reachable by going to the following URL.
-                  http://${IP}:3000
-\e[0m"

+ 0 - 256
ct/adguard-v2.sh

@@ -1,256 +0,0 @@
-#!/usr/bin/env bash
-
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New Adguard Home LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${GN}
-              _                           _ 
-     /\      | |                         | |
-    /  \   __| | __ _ _   _  __ _ _ __ __| |
-   / /\ \ / _  |/ _  | | | |/ _  |  __/ _  |
-  / ____ \ (_| | (_| | |_| | (_| | | | (_| |
- /_/    \_\__,_|\__, |\__,_|\__,_|_|  \__,_|
-                 __/ |                      
-                |___/                       
-                                                                                                                        
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}  
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=2
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname adguard
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 512
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/adguard-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created Adguard Home LXC to${CL} ${BL}$CTID${CL}.
-${GN}Adguard${CL} Setup should be reachable by going to the following URL.
-         ${BL}http://${IP}:3000${CL} \n"
-         

+ 0 - 358
ct/adguard-v3.sh

@@ -1,358 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Adguard"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${GN}
-              _                           _ 
-     /\      | |                         | |
-    /  \   __| | __ _ _   _  __ _ _ __ __| |
-   / /\ \ / _  |/ _  | | | |/ _  |  __/ _  |
-  / ____ \ (_| | (_| | |_| | (_| | | | (_| |
- /_/    \_\__,_|\__, |\__,_|\__,_|_|  \__,_|
-               v3__/ |                      
-                |___/                       
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}2${CL}${DGN}GB${CL}"
-        DISK_SIZE="2"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="1"
-        echo -e "${DGN}Using ${BGN}512${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="512"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 2 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="2"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 1 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="1"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 512 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="512"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/adguard-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# AdGuard Home LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "Adguard Setup should be reachable by going to the following URL.
-         ${BL}http://${IP}:3000${CL} \n"

+ 1 - 1
ct/adguard-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/blocky-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/casaos-v4.sh

@@ -325,7 +325,7 @@ EOF
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/changedetection-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 253
ct/daemonsync-v2.sh

@@ -1,253 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New Daemon Sync Server LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  _____                                      _____                  
- |  __ \                                    / ____|                 
- | |  | | __ _  ___ _ __ ___   ___  _ __   | (___  _   _ _ __   ___ 
- | |  | |/ _  |/ _ \  _   _ \ / _ \|  _ \   \___ \| | | |  _ \ / __|
- | |__| | (_| |  __/ | | | | | (_) | | | |  ____) | |_| | | | | (__ 
- |_____/ \__,_|\___|_| |_| |_|\___/|_| |_| |_____/ \__, |_| |_|\___|
-                                                    __/ |           
-                                                   |___/            
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=8
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname daemonsync
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 512
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/daemonsync-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created Daemon Sync Server LXC to${CL} ${BL}$CTID${CL}.
-  Daemon Sync should be reachable by going to the following URL.
-           ${BL}http://${IP}:8084${CL} \n"

+ 0 - 358
ct/daemonsync-v3.sh

@@ -1,358 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Daemon Sync"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  _____                                      _____                  
- |  __ \                                    / ____|                 
- | |  | | __ _v3___ _ __ ___   ___  _ __   | (___  _   _ _ __   ___ 
- | |  | |/ _  |/ _ \  _   _ \ / _ \|  _ \   \___ \| | | |  _ \ / __|
- | |__| | (_| |  __/ | | | | | (_) | | | |  ____) | |_| | | | | (__ 
- |_____/ \__,_|\___|_| |_| |_|\___/|_| |_| |_____/ \__, |_| |_|\___|
-                                                    __/ |           
-                                                   |___/            
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}8${CL}${DGN}GB${CL}"
-        DISK_SIZE="8"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="1"
-        echo -e "${DGN}Using ${BGN}512${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="512"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 8 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="8"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 1 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="1"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 512 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="512"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/daemonsync-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:8084${CL} \n"

+ 1 - 1
ct/daemonsync-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 254
ct/dashy-v2.sh

@@ -1,254 +0,0 @@
-#!/usr/bin/env bash
-clear
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New Dashy LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-  _____            _           
- |  __ \          | |          
- | |  | | __ _ ___| |__  _   _ 
- | |  | |/ _  / __|  _ \| | | |
- | |__| | (_| \__ \ | | | |_| |
- |_____/ \__,_|___/_| |_|\__, |
-                          __/ |
-                         |___/ 
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=3
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname dashy
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 2
-  -memory 2048
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/dashy-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created Dashy LXC to${CL} ${BL}$CTID${CL}.
-${BL}Dashy${CL} should be reachable by going to the following URL.
-         ${BL}http://${IP}:4000${CL} \n"

+ 0 - 358
ct/dashy-v3.sh

@@ -1,358 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Dashy"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-  _____            _           
- |  __ \          | |          
- | |  | | __ _ ___| |__  _   _ 
- | |  | |/ _  / __|  _ \| | | |
- | |__| | (_| \__ \ | | | |_| |
- |_____/ \__,_|___/_| |_|\__, |
-                        v3__/ |
-                         |___/ 
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}3${CL}${DGN}GB${CL}"
-        DISK_SIZE="3"
-        echo -e "${DGN}Using ${BGN}2${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="2"
-        echo -e "${DGN}Using ${BGN}2048${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="2048"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 3 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="3"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 2 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="2"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 2048 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="2048"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/dashy-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:4000${CL} \n"

+ 1 - 1
ct/dashy-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 165
ct/debian-v1.sh

@@ -1,165 +0,0 @@
-#!/usr/bin/env bash
-
-while true; do
-    read -p "This will create a New Debian 11 LXC Container. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-CHECKMARK='\033[0;32m\xE2\x9C\x94\033[0m'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if [ ! -z ${MOUNT+x} ]; then
-    pct unmount $CTID
-  fi
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
-function load_module() {
-  if ! $(lsmod | grep -Fq $1); then
-    modprobe $1 &>/dev/null || \
-      die "Failed to load '$1' module."
-  fi
-  MODULES_PATH=/etc/modules
-  if ! $(grep -Fxq "$1" $MODULES_PATH); then
-    echo "$1" >> $MODULES_PATH || \
-      die "Failed to add '$1' module to load at boot."
-  fi
-}
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-wget -qL https://raw.githubusercontent.com/tteck/Proxmox/main/setup/debian11_setup.sh
-
-load_module overlay
-
-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 rootdir | awk 'NR>1')
-if [ $((${#STORAGE_MENU[@]}/3)) -eq 0 ]; then
-  warn "'Container' needs to be selected for at least one storage location."
-  die "Unable to detect valid storage location."
-elif [ $((${#STORAGE_MENU[@]}/3)) -eq 1 ]; then
-  STORAGE=${STORAGE_MENU[0]}
-else
-  while [ -z "${STORAGE:+x}" ]; do
-    STORAGE=$(whiptail --title "Storage Pools" --radiolist \
-    "Which storage pool you would like to use for the container?\n\n" \
-    16 $(($MSG_MAX_LENGTH + 23)) 6 \
-    "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
-  done
-fi
-info "Using '$STORAGE' for storage location."
-
-CTID=$(pvesh get /cluster/nextid)
-info "Container ID is $CTID."
-
-echo -e "${CHECKMARK} \e[1;92m Updating LXC Template List... \e[0m"
-pveam update >/dev/null
-
-echo -e "${CHECKMARK} \e[1;92m Downloading LXC Template... \e[0m"
-OSTYPE=debian
-OSVERSION=${OSTYPE}-11
-mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($OSVERSION.*\)/\1/p" | sort -t - -k 2 -V)
-TEMPLATE="${TEMPLATES[-1]}"
-pveam download local $TEMPLATE >/dev/null ||
-  die "A problem occured while downloading the LXC template."
-
-STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
-case $STORAGE_TYPE in
-  dir|nfs)
-    DISK_EXT=".raw"
-    DISK_REF="$CTID/"
-    ;;
-  zfspool)
-    DISK_PREFIX="subvol"
-    DISK_FORMAT="subvol"
-    ;;
-esac
-DISK=${DISK_PREFIX:-vm}-${CTID}-disk-0${DISK_EXT-}
-ROOTFS=${STORAGE}:${DISK_REF-}${DISK}
-
-echo -e "${CHECKMARK} \e[1;92m Creating LXC Container... \e[0m"
-DISK_SIZE=2G
-pvesm alloc $STORAGE $CTID $DISK $DISK_SIZE --format ${DISK_FORMAT:-raw} >/dev/null
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-else
-  mkfs.ext4 $(pvesm path $ROOTFS) &>/dev/null
-fi
-ARCH=$(dpkg --print-architecture)
-HOSTNAME=debian11
-TEMPLATE_STRING="local:vztmpl/${TEMPLATE}"
-pct create $CTID $TEMPLATE_STRING -arch $ARCH -features nesting=1 \
-  -hostname $HOSTNAME -net0 name=eth0,bridge=vmbr0,ip=dhcp -onboot 1 -cores 1 -memory 512\
-  -ostype $OSTYPE -rootfs $ROOTFS,size=$DISK_SIZE -storage $STORAGE >/dev/null
-
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-
-MOUNT=$(pct mount $CTID | cut -d"'" -f 2)
-ln -fs $(readlink /etc/localtime) ${MOUNT}/etc/localtime
-pct unmount $CTID && unset MOUNT
-
-echo -e "${CHECKMARK} \e[1;92m Starting LXC Container... \e[0m"
-pct start $CTID
-pct push $CTID debian11_setup.sh /debian11_setup.sh -perms 755
-pct exec $CTID /debian11_setup.sh
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-info "Successfully created a Debian 11 LXC Container to $CTID at IP Address ${IP}"

+ 0 - 257
ct/debian-v2.sh

@@ -1,257 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[32m"`
-CL=`echo "\033[m"`
-APP="Debian"
-HN=$(echo ${APP,,} | tr -d ' ')
-while true; do
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-  _____       _     _             
- |  __ \     | |   (_)            
- | |  | | ___| |__  _  __ _ _ __  
- | |  | |/ _ \  _ \| |/ _  |  _ \ 
- | |__| |  __/ |_) | | (_| | | | |
- |_____/ \___|_.__/|_|\__,_|_| |_|
-                                                                                                                        
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=2
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 512
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some applications may not work properly due to ZFS not supporting 'fallocate'."
-fi
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$HN-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created ${APP} LXC to${CL} ${BL}$CTID${CL}. \n"

+ 0 - 357
ct/debian-v3.sh

@@ -1,357 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-APP="Debian"
-var_disk="2"
-var_cpu="1"
-var_ram="512"
-var_os="debian"
-var_version="11"
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-var_install="${NSAPP}-install"
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-function msg_info() {
-   local msg="$1"
-   echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-   local msg="$1"
-   echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-  _____       _     _             
- |  __ \     | |   (_)            
- | |  | | ___| |__  _  __ _ _ __  
- | |  | |/ _ \  _ \| |/ _  |  _ \ 
- | |__| |  __/ |_) | | (_| | | | |
- |_${YW}v3${RD}__/ \___|_.__/|_|\__,_|_| |_|
-${CL}"
-}
-
-header_info
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}$var_disk${CL}${DGN}GB${CL}"
-        DISK_SIZE="$var_disk"
-        echo -e "${DGN}Using ${BGN}$var_cpu${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="$var_cpu"
-        echo -e "${DGN}Using ${BGN}$var_ram${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="$var_ram"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: $var_disk "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="$var_disk"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: $var_cpu "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="$var_cpu"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: $var_ram "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="$var_ram"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-export CTID=$CT_ID
-export PCT_OSTYPE=$var_os
-export PCT_OSVERSION=$var_version
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"

+ 1 - 1
ct/debian-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} ${var_version} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 371
ct/deconz-v3.sh

@@ -1,371 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-APP="deCONZ"
-var_disk="4"
-var_cpu="2"
-var_ram="1024"
-var_os="ubuntu"
-var_version="20.04"
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-var_install="${NSAPP}-install"
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-function msg_info() {
-   local msg="$1"
-   echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-   local msg="$1"
-   echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${YW}
-      _       _____                
-     | |     / ____|               
-   __| | v3_| |     ___  _ __  ____
-  / _  |/ _ \ |    / _ \|  _ \|_  /
- | (_| |  __/ |___| (_) | | | |/ / 
-  \__,_|\___|\_____\___/|_| |_/___|
-${CL}"
-}
-
-header_info
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Privileged${CL}"
-        CT_TYPE="0"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}$var_disk${CL}${DGN}GB${CL}"
-        DISK_SIZE="$var_disk"
-        echo -e "${DGN}Using ${BGN}$var_cpu${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="$var_cpu"
-        echo -e "${DGN}Using ${BGN}$var_ram${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="$var_ram"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Unprivileged, or Press [ENTER] for Default: Privileged"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Privileged" CT_TYPE="0"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Unprivileged"
-        CT_TYPE="1"
-        echo -en "${DGN}Set CT Type ${BL}Unprivileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: $var_disk "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="$var_disk"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: $var_cpu "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="$var_cpu"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: $var_ram "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="$var_ram"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-export CTID=$CT_ID
-export PCT_OSTYPE=$var_os
-export PCT_OSVERSION=$var_version
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-lxc.cgroup2.devices.allow: c 188:* rwm
-lxc.cgroup2.devices.allow: c 189:* rwm
-lxc.mount.entry: /dev/serial/by-id  dev/serial/by-id  none bind,optional,create=dir
-lxc.mount.entry: /dev/ttyUSB0       dev/ttyUSB0       none bind,optional,create=file
-lxc.mount.entry: /dev/ttyACM0       dev/ttyACM0       none bind,optional,create=file
-lxc.mount.entry: /dev/ttyACM1       dev/ttyACM1       none bind,optional,create=file
-EOF
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}${CL} \n"

+ 1 - 1
ct/deconz-v4.sh

@@ -324,7 +324,7 @@ fi
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 312
ct/docker-v2.sh

@@ -1,312 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New Docker LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  _____             _             
- |  __ \           | |            
- | |  | | ___   ___| | _____ _ __ 
- | |  | |/ _ \ / __| |/ / _ \  __|
- | |__| | (_) | (__|   <  __/ |   
- |_____/ \___/ \___|_|\_\___|_|   
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${RD} If Using ZFS, You Have Storage Driver Options${CL}\n"
-    printf "    ${RD} Non ZFS, Select Standard overlay2 Storage Driver${CL}\n"
-    printf "    ${YW} 1)${GN} Use fuse-overlayfs Storage Driver${CL}\n"
-    printf "    ${YW} 2)${GN} Use Standard overlay2 Storage Driver${CL}\n"
-
-    printf "Please choose a Storage Driver and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using fuse-overlayfs Storage Driver";
-            STORAGE_DRIVER="fuse"
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using overlay2 Storage Driver";
-            STORAGE_DRIVER=" "
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Storage Driver from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-show_menu4(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message4=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-    printf " ${YW}${message4}${CL}\n"
-}
-show_menu4
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu4;
-        ;;
-      esac
-  done
-  
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ] && [ "$STORAGE_DRIVER" == " " ]; then 
- FEATURES="nesting=1,keyctl=1"
- elif
- [ "$IM" == "1" ] && [ "$STORAGE_DRIVER" == "fuse" ]; then 
- FEATURES="nesting=1,keyctl=1,fuse=1"
- elif
- [ "$IM" == "0" ] && [ "$STORAGE_DRIVER" == "fuse" ]; then 
- FEATURES="nesting=1,fuse=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=4
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname docker
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 2
-  -memory 2048
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  wget -qL -O fuse-overlayfs https://github.com/containers/fuse-overlayfs/releases/download/v1.8.2/fuse-overlayfs-x86_64
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-fi
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
- if [ "$STORAGE_TYPE" == "zfspool" ] && [ "$STORAGE_DRIVER" == "fuse" ]; then
-   pct push $CTID fuse-overlayfs /usr/local/bin/fuse-overlayfs -perms 755
-   info "Using ${BL}fuse-overlayfs${CL} Storage Driver."
-   else
-   info "Using ${BL}overlay2${CL} Storage Driver."
- fi
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/docker-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created Docker LXC to${CL} ${BL}$CTID${CL}. \n"

+ 0 - 361
ct/docker-v3.sh

@@ -1,361 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Docker"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  _____             _             
- |  __ \           | |            
- | |  | | ___   ___| | _____ _ __ 
- | |v3| |/ _ \ / __| |/ / _ \  __|
- | |__| | (_) | (__|   <  __/ |   
- |_____/ \___/ \___|_|\_\___|_|   
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}4${CL}${DGN}GB${CL}"
-        DISK_SIZE="4"
-        echo -e "${DGN}Using ${BGN}2${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="2"
-        echo -e "${DGN}Using ${BGN}2048${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="2048"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 4 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="4"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 2 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="2"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 2048 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="2048"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-PVE_CHECK
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/docker-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"

+ 1 - 1
ct/docker-v4.sh

@@ -336,7 +336,7 @@ fi
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/emby-v4.sh

@@ -331,7 +331,7 @@ fi
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/emqx-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 188
ct/esphome-v1.sh

@@ -1,188 +0,0 @@
-#!/usr/bin/env bash
-
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-
-while true; do
-    read -p "This will create a New ESPHome LXC Container. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${CL}
-  ______  _____ _____  _    _  ____  __  __ ______ 
- |  ____|/ ____|  __ \| |  | |/ __ \|  \/  |  ____|
- | |__  | (___ | |__) | |__| | |  | | \  / | |__   
- |  __|  \___ \|  ___/|  __  | |  | | |\/| |  __|  
- | |____ ____) | |    | |  | | |__| | |  | | |____ 
- |______|_____/|_|    |_|  |_|\____/|_|  |_|______|
-                                                                                                                                                                           
-${CL}"
-}
-
-header_info
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-CHECKMARK='\033[0;32m\xE2\x9C\x94\033[0m'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if [ ! -z ${MOUNT+x} ]; then
-    pct unmount $CTID
-  fi
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
-function load_module() {
-  if ! $(lsmod | grep -Fq $1); then
-    modprobe $1 &>/dev/null || \
-      die "Failed to load '$1' module."
-  fi
-  MODULES_PATH=/etc/modules
-  if ! $(grep -Fxq "$1" $MODULES_PATH); then
-    echo "$1" >> $MODULES_PATH || \
-      die "Failed to add '$1' module to load at boot."
-  fi
-}
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-wget -qL https://raw.githubusercontent.com/tteck/Proxmox/main/setup/esphome_setup.sh
-
-load_module overlay
-
-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 rootdir | awk 'NR>1')
-if [ $((${#STORAGE_MENU[@]}/3)) -eq 0 ]; then
-  warn "'Container' needs to be selected for at least one storage location."
-  die "Unable to detect valid storage location."
-elif [ $((${#STORAGE_MENU[@]}/3)) -eq 1 ]; then
-  STORAGE=${STORAGE_MENU[0]}
-else
-  while [ -z "${STORAGE:+x}" ]; do
-    STORAGE=$(whiptail --title "Storage Pools" --radiolist \
-    "Which storage pool you would like to use for the container?\n\n" \
-    16 $(($MSG_MAX_LENGTH + 23)) 6 \
-    "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
-  done
-fi
-info "Using ${BL}$STORAGE${CL} for storage location."
-
-CTID=$(pvesh get /cluster/nextid)
-info "Container ID is ${BL}$CTID.${CL}"
-
-echo -en "${GN} Updating LXC Template List... "
-pveam update >/dev/null
-echo -e "${CM}${CL} \r"
-
-echo -en "${GN} Downloading LXC Template... "
-OSTYPE=debian
-OSVERSION=${OSTYPE}-11
-mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($OSVERSION.*\)/\1/p" | sort -t - -k 2 -V)
-TEMPLATE="${TEMPLATES[-1]}"
-pveam download local $TEMPLATE >/dev/null ||
-  die "A problem occured while downloading the LXC template."
-
-STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
-case $STORAGE_TYPE in
-  dir|nfs)
-    DISK_EXT=".raw"
-    DISK_REF="$CTID/"
-    ;;
-  zfspool)
-    DISK_PREFIX="subvol"
-    DISK_FORMAT="subvol"
-    ;;
-esac
-DISK=${DISK_PREFIX:-vm}-${CTID}-disk-0${DISK_EXT-}
-ROOTFS=${STORAGE}:${DISK_REF-}${DISK}
-echo -e "${CM}${CL} \r"
-
-echo -en "${GN} Creating LXC Container... "
-DISK_SIZE=4G
-pvesm alloc $STORAGE $CTID $DISK $DISK_SIZE --format ${DISK_FORMAT:-raw} >/dev/null
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-else
-  mkfs.ext4 $(pvesm path $ROOTFS) &>/dev/null
-fi
-ARCH=$(dpkg --print-architecture)
-HOSTNAME=esphome
-TEMPLATE_STRING="local:vztmpl/${TEMPLATE}"
-pct create $CTID $TEMPLATE_STRING -arch $ARCH -features nesting=1 \
-  -hostname $HOSTNAME -net0 name=eth0,bridge=vmbr0,ip=dhcp -onboot 1 -cores 2 -memory 1024 \
-  -ostype $OSTYPE -rootfs $ROOTFS,size=$DISK_SIZE -storage $STORAGE >/dev/null
-
-MOUNT=$(pct mount $CTID | cut -d"'" -f 2)
-ln -fs $(readlink /etc/localtime) ${MOUNT}/etc/localtime
-pct unmount $CTID && unset MOUNT
-echo -e "${CM}${CL} \r"
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-pct push $CTID esphome_setup.sh /esphome_setup.sh -perms 755
-echo -e "${CM}${CL} \r"
-pct exec $CTID /esphome_setup.sh
-
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-info "Successfully created ESPHome LXC Container to ${BL}$CTID${CL}"
-echo -e "${CL} ESPHome should be reachable by going to the following URL.
-                  ${BL}http://${IP}:6052${CL}
-\n"

+ 0 - 259
ct/esphome-v2.sh

@@ -1,259 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-APP="ESPHome"
-HN=$(echo ${APP,,} | tr -d ' ')
-while true; do
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-  ______  _____ _____  _    _  ____  __  __ ______ 
- |  ____|/ ____|  __ \| |  | |/ __ \|  \/  |  ____|
- | |__  | (___ | |__) | |__| | |  | | \  / | |__   
- |  __|  \___ \|  ___/|  __  | |  | | |\/| |  __|  
- | |____ ____) | |    | |  | | |__| | |  | | |____ 
- |______|_____/|_|    |_|  |_|\____/|_|  |_|______|
-
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=4
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 2
-  -memory 1024
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$HN-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created ${APP} LXC to${CL} ${BL}$CTID${CL}.
-${BL}${APP}${CL} should be reachable by going to the following URL.
-         ${BL}http://${IP}:6052${CL} \n"

+ 0 - 357
ct/esphome-v3.sh

@@ -1,357 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="ESPHome"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-  ______  _____ _____  _    _  ____  __  __ ______ 
- |  ____|/ ____|  __ \| |  | |/ __ \|  \/  |  ____|
- | |__  | (___ | |__) | |__| | |  | | \  / | |__   
- |  __|  \___ \|  ___/|  __  | |  | | |\/| |  __|  
- | |____ ____) | |    | |  | | |__| | |  | | |____ 
- |______|_____/|_| v3 |_|  |_|\____/|_|  |_|______|
-
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}4${CL}${DGN}GB${CL}"
-        DISK_SIZE="4"
-        echo -e "${DGN}Using ${BGN}2${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="2"
-        echo -e "${DGN}Using ${BGN}1024${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="1024"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 4 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="4"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 2 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="2"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 1024 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="1024"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/esphome-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:6052${CL} \n"

+ 1 - 1
ct/esphome-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 252
ct/grafana-v2.sh

@@ -1,252 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New Grafana LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${YW}
-   _____            __                  
-  / ____|          / _|                 
- | |  __ _ __ __ _| |_ __ _ _ __   __ _ 
- | | |_ |  __/ _  |  _/ _  |  _ \ / _  |
- | |__| | | | (_| | || (_| | | | | (_| |
-  \_____|_|  \__,_|_| \__,_|_| |_|\__,_|
-
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=2
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname grafana
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 512
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/grafana-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created Grafana LXC to${CL} ${BL}$CTID${CL}.
-${BL}Grafana${CL} should be reachable by going to the following URL.
-         ${BL}http://${IP}:3000${CL} \n"

+ 0 - 356
ct/grafana-v3.sh

@@ -1,356 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Grafana"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${YW}
-   _____            __                  
-  / ____|          / _|                 
- | |  __ _ __ __ _| |_ __ _ _ __   __ _ 
- | | |_ |  __/ _  |  _/ _  |  _ \ / _  |
- | |__| | | | (_| | || (_| | | | | (_| |
-  \_____|_|v3\__,_|_| \__,_|_| |_|\__,_|
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}2${CL}${DGN}GB${CL}"
-        DISK_SIZE="2"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="1"
-        echo -e "${DGN}Using ${BGN}512${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="512"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 2 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="2"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 1 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="1"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 512 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="512"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/grafana-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:3000${CL} \n"

+ 1 - 1
ct/grafana-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 359
ct/grocy-v3.sh

@@ -1,359 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-APP="grocy"
-var_disk="2"
-var_cpu="1"
-var_ram="512"
-var_os="debian"
-var_version="11"
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-var_install="${NSAPP}-install"
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-function msg_info() {
-   local msg="$1"
-   echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-   local msg="$1"
-   echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${YW}                             
-   __ _ _ __ ___   ___ _   _ 
-  / _  |  __/ _ \ / __| | | |
- | (_| | | | (_) | (__| |_| |
-  \__, |_|  \___/ \___|\__, |
-   __/ |     v3         __/ |
-  |___/                |___/ 
-${CL}"
-}
-
-header_info
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}$var_disk${CL}${DGN}GB${CL}"
-        DISK_SIZE="$var_disk"
-        echo -e "${DGN}Using ${BGN}$var_cpu${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="$var_cpu"
-        echo -e "${DGN}Using ${BGN}$var_ram${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="$var_ram"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: $var_disk "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="$var_disk"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: $var_cpu "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="$var_cpu"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: $var_ram "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="$var_ram"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-export CTID=$CT_ID
-export PCT_OSTYPE=$var_os
-export PCT_OSVERSION=$var_version
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}${CL} \n"

+ 1 - 1
ct/grocy-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 259
ct/heimdalldashboard-v2.sh

@@ -1,259 +0,0 @@
-#!/usr/bin/env bash
-PP=`echo "\e[1;35m"`
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-APP="Heimdall Dashboard"
-HN=$(echo ${APP,,} | tr -d ' ')
-while true; do
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${PP}
-  _    _      _               _       _ _   _____            _     _                         _ 
- | |  | |    (_)             | |     | | | |  __ \          | |   | |                       | |
- | |__| | ___ _ _ __ ___   __| | __ _| | | | |  | | __ _ ___| |__ | |__   ___   __ _ _ __ __| |
- |  __  |/ _ \ |  _   _ \ / _  |/ _  | | | | |  | |/ _  / __|  _ \|  _ \ / _ \ / _  |  __/ _  |
- | |  | |  __/ | | | | | | (_| | (_| | | | | |__| | (_| \__ \ | | | |_) | (_) | (_| | | | (_| |
- |_|  |_|\___|_|_| |_| |_|\__,_|\__,_|_|_| |_____/ \__,_|___/_| |_|_.__/ \___/ \__,_|_|  \__,_|
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and press [ENTER] or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and press [ENTER] or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and press [ENTER] or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=2
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 512
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press [ENTER]."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$HN-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created ${APP} LXC to${CL} ${BL}$CTID${CL}. 
-${BL}${APP}${CL} should be reachable by going to the following URL.
-         ${BL}http://${IP}:7990${CL} \n"

+ 0 - 357
ct/heimdalldashboard-v3.sh

@@ -1,357 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-PP=`echo "\e[1;35m"`
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Heimdall Dashboard"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${PP}
-  _    _      _               _       _ _   _____            _     _                         _ 
- | |  | |    (_)             | |     | | | |  __ \          | |   | |                       | |
- | |__| | ___ _ _ __ ___   __| | __v3| | | | |  | | __ _ ___| |__ | |__   ___   __ _ _ __ __| |
- |  __  |/ _ \ |  _   _ \ / _  |/ _  | | | | |  | |/ _  / __|  _ \|  _ \ / _ \ / _  |  __/ _  |
- | |  | |  __/ | | | | | | (_| | (_| | | | | |__| | (_| \__ \ | | | |_) | (_) | (_| | | | (_| |
- |_|  |_|\___|_|_| |_| |_|\__,_|\__,_|_|_| |_____/ \__,_|___/_| |_|_.__/ \___/ \__,_|_|  \__,_|
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}2${CL}${DGN}GB${CL}"
-        DISK_SIZE="2"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="1"
-        echo -e "${DGN}Using ${BGN}512${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="512"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 2 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="2"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 1 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="1"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 512 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="512"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/heimdalldashboard-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:7990${CL} \n"

+ 1 - 1
ct/heimdalldashboard-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/homeassistant-core-v4.sh

@@ -324,7 +324,7 @@ fi
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 176
ct/homeassistant-v1.sh

@@ -1,176 +0,0 @@
-#!/usr/bin/env bash
-
-while true; do
-    read -p "This will create a New Home Assistant Container LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-set -o errexit 
-set -o errtrace 
-set -o nounset 
-set -o pipefail 
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-CHECKMARK='\033[0;32m\xE2\x9C\x94\033[0m'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if [ ! -z ${MOUNT+x} ]; then
-    pct unmount $CTID
-  fi
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
-function load_module() {
-  if ! $(lsmod | grep -Fq $1); then
-    modprobe $1 &>/dev/null || \
-      die "Failed to load '$1' module."
-  fi
-  MODULES_PATH=/etc/modules
-  if ! $(grep -Fxq "$1" $MODULES_PATH); then
-    echo "$1" >> $MODULES_PATH || \
-      die "Failed to add '$1' module to load at boot."
-  fi
-}
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-wget -qL https://raw.githubusercontent.com/tteck/Proxmox/main/setup/ha_setup.sh
-
-load_module overlay
-
-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 rootdir | awk 'NR>1')
-if [ $((${#STORAGE_MENU[@]}/3)) -eq 0 ]; then
-  warn "'Container' needs to be selected for at least one storage location."
-  die "Unable to detect valid storage location."
-elif [ $((${#STORAGE_MENU[@]}/3)) -eq 1 ]; then
-  STORAGE=${STORAGE_MENU[0]}
-else
-  while [ -z "${STORAGE:+x}" ]; do
-    STORAGE=$(whiptail --title "Storage Pools" --radiolist \
-    "Which storage pool you would like to use for the container?\n\n" \
-    16 $(($MSG_MAX_LENGTH + 23)) 6 \
-    "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
-  done
-fi
-info "Using '$STORAGE' for storage location."
-CTID=$(pvesh get /cluster/nextid)
-info "Container ID is $CTID."
-
-echo -e "${CHECKMARK} \e[1;92m Updating LXC Template List... \e[0m"
-pveam update >/dev/null
-echo -e "${CHECKMARK} \e[1;92m Downloading LXC Template... \e[0m"
-OSTYPE=debian
-OSVERSION=${OSTYPE}-11
-mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($OSVERSION.*\)/\1/p" | sort -t - -k 2 -V)
-TEMPLATE="${TEMPLATES[-1]}"
-pveam download local $TEMPLATE >/dev/null ||
-  die "A problem occured while downloading the LXC template."
-
-STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
-case $STORAGE_TYPE in
-  dir|nfs)
-    DISK_EXT=".raw"
-    DISK_REF="$CTID/"
-    ;;
-  zfspool)
-    DISK_PREFIX="subvol"
-    DISK_FORMAT="subvol"
-    ;;
-esac
-DISK=${DISK_PREFIX:-vm}-${CTID}-disk-0${DISK_EXT-}
-ROOTFS=${STORAGE}:${DISK_REF-}${DISK}
-
-echo -e "${CHECKMARK} \e[1;92m Creating LXC Container... \e[0m"
-DISK_SIZE=8G
-pvesm alloc $STORAGE $CTID $DISK $DISK_SIZE --format ${DISK_FORMAT:-raw} >/dev/null
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  wget -qL -O fuse-overlayfs https://github.com/containers/fuse-overlayfs/releases/download/v1.8.2/fuse-overlayfs-x86_64
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-else
-  mkfs.ext4 $(pvesm path $ROOTFS) &>/dev/null
-fi
-  ARCH=$(dpkg --print-architecture)
-HOSTNAME=homeassistant
-TEMPLATE_STRING="local:vztmpl/${TEMPLATE}"
-if [ "$STORAGE_TYPE" == "zfspool" ]; then  
-  CT_FEATURES="fuse=1,keyctl=1,mknod=1,nesting=1"
-else
-  CT_FEATURES="nesting=1"
-fi
-pct create $CTID $TEMPLATE_STRING -arch $ARCH -features $CT_FEATURES \
-  -hostname $HOSTNAME -net0 name=eth0,bridge=vmbr0,ip=dhcp -onboot 1 -cores 2 -memory 2048 \
-  -ostype $OSTYPE -rootfs $ROOTFS,size=$DISK_SIZE -storage $STORAGE >/dev/null
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-
-MOUNT=$(pct mount $CTID | cut -d"'" -f 2)
-ln -fs $(readlink /etc/localtime) ${MOUNT}/etc/localtime
-pct unmount $CTID && unset MOUNT
-
-echo -e "${CHECKMARK} \e[1;92m Starting LXC Container... \e[0m"
-pct start $CTID
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-pct push $CTID fuse-overlayfs /usr/local/bin/fuse-overlayfs -perms 755
-info "Using fuse-overlayfs."
-fi
-pct push $CTID ha_setup.sh /ha_setup.sh -perms 755
-pct exec $CTID /ha_setup.sh
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-info "Successfully Created Home Assistant Container LXC to $CTID."
-msg "
-
-Home Assistant should be reachable by going to the following URL.
-
-      http://${IP}:8123
-"

+ 0 - 316
ct/homeassistant-v2.sh

@@ -1,316 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[94m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New Home Assistant Container LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  _                                        _     _              _   
- | |                                      (_)   | |            | |  
- | |__   ___  _ __ ___   ___  __ _ ___ ___ _ ___| |_ __ _ _ __ | |_ 
- |  _ \ / _ \|  _   _ \ / _ \/ _  / __/ __| / __| __/ _  |  _ \| __|
- | | | | (_) | | | | | |  __/ (_| \__ \__ \ \__ \ || (_| | | | | |_ 
- |_| |_|\___/|_| |_| |_|\___|\__,_|___/___/_|___/\__\__,_|_| |_|\__|
-                                                 
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${RD} If Using ZFS, You Have Storage Driver Options${CL}\n"
-    printf "    ${RD} Non ZFS, Select Standard overlay2 Storage Driver${CL}\n"
-    printf "    ${YW} 1)${GN} Use fuse-overlayfs Storage Driver${CL}\n"
-    printf "    ${YW} 2)${GN} Use Standard overlay2 Storage Driver${CL}\n"
-
-    printf "Please choose a Storage Driver and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using fuse-overlayfs Storage Driver";
-            STORAGE_DRIVER="fuse"
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using overlay2 Storage Driver";
-            STORAGE_DRIVER=" "
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Storage Driver from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-show_menu4(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message4=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-    printf " ${YW}${message4}${CL}\n"
-}
-show_menu4
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu4;
-        ;;
-      esac
-  done
-   
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ] && [ "$STORAGE_DRIVER" == " " ]; then 
- FEATURES="nesting=1,keyctl=1"
- elif
- [ "$IM" == "1" ] && [ "$STORAGE_DRIVER" == "fuse" ]; then 
- FEATURES="nesting=1,keyctl=1,fuse=1"
- elif
- [ "$IM" == "0" ] && [ "$STORAGE_DRIVER" == "fuse" ]; then 
- FEATURES="nesting=1,fuse=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=16
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname homeassistant
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 2
-  -memory 2048
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  wget -qL -O fuse-overlayfs https://github.com/containers/fuse-overlayfs/releases/download/v1.8.2/fuse-overlayfs-x86_64
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-fi
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
- if [ "$STORAGE_TYPE" == "zfspool" ] && [ "$STORAGE_DRIVER" == "fuse" ]; then
-   pct push $CTID fuse-overlayfs /usr/local/bin/fuse-overlayfs -perms 755
-   info "Using ${BL}fuse-overlayfs${CL} Storage Driver."
-   else
-   info "Using ${BL}overlay2${CL} Storage Driver."
- fi
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/homeassistant-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created Home Assistant Container LXC to${CL} ${BL}$CTID${CL}.
-${BL}Home Assistant${CL} should be reachable by going to the following URL.
-
-         ${BL}http://${IP}:8123${CL} \n"

+ 0 - 365
ct/homeassistant-v3.sh

@@ -1,365 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Home Assistant"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  _                                        _     _              _   
- | |   ${YW}v3${CL}${BL}                                 (_)   | |            | |  
- | |__   ___  _ __ ___   ___  __ _ ___ ___ _ ___| |_ __ _ _ __ | |_ 
- |  _ \ / _ \|  _   _ \ / _ \/ _  / __/ __| / __| __/ _  |  _ \| __|
- | | | | (_) | | | | | |  __/ (_| \__ \__ \ \__ \ || (_| | | | | |_ 
- |_| |_|\___/|_| |_| |_|\___|\__,_|___/___/_|___/\__\__,_|_| |_|\__|
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}16${CL}${DGN}GB${CL}"
-        DISK_SIZE="16"
-        echo -e "${DGN}Using ${BGN}2${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="2"
-        echo -e "${DGN}Using ${BGN}2048${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="2048"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 16 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="16"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 2 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="2"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 2048 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="2048"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-PVE_CHECK
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/homeassistant-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:8123${CL}
-Portainer should be reachable by going to the following URL.
-         ${BL}http://${IP}:9000${CL}\n"

+ 1 - 1
ct/homeassistant-v4.sh

@@ -336,7 +336,7 @@ fi
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 251
ct/homebridge-v2.sh

@@ -1,251 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New Homebridge LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${YW}
-  _    _  ____  __  __ ______ ____  _____  _____ _____   _____ ______ 
- | |  | |/ __ \|  \/  |  ____|  _ \|  __ \|_   _|  __ \ / ____|  ____|
- | |__| | |  | | \  / | |__  | |_) | |__) | | | | |  | | |  __| |__   
- |  __  | |  | | |\/| |  __| |  _ <|  _  /  | | | |  | | | |_ |  __|  
- | |  | | |__| | |  | | |____| |_) | | \ \ _| |_| |__| | |__| | |____ 
- |_|  |_|\____/|_|  |_|______|____/|_|  \_\_____|_____/ \_____|______|
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=4
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname homebridge
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 1024
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/homebridge-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created Homebridge LXC to${CL} ${BL}$CTID${CL}.
-${BL}Homebridge${CL} should be reachable by going to the following URL.
-         ${BL}http://${IP}:8581${CL} \n"

+ 0 - 356
ct/homebridge-v3.sh

@@ -1,356 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Homebridge"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${YW}
-  _    _  ____  __  __ ______ ____  _____  _____ _____   _____ ______ 
- | |  | |/ __ \|  \/  |  ____|  _ \|  __ \|_   _|  __ \ / ____|  ____|
- | |__| | |  | | \  / | |__  | |_) | |__) | | | | |  | | |  __| |__   
- |  __  | |  | | |\/| |  __| |  _ <|  _  /  | | | |  | | | |_ |  __|  
- | |  | | |__| | |  | | |____| |_) | | \ \ _| |_| |__| | |__| | |____ 
- |_|v3|_|\____/|_|  |_|______|____/|_|  \_\_____|_____/ \_____|______|
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}4${CL}${DGN}GB${CL}"
-        DISK_SIZE="4"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="1"
-        echo -e "${DGN}Using ${BGN}1024${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="1024"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 4 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="4"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 1 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="1"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 1024 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="1024"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/homebridge-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "Homebridge should be reachable by going to the following URL.
-         ${BL}http://${IP}:8581${CL} \n"

+ 1 - 1
ct/homebridge-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/homepage-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/hyperion-v4.sh

@@ -325,7 +325,7 @@ fi
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 250
ct/influxdb-v2.sh

@@ -1,250 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New InfluxDB LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${YW}
-  _____        __ _            _____  ____  
- |_   _|      / _| |          |  __ \|  _ \ 
-   | |  _ __ | |_| |_   ___  _| |  | | |_) |
-   | | |  _ \|  _| | | | \ \/ / |  | |  _ < 
-  _| |_| | | | | | | |_| |>  <| |__| | |_) |
- |_____|_| |_|_| |_|\__,_/_/\_\_____/|____/ 
-        with Telegraf
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=8
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname influxdb
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 2
-  -memory 2048
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/influxdb-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created InfluxDB LXC to${CL} ${BL}$CTID${CL}. \n"

+ 0 - 355
ct/influxdb-v3.sh

@@ -1,355 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="InfluxDB"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${YW}
-  _____        __ _            _____  ____  
- |_   _|      / _| |          |  __ \|  _ \ 
-   | |  _ __ | |_| |_ v3___  _| |  | | |_) |
-   | | |  _ \|  _| | | | \ \/ / |  | |  _ < 
-  _| |_| | | | | | | |_| |>  <| |__| | |_) |
- |_____|_| |_|_| |_|\__,_/_/\_\_____/|____/ 
-        with Telegraf
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}8${CL}${DGN}GB${CL}"
-        DISK_SIZE="8"
-        echo -e "${DGN}Using ${BGN}2${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="2"
-        echo -e "${DGN}Using ${BGN}2048${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="2048"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 8 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="8"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 2 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="2"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 2048 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="2048"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/influxdb-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"

+ 1 - 1
ct/influxdb-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 356
ct/iobroker-v3.sh

@@ -1,356 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="ioBroker"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  _       ____            _             
- (_)     |  _ \          | |            
-  _  ___ | |_) |_ __ ___ | | _____ _ __ 
- | |/ _ \|  _ <|  __/ _ \| |/ / _ \  __|
- | | (_) | |_) | | | (_) |   <  __/ |   
- |_|\___/|____/|_|v3\___/|_|\_\___|_|   
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}8${CL}${DGN}GB${CL}"
-        DISK_SIZE="8"
-        echo -e "${DGN}Using ${BGN}2${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="2"
-        echo -e "${DGN}Using ${BGN}2048${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="2048"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 8 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="8"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 2 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="2"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 2048 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="2048"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/iobroker-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:8081${CL} \n"

+ 1 - 1
ct/iobroker-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 171
ct/jellyfin-v1.sh

@@ -1,171 +0,0 @@
-#!/usr/bin/env bash
-
-while true; do
-    read -p "This will create a Jellyfin Media Server LXC Container. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-set -o errexit  
-set -o errtrace
-set -o nounset  
-set -o pipefail 
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-CHECKMARK='\033[0;32m\xE2\x9C\x94\033[0m'
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if [ ! -z ${MOUNT+x} ]; then
-    pct unmount $CTID
-  fi
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
-function load_module() {
-  if ! $(lsmod | grep -Fq $1); then
-    modprobe $1 &>/dev/null || \
-      die "Failed to load '$1' module."
-  fi
-  MODULES_PATH=/etc/modules
-  if ! $(grep -Fxq "$1" $MODULES_PATH); then
-    echo "$1" >> $MODULES_PATH || \
-      die "Failed to add '$1' module to load at boot."
-  fi
-}
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-wget -qL https://raw.githubusercontent.com/tteck/Proxmox/main/setup/jellyfin_setup.sh
-
-load_module overlay
-
-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 rootdir | awk 'NR>1')
-if [ $((${#STORAGE_MENU[@]}/3)) -eq 0 ]; then
-  warn "'Container' needs to be selected for at least one storage location."
-  die "Unable to detect valid storage location."
-elif [ $((${#STORAGE_MENU[@]}/3)) -eq 1 ]; then
-  STORAGE=${STORAGE_MENU[0]}
-else
-  while [ -z "${STORAGE:+x}" ]; do
-    STORAGE=$(whiptail --title "Storage Pools" --radiolist \
-    "Which storage pool you would like to use for the container?\n\n" \
-    16 $(($MSG_MAX_LENGTH + 23)) 6 \
-    "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
-  done
-fi
-info "Using '$STORAGE' for Storage Location."
-
-CTID=$(pvesh get /cluster/nextid)
-info "Container ID is $CTID."
-
-echo -e "${CHECKMARK} \e[1;92m Updating LXC Template List... \e[0m"
-pveam update >/dev/null
-echo -e "${CHECKMARK} \e[1;92m Downloading LXC Template... \e[0m"
-OSTYPE=ubuntu
-OSVERSION=${OSTYPE}-20.04
-mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($OSVERSION.*\)/\1/p" | sort -t - -k 2 -V)
-TEMPLATE="${TEMPLATES[-1]}"
-pveam download local $TEMPLATE >/dev/null ||
-  die "A problem occured while downloading the LXC template."
-
-STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
-case $STORAGE_TYPE in
-  dir|nfs)
-    DISK_EXT=".raw"
-    DISK_REF="$CTID/"
-    ;;
-  zfspool)
-    DISK_PREFIX="subvol"
-    DISK_FORMAT="subvol"
-    ;;
-esac
-DISK=${DISK_PREFIX:-vm}-${CTID}-disk-0${DISK_EXT-}
-ROOTFS=${STORAGE}:${DISK_REF-}${DISK}
-
-echo -e "${CHECKMARK} \e[1;92m Creating LXC Container... \e[0m"
-DISK_SIZE=8G
-pvesm alloc $STORAGE $CTID $DISK $DISK_SIZE --format ${DISK_FORMAT:-raw} >/dev/null
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-else
-  mkfs.ext4 $(pvesm path $ROOTFS) &>/dev/null
-fi
-ARCH=$(dpkg --print-architecture)
-HOSTNAME=jellyfin
-TEMPLATE_STRING="local:vztmpl/${TEMPLATE}"
-pct create $CTID $TEMPLATE_STRING -arch $ARCH -features nesting=1 \
-  -hostname $HOSTNAME -net0 name=eth0,bridge=vmbr0,ip=dhcp -onboot 1 -cores 2 -memory 2048\
-  -ostype $OSTYPE -rootfs $ROOTFS,size=$DISK_SIZE -storage $STORAGE >/dev/null
-
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-lxc.cgroup2.devices.allow: c 226:0 rwm
-lxc.cgroup2.devices.allow: c 226:128 rwm
-lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
-lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file
-lxc.mount.entry: /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file
-EOF
-
-MOUNT=$(pct mount $CTID | cut -d"'" -f 2)
-ln -fs $(readlink /etc/localtime) ${MOUNT}/etc/localtime
-pct unmount $CTID && unset MOUNT
-
-echo -e "${CHECKMARK} \e[1;92m Starting LXC Container... \e[0m"
-pct start $CTID
-pct push $CTID jellyfin_setup.sh /jellyfin_setup.sh -perms 755
-pct exec $CTID /jellyfin_setup.sh
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-info "Successfully Created Jellyfin Media Server LXC to $CTID."
-echo -e "\e[1;92m Jellyfin Media Server should be reachable by going to the following URL.
-             http://${IP}:8096
-\e[0m"

+ 0 - 370
ct/jellyfin-v3.sh

@@ -1,370 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Jellyfin"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${DGN}
-       _      _ _        __ _       
-      | |    | | |      / _(_)      
-      | | ___| | |_v3 _| |_ _ _ __  
-  _   | |/ _ \ | | | | |  _| |  _ \ 
- | |__| |  __/ | | |_| | | | | | | |
-  \____/ \___|_|_|\__, |_| |_|_| |_|
-                   __/ |            
-                  |___/             
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Privileged${CL}"
-        CT_TYPE="0"
-	echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-	PW=" "
-	echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-	CT_ID=$NEXTID
-	echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-	HN=$NSAPP
-	echo -e "${DGN}Using Disk Size ${BGN}8${CL}${DGN}GB${CL}"
-	DISK_SIZE="8"
-	echo -e "${DGN}Using ${BGN}2${CL}${DGN}vCPU${CL}"
-	CORE_COUNT="2"
-	echo -e "${DGN}Using ${BGN}2048${CL}${DGN}MiB RAM${CL}"
-	RAM_SIZE="2048"
-	echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-	BRG="vmbr0"
-	echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-	NET=dhcp
-	echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-	GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type ${CROSS}${YW}Unprivileged, or Press [ENTER] for Default: Privileged"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Privileged" CT_TYPE="0"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Unprivileged"
-        CT_TYPE="1"
-        echo -en "${DGN}Set CT Type ${BL}Unprivileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 8 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="8"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 2 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="2"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 2048 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="2048"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-PVE_CHECK
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=ubuntu
-export PCT_OSVERSION=20.04
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: c 226:0 rwm
-lxc.cgroup2.devices.allow: c 226:128 rwm
-lxc.cgroup2.devices.allow: c 29:0 rwm
-lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file
-lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
-lxc.mount.entry: /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file
-EOF
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/jellyfin-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "Jellyfin Media Server should be reachable by going to the following URL.
-             ${BL}http://${IP}:8096${CL}\n"

+ 1 - 1
ct/jellyfin-v4.sh

@@ -331,7 +331,7 @@ fi
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/k0s-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 360
ct/keycloak-v3.sh

@@ -1,360 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-APP="Keycloak"
-var_disk="4"
-var_cpu="2"
-var_ram="2048"
-var_os="debian"
-var_version="11"
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-var_install="${NSAPP}-install"
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-function msg_info() {
-   local msg="$1"
-   echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-   local msg="$1"
-   echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-
-  _  __________     _______ _      ____          _  __
- | |/ /  ____\ \   / / ____| |    / __ \   /\   | |/ /
- | ' /| |__   \ \_/ / |    | |   | |  | | /  \  | ' / 
- |  < |  __|   \   /| | v3 | |   | |  | |/ /\ \ |  <  
- | . \| |____   | | | |____| |___| |__| / ____ \| . \ 
- |_|\_\______|  |_|  \_____|______\____/_/    \_\_|\_\
-${CL}"
-}
-
-header_info
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}$var_disk${CL}${DGN}GB${CL}"
-        DISK_SIZE="$var_disk"
-        echo -e "${DGN}Using ${BGN}$var_cpu${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="$var_cpu"
-        echo -e "${DGN}Using ${BGN}$var_ram${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="$var_ram"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: $var_disk "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="$var_disk"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: $var_cpu "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="$var_cpu"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: $var_ram "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="$var_ram"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-export CTID=$CT_ID
-export PCT_OSTYPE=$var_os
-export PCT_OSVERSION=$var_version
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:8080${CL} \n"

+ 1 - 1
ct/keycloak-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 359
ct/magicmirror-v3.sh

@@ -1,359 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-APP="MagicMirror"
-var_disk="3"
-var_cpu="1"
-var_ram="512"
-var_os="debian"
-var_version="11"
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-var_install="${NSAPP}-install"
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-function msg_info() {
-   local msg="$1"
-   echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-   local msg="$1"
-   echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  __  __          _____ _____ _____ __  __ _____ _____  _____   ____  _____  
- |  \/  |   /\   / ____|_   _/ ____|  \/  |_   _|  __ \|  __ \ / __ \|  __ \ 
- | \  / |  /  \ | |  __  | || |    | \  / | | | | |__) | |__) | |  | | |__) |
- | |\/| | / /\ \| | |_ | | || | v3 | |\/| | | | |  _  /|  _  /| |  | |  _  / 
- | |  | |/ ____ \ |__| |_| || |____| |  | |_| |_| | \ \| | \ \| |__| | | \ \ 
- |_|  |_/_/    \_\_____|_____\_____|_|  |_|_____|_|  \_\_|  \_\ ____/|_|  \_\
-${CL}"
-}
-
-header_info
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}$var_disk${CL}${DGN}GB${CL}"
-        DISK_SIZE="$var_disk"
-        echo -e "${DGN}Using ${BGN}$var_cpu${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="$var_cpu"
-        echo -e "${DGN}Using ${BGN}$var_ram${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="$var_ram"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: $var_disk "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="$var_disk"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: $var_cpu "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="$var_cpu"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: $var_ram "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="$var_ram"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-export CTID=$CT_ID
-export PCT_OSTYPE=$var_os
-export PCT_OSVERSION=$var_version
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:8080${CL} \n"

+ 1 - 1
ct/magicmirror-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 168
ct/mariadb-v1.sh

@@ -1,168 +0,0 @@
-#!/usr/bin/env bash
-
-while true; do
-    read -p "This will create a New Mariadb LXC Container. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-BL=`echo "\033[36m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if [ ! -z ${MOUNT+x} ]; then
-    pct unmount $CTID
-  fi
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
-function load_module() {
-  if ! $(lsmod | grep -Fq $1); then
-    modprobe $1 &>/dev/null || \
-      die "Failed to load '$1' module."
-  fi
-  MODULES_PATH=/etc/modules
-  if ! $(grep -Fxq "$1" $MODULES_PATH); then
-    echo "$1" >> $MODULES_PATH || \
-      die "Failed to add '$1' module to load at boot."
-  fi
-}
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-wget -qL https://raw.githubusercontent.com/tteck/Proxmox/main/setup/mariadb_setup.sh
-
-load_module overlay
-
-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 rootdir | awk 'NR>1')
-if [ $((${#STORAGE_MENU[@]}/3)) -eq 0 ]; then
-  warn "'Container' needs to be selected for at least one storage location."
-  die "Unable to detect valid storage location."
-elif [ $((${#STORAGE_MENU[@]}/3)) -eq 1 ]; then
-  STORAGE=${STORAGE_MENU[0]}
-else
-  while [ -z "${STORAGE:+x}" ]; do
-    STORAGE=$(whiptail --title "Storage Pools" --radiolist \
-    "Which storage pool you would like to use for the container?\n\n" \
-    16 $(($MSG_MAX_LENGTH + 23)) 6 \
-    "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
-  done
-fi
-info "Using ${BL}${STORAGE}${CL} for Storage Location."
-
-CTID=$(pvesh get /cluster/nextid)
-info "Container ID is ${BL}${CTID}${CL}."
-
-echo -en "${GN} Updating LXC Template List... "
-pveam update >/dev/null
-echo -e "${CM}${CL} \r"
-
-echo -en "${GN} Downloading LXC Template... "
-OSTYPE=debian
-OSVERSION=${OSTYPE}-11
-mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($OSVERSION.*\)/\1/p" | sort -t - -k 2 -V)
-TEMPLATE="${TEMPLATES[-1]}"
-pveam download local $TEMPLATE >/dev/null ||
-  die "A problem occured while downloading the LXC template."
-
-STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
-case $STORAGE_TYPE in
-  dir|nfs)
-    DISK_EXT=".raw"
-    DISK_REF="$CTID/"
-    ;;
-  zfspool)
-    DISK_PREFIX="subvol"
-    DISK_FORMAT="subvol"
-    ;;
-esac
-DISK=${DISK_PREFIX:-vm}-${CTID}-disk-0${DISK_EXT-}
-ROOTFS=${STORAGE}:${DISK_REF-}${DISK}
-echo -e "${CM}${CL} \r"
-
-echo -en "${GN} Creating LXC Container... "
-DISK_SIZE=4G
-pvesm alloc $STORAGE $CTID $DISK $DISK_SIZE --format ${DISK_FORMAT:-raw} >/dev/null
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-else
-  mkfs.ext4 $(pvesm path $ROOTFS) &>/dev/null
-fi
-ARCH=$(dpkg --print-architecture)
-HOSTNAME=mariadb
-TEMPLATE_STRING="local:vztmpl/${TEMPLATE}"
-pct create $CTID $TEMPLATE_STRING -arch $ARCH -features nesting=1 \
-  -hostname $HOSTNAME -net0 name=eth0,bridge=vmbr0,ip=dhcp -onboot 1 -cores 1 -memory 1024 \
-  -ostype $OSTYPE -rootfs $ROOTFS,size=$DISK_SIZE -storage $STORAGE >/dev/null
-
-MOUNT=$(pct mount $CTID | cut -d"'" -f 2)
-ln -fs $(readlink /etc/localtime) ${MOUNT}/etc/localtime
-pct unmount $CTID && unset MOUNT
-echo -e "${CM}${CL} \r"
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-pct push $CTID mariadb_setup.sh /mariadb_setup.sh -perms 755
-echo -e "${CM}${CL} \r"
-pct exec $CTID /mariadb_setup.sh
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-info "${GN} Successfully created a MariaDB LXC Container to ${BL}${CTID}${CL}"
-echo -e "${CL} Adminer should be reachable by going to the following URL.
-             ${BL} http://${IP}/adminer/ ${CL}"

+ 0 - 252
ct/mariadb-v2.sh

@@ -1,252 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New Mariadb LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  __  __            _           _ _     
- |  \/  |          (_)         | | |    
- | \  / | __ _ _ __ _  __ _  __| | |__  
- | |\/| |/ _  |  __| |/ _  |/ _  |  _ \ 
- | |  | | (_| | |  | | (_| | (_| | |_) |
- |_|  |_|\__,_|_|  |_|\__,_|\__,_|_.__/ 
-                                                 
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=4
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname mariadb
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 1024
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/mariadb-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created Mariadb LXC to${CL} ${BL}$CTID${CL}. 
-${BL}Adminer${CL} should be reachable by going to the following URL.
-         ${BL}http://${IP}/adminer/${CL} \n"

+ 0 - 356
ct/mariadb-v3.sh

@@ -1,356 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="MariaDB"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  __  __            _           _ _     
- |  \/  |          (_)         | | |    
- | \  / | __ _ _ __ _  __ _  __| | |__  
- | |\/| |/ _  |  __| |/ _  |/ _  |  _ \ 
- | |  | | (_| | |  | | (_| | (_| | |_) |
- |_|  |_|\__,_|_|v3|_|\__,_|\__,_|_.__/ 
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}4${CL}${DGN}GB${CL}"
-        DISK_SIZE="4"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="1"
-        echo -e "${DGN}Using ${BGN}1024${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="1024"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 4 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="4"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 1 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="1"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 1024 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="1024"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/mariadb-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "Adminer should be reachable by going to the following URL.
-         ${BL}http://${IP}/adminer/${CL} \n"

+ 1 - 1
ct/mariadb-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 258
ct/meshcentral-v2.sh

@@ -1,258 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-APP="MeshCentral"
-HN=$(echo ${APP,,} | tr -d ' ')
-while true; do
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  __  __           _      _____           _             _ 
- |  \/  |         | |    / ____|         | |           | |
- | \  / | ___  ___| |__ | |     ___ _ __ | |_ _ __ __ _| |
- | |\/| |/ _ \/ __|  _ \| |    / _ \  _ \| __|  __/ _  | |
- | |  | |  __/\__ \ | | | |___|  __/ | | | |_| | | (_| | |
- |_|  |_|\___||___/_| |_|\_____\___|_| |_|\__|_|  \__,_|_|
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=2
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 512
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some applications may not work properly due to ZFS not supporting 'fallocate'."
-fi
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$HN-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created ${APP} LXC to${CL} ${BL}$CTID${CL}. 
-${APP} should be reachable by going to the following URL.
-      ${BL}http://${IP}${CL} \n"

+ 0 - 356
ct/meshcentral-v3.sh

@@ -1,356 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="MeshCentral"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  __  __           _      _____           _             _ 
- |  \/  |         | |    / ____|         | |           | |
- | \  / | ___  ___| |__ | |     ___ _ __ | |_ _ __ __ _| |
- | |\/| |/ _ \/ __|  _ \| | v3 / _ \  _ \| __|  __/ _  | |
- | |  | |  __/\__ \ | | | |___|  __/ | | | |_| | | (_| | |
- |_|  |_|\___||___/_| |_|\_____\___|_| |_|\__|_|  \__,_|_|
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}2${CL}${DGN}GB${CL}"
-        DISK_SIZE="2"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="1"
-        echo -e "${DGN}Using ${BGN}512${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="512"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 2 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="2"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 1 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="1"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 512 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="512"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/meshcentral-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-      ${BL}http://${IP}${CL} \n"

+ 1 - 1
ct/meshcentral-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 168
ct/motioneye-v1.sh

@@ -1,168 +0,0 @@
-#!/usr/bin/env bash
-
-while true; do
-    read -p "This will create a New MotionEye NVR LXC Container. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-CHECKMARK='\033[0;32m\xE2\x9C\x94\033[0m'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if [ ! -z ${MOUNT+x} ]; then
-    pct unmount $CTID
-  fi
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
-function load_module() {
-  if ! $(lsmod | grep -Fq $1); then
-    modprobe $1 &>/dev/null || \
-      die "Failed to load '$1' module."
-  fi
-  MODULES_PATH=/etc/modules
-  if ! $(grep -Fxq "$1" $MODULES_PATH); then
-    echo "$1" >> $MODULES_PATH || \
-      die "Failed to add '$1' module to load at boot."
-  fi
-}
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-wget -qL https://raw.githubusercontent.com/tteck/Proxmox/main/setup/motioneye_setup.sh
-
-load_module overlay
-
-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 rootdir | awk 'NR>1')
-if [ $((${#STORAGE_MENU[@]}/3)) -eq 0 ]; then
-  warn "'Container' needs to be selected for at least one storage location."
-  die "Unable to detect valid storage location."
-elif [ $((${#STORAGE_MENU[@]}/3)) -eq 1 ]; then
-  STORAGE=${STORAGE_MENU[0]}
-else
-  while [ -z "${STORAGE:+x}" ]; do
-    STORAGE=$(whiptail --title "Storage Pools" --radiolist \
-    "Which storage pool you would like to use for the container?\n\n" \
-    16 $(($MSG_MAX_LENGTH + 23)) 6 \
-    "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
-  done
-fi
-info "Using '$STORAGE' for storage location."
-
-CTID=$(pvesh get /cluster/nextid)
-info "Container ID is $CTID."
-
-echo -e "${CHECKMARK} \e[1;92m Updating LXC Template List... \e[0m"
-pveam update >/dev/null
-
-echo -e "${CHECKMARK} \e[1;92m Downloading LXC Template... \e[0m"
-OSTYPE=debian
-OSVERSION=${OSTYPE}-11
-mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($OSVERSION.*\)/\1/p" | sort -t - -k 2 -V)
-TEMPLATE="${TEMPLATES[-1]}"
-pveam download local $TEMPLATE >/dev/null ||
-  die "A problem occured while downloading the LXC template."
-
-STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
-case $STORAGE_TYPE in
-  dir|nfs)
-    DISK_EXT=".raw"
-    DISK_REF="$CTID/"
-    ;;
-  zfspool)
-    DISK_PREFIX="subvol"
-    DISK_FORMAT="subvol"
-    ;;
-esac
-DISK=${DISK_PREFIX:-vm}-${CTID}-disk-0${DISK_EXT-}
-ROOTFS=${STORAGE}:${DISK_REF-}${DISK}
-
-echo -e "${CHECKMARK} \e[1;92m Creating LXC Container... \e[0m"
-DISK_SIZE=8G
-pvesm alloc $STORAGE $CTID $DISK $DISK_SIZE --format ${DISK_FORMAT:-raw} >/dev/null
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-else
-  mkfs.ext4 $(pvesm path $ROOTFS) &>/dev/null
-fi
-ARCH=$(dpkg --print-architecture)
-HOSTNAME=motioneye
-TEMPLATE_STRING="local:vztmpl/${TEMPLATE}"
-pct create $CTID $TEMPLATE_STRING -arch $ARCH -features nesting=1 \
-  -hostname $HOSTNAME -net0 name=eth0,bridge=vmbr0,ip=dhcp -onboot 1 -cores 2 -memory 2048\
-  -ostype $OSTYPE -rootfs $ROOTFS,size=$DISK_SIZE -storage $STORAGE >/dev/null
-
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-
-MOUNT=$(pct mount $CTID | cut -d"'" -f 2)
-ln -fs $(readlink /etc/localtime) ${MOUNT}/etc/localtime
-pct unmount $CTID && unset MOUNT
-
-echo -e "${CHECKMARK} \e[1;92m Starting LXC Container... \e[0m"
-pct start $CTID
-pct push $CTID motioneye_setup.sh /motioneye_setup.sh -perms 755
-pct exec $CTID /motioneye_setup.sh
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-info "Successfully Created MotionEye LXC to $CTID."
-echo -e "\e[1;92m MotionEye NVR should be reachable by going to the following URL.
-             http://${IP}:8765
-\e[0m"

+ 0 - 258
ct/motioneye-v2.sh

@@ -1,258 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-APP="Motioneye"
-HN=$(echo ${APP,,} | tr -d ' ')
-while true; do
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  __  __  ____ _______ _____ ____  _   _ ________     ________ 
- |  \/  |/ __ \__   __|_   _/ __ \| \ | |  ____\ \   / /  ____|
- | \  / | |  | | | |    | || |  | |  \| | |__   \ \_/ /| |__   
- | |\/| | |  | | | |    | || |  | |     |  __|   \   / |  __|  
- | |  | | |__| | | |   _| || |__| | |\  | |____   | |  | |____ 
- |_|  |_|\____/  |_|  |_____\____/|_| \_|______|  |_|  |______|
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=8
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 2
-  -memory 2048
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$HN-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created ${APP} LXC to${CL} ${BL}$CTID${CL}.
-${BL}${APP}${CL} should be reachable by going to the following URL.
-         ${BL}http://${IP}:8765${CL} \n"

+ 0 - 356
ct/motioneye-v3.sh

@@ -1,356 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Motioneye"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-  __  __  ____ _______ _____ ____  _   _ ________     ________ 
- |  \/  |/ __ \__   __|_   _/ __ \| \ | |  ____\ \   / /  ____|
- | \  / | |  | | | |    | || |  | |  \| | |__   \ \_/ /| |__   
- | |\/| | |  | | | |    | || |  | |     |  __|   \   / |  __|  
- | |  | | |__| | | | v3_| || |__| | |\  | |____   | |  | |____ 
- |_|  |_|\____/  |_|  |_____\____/|_| \_|______|  |_|  |______|
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}8${CL}${DGN}GB${CL}"
-        DISK_SIZE="8"
-        echo -e "${DGN}Using ${BGN}2${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="2"
-        echo -e "${DGN}Using ${BGN}2048${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="2048"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 8 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="8"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 2 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="2"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 2048 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="2048"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/motioneye-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:8765${CL} \n"

+ 1 - 1
ct/motioneye-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 158
ct/mqtt-v1.sh

@@ -1,158 +0,0 @@
-#!/usr/bin/env bash
-
-while true; do
-    read -p "This will create a New MQTT LXC Container. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-CHECKMARK='\033[0;32m\xE2\x9C\x94\033[0m'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if [ ! -z ${MOUNT+x} ]; then
-    pct unmount $CTID
-  fi
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
-function load_module() {
-  if ! $(lsmod | grep -Fq $1); then
-    modprobe $1 &>/dev/null || \
-      die "Failed to load '$1' module."
-  fi
-  MODULES_PATH=/etc/modules
-  if ! $(grep -Fxq "$1" $MODULES_PATH); then
-    echo "$1" >> $MODULES_PATH || \
-      die "Failed to add '$1' module to load at boot."
-  fi
-}
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-wget -qL https://raw.githubusercontent.com/tteck/Proxmox/main/setup/mqtt_setup.sh
-
-load_module overlay
-
-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 rootdir | awk 'NR>1')
-if [ $((${#STORAGE_MENU[@]}/3)) -eq 0 ]; then
-  warn "'Container' needs to be selected for at least one storage location."
-  die "Unable to detect valid storage location."
-elif [ $((${#STORAGE_MENU[@]}/3)) -eq 1 ]; then
-  STORAGE=${STORAGE_MENU[0]}
-else
-  while [ -z "${STORAGE:+x}" ]; do
-    STORAGE=$(whiptail --title "Storage Pools" --radiolist \
-    "Which storage pool you would like to use for the container?\n\n" \
-    16 $(($MSG_MAX_LENGTH + 23)) 6 \
-    "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
-  done
-fi
-info "Using '$STORAGE' for storage location."
-
-CTID=$(pvesh get /cluster/nextid)
-info "Container ID is $CTID."
-
-echo -e "${CHECKMARK} \e[1;92m Updating LXC Template List... \e[0m"
-pveam update >/dev/null
-
-echo -e "${CHECKMARK} \e[1;92m Downloading LXC Template... \e[0m"
-OSTYPE=debian
-OSVERSION=${OSTYPE}-11
-mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($OSVERSION.*\)/\1/p" | sort -t - -k 2 -V)
-TEMPLATE="${TEMPLATES[-1]}"
-pveam download local $TEMPLATE >/dev/null ||
-  die "A problem occured while downloading the LXC template."
-
-STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
-case $STORAGE_TYPE in
-  dir|nfs)
-    DISK_EXT=".raw"
-    DISK_REF="$CTID/"
-    ;;
-  zfspool)
-    DISK_PREFIX="subvol"
-    DISK_FORMAT="subvol"
-    ;;
-esac
-DISK=${DISK_PREFIX:-vm}-${CTID}-disk-0${DISK_EXT-}
-ROOTFS=${STORAGE}:${DISK_REF-}${DISK}
-
-echo -e "${CHECKMARK} \e[1;92m Creating LXC Container... \e[0m"
-DISK_SIZE=2G
-pvesm alloc $STORAGE $CTID $DISK $DISK_SIZE --format ${DISK_FORMAT:-raw} >/dev/null
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-else
-  mkfs.ext4 $(pvesm path $ROOTFS) &>/dev/null
-fi
-ARCH=$(dpkg --print-architecture)
-HOSTNAME=mqtt
-TEMPLATE_STRING="local:vztmpl/${TEMPLATE}"
-pct create $CTID $TEMPLATE_STRING -arch $ARCH -features nesting=1 \
-  -hostname $HOSTNAME -net0 name=eth0,bridge=vmbr0,ip=dhcp -onboot 1 -cores 1 -memory 512 \
-  -ostype $OSTYPE -rootfs $ROOTFS,size=$DISK_SIZE -storage $STORAGE >/dev/null
-
-MOUNT=$(pct mount $CTID | cut -d"'" -f 2)
-ln -fs $(readlink /etc/localtime) ${MOUNT}/etc/localtime
-pct unmount $CTID && unset MOUNT
-
-echo -e "${CHECKMARK} \e[1;92m Starting LXC Container... \e[0m"
-pct start $CTID
-pct push $CTID mqtt_setup.sh /mqtt_setup.sh -perms 755
-pct exec $CTID /mqtt_setup.sh
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-info "Successfully created a MQTT LXC Container to $CTID at IP Address ${IP}"

+ 0 - 250
ct/mqtt-v2.sh

@@ -1,250 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New MQTT LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-     __  __  ____ _______ _______ 
-    |  \/  |/ __ \__   __|__   __|
-    | \  / | |  | | | |     | |   
-    | |\/| | |  | | | |     | |   
-    | |  | | |__| | | |     | |   
-    |_|  |_|\___\_\ |_|     |_|   
-                                                                                                                        
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=2
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname mqtt
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 512
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/mqtt-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created MQTT LXC to${CL} ${BL}$CTID${CL}. \n"

+ 0 - 354
ct/mqtt-v3.sh

@@ -1,354 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="MQTT"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-     __  __  ____ _______ _______ 
-    |  \/  |/ __ \__   __|__   __|
-    | \  / | |  | | | |     | |   
-    | |\/| | |  | | | |     | |   
-    | |  | | |__| | | |     | |   
-    |_|  |_|\___\_\ |_| v3  |_|   
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}2${CL}${DGN}GB${CL}"
-        DISK_SIZE="2"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="1"
-        echo -e "${DGN}Using ${BGN}512${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="512"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 2 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="2"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 1 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="1"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 512 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="512"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/mqtt-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"

+ 1 - 1
ct/mqtt-v4.sh

@@ -285,7 +285,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 356
ct/n8n-v3.sh

@@ -1,356 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="n8n"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-         ___        
-        / _ \       
-  _ __ | (_) |_v3_  
- |  _ \ > _ <|  _ \ 
- | | | | (_) | | | |
- |_| |_|\___/|_| |_|
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}3${CL}${DGN}GB${CL}"
-        DISK_SIZE="3"
-        echo -e "${DGN}Using ${BGN}2${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="2"
-        echo -e "${DGN}Using ${BGN}2048${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="2048"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1";
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" ";
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 3 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="3"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 2 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="2"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 2048 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="2048"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE="";
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN="";
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings;
-		else
-		advanced_settings
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/n8n-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:5678${CL} \n"

+ 1 - 1
ct/n8n-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/navidrome-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/nextcloudpi-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 162
ct/nginx-proxy-manager-v1.sh

@@ -1,162 +0,0 @@
-#!/usr/bin/env bash
-
-#!/usr/bin/env bash
-while true; do
-    read -p "This will create a New Nginx Proxy Manager LXC Container. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-
-set -o errexit  
-set -o errtrace 
-set -o nounset  
-set -o pipefail 
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-CHECKMARK='\033[0;32m\xE2\x9C\x94\033[0m'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if [ ! -z ${MOUNT+x} ]; then
-    pct unmount $CTID
-  fi
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
-function load_module() {
-  if ! $(lsmod | grep -Fq $1); then
-    modprobe $1 &>/dev/null || \
-      die "Failed to load '$1' module."
-  fi
-  MODULES_PATH=/etc/modules
-  if ! $(grep -Fxq "$1" $MODULES_PATH); then
-    echo "$1" >> $MODULES_PATH || \
-      die "Failed to add '$1' module to load at boot."
-  fi
-}
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-wget -qL https://raw.githubusercontent.com/tteck/Proxmox/main/setup/npm_setup.sh
-
-load_module overlay
-
-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 rootdir | awk 'NR>1')
-if [ $((${#STORAGE_MENU[@]}/3)) -eq 0 ]; then
-  warn "'Container' needs to be selected for at least one storage location."
-  die "Unable to detect valid storage location."
-elif [ $((${#STORAGE_MENU[@]}/3)) -eq 1 ]; then
-  STORAGE=${STORAGE_MENU[0]}
-else
-  while [ -z "${STORAGE:+x}" ]; do
-    STORAGE=$(whiptail --title "Storage Pools" --radiolist \
-    "Which storage pool you would like to use for the container?\n\n" \
-    16 $(($MSG_MAX_LENGTH + 23)) 6 \
-    "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
-  done
-fi
-info "Using '$STORAGE' for storage location."
-
-CTID=$(pvesh get /cluster/nextid)
-info "LXC ID is $CTID."
-
-echo -e "${CHECKMARK} \e[1;92m Updating LXC Template List... \e[0m"
-pveam update >/dev/null
-echo -e "${CHECKMARK} \e[1;92m Downloading LXC Template... \e[0m"
-OSTYPE=debian
-OSVERSION=${OSTYPE}-11
-mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($OSVERSION.*\)/\1/p" | sort -t - -k 2 -V)
-TEMPLATE="${TEMPLATES[-1]}"
-pveam download local $TEMPLATE >/dev/null ||
-  die "A problem occured while downloading the LXC template."
-
-STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
-case $STORAGE_TYPE in
-  dir|nfs)
-    DISK_EXT=".raw"
-    DISK_REF="$CTID/"
-    ;;
-  zfspool)
-    DISK_PREFIX="subvol"
-    DISK_FORMAT="subvol"
-    ;;
-esac
-DISK=${DISK_PREFIX:-vm}-${CTID}-disk-0${DISK_EXT-}
-ROOTFS=${STORAGE}:${DISK_REF-}${DISK}
-
-echo -e "${CHECKMARK} \e[1;92m Creating LXC... \e[0m"
-DISK_SIZE=3G
-pvesm alloc $STORAGE $CTID $DISK $DISK_SIZE --format ${DISK_FORMAT:-raw} >/dev/null
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-else
-  mkfs.ext4 $(pvesm path $ROOTFS) &>/dev/null
-fi
-ARCH=$(dpkg --print-architecture)
-HOSTNAME=npm
-TEMPLATE_STRING="local:vztmpl/${TEMPLATE}"
-pct create $CTID $TEMPLATE_STRING -arch $ARCH -features nesting=1 \
-  -hostname $HOSTNAME -net0 name=eth0,bridge=vmbr0,ip=dhcp -onboot 1 -cores 1 -memory 1024 \
-  -ostype $OSTYPE -rootfs $ROOTFS,size=$DISK_SIZE -storage $STORAGE >/dev/null
-
-MOUNT=$(pct mount $CTID | cut -d"'" -f 2)
-ln -fs $(readlink /etc/localtime) ${MOUNT}/etc/localtime
-pct unmount $CTID && unset MOUNT
-
-echo -e "${CHECKMARK} \e[1;92m Starting LXC... \e[0m"
-pct start $CTID
-pct push $CTID npm_setup.sh /npm_setup.sh -perms 755
-pct exec $CTID /npm_setup.sh
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-info "Successfully Created Nginx Proxy Manager LXC to $CTID."
-echo -e "\e[1;92m Nginx Proxy Manager should be reachable by going to the following URL.
-             http://${IP}:81
-\e[0m"

+ 0 - 251
ct/nginx-proxy-manager-v2.sh

@@ -1,251 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New Nginx Proxy Manager LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-        _   _ _____  __  __ 
-       | \ | |  __ \|  \/  |
-       |  \| | |__) | \  / |
-       |     |  ___/| |\/| |
-       | |\  | |    | |  | |
-       |_| \_|_|    |_|  |_|
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=3
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname npm
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 1024
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/nginx-proxy-manager-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created Nginx Proxy Manager LXC to${CL} ${BL}$CTID${CL}.
-Nginx Proxy Manager should be reachable by going to the following URL.
-         ${BL}http://${IP}:81${CL} \n"

+ 0 - 356
ct/nginx-proxy-manager-v3.sh

@@ -1,356 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Nginx Proxy Manager"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-        _   _ _____  __  __ 
-       | \ | |  __ \|  \/  |
-       |  \| | |__) | \  / |
-       |     |  ___/| |\/| |
-       | |\  | |    | |  | |
-       |_| \_|_| v3 |_|  |_|
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}3${CL}${DGN}GB${CL}"
-        DISK_SIZE="3"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="1"
-        echo -e "${DGN}Using ${BGN}1024${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="1024"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 3 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="3"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 1 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="1"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 1024 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="1024"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/nginx-proxy-manager-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:81${CL} \n"

+ 1 - 1
ct/nginx-proxy-manager-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/nginx-proxy-manager-install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/nginx-proxy-manager-install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 258
ct/nocodb-v2.sh

@@ -1,258 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-APP="NocoDB"
-HN=$(echo ${APP,,} | tr -d ' ')
-while true; do
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${YW}
-  _   _                 _____  ____  
- | \ | |               |  __ \|  _ \ 
- |  \| | ___   ___ ___ | |  | | |_) |
- |     |/ _ \ / __/ _ \| |  | |  _ < 
- | |\  | (_) | (_| (_) | |__| | |_) |
- |_| \_|\___/ \___\___/|_____/|____/ 
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=4
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 1024
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some applications may not work properly due to ZFS not supporting 'fallocate'."
-fi
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$HN-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created ${APP} LXC to${CL} ${BL}$CTID${CL}. 
-${BL}${APP}${CL} should be reachable by going to the following URL.
-         ${BL}http://${IP}:8080/dashboard${CL}\n"

+ 0 - 356
ct/nocodb-v3.sh

@@ -1,356 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="NocoDB"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${YW}
-  _   _                 _____  ____  
- | \ | |               |  __ \|  _ \ 
- |  \| | ___ v3___ ___ | |  | | |_) |
- |     |/ _ \ / __/ _ \| |  | |  _ < 
- | |\  | (_) | (_| (_) | |__| | |_) |
- |_| \_|\___/ \___\___/|_____/|____/ 
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}4${CL}${DGN}GB${CL}"
-        DISK_SIZE="4"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="1"
-        echo -e "${DGN}Using ${BGN}1024${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="1024"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 4 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="4"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 1 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="1"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 1024 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="1024"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/nocodb-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:8080/dashboard${CL}\n"

+ 1 - 1
ct/nocodb-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 161
ct/node-red-v1.sh

@@ -1,161 +0,0 @@
-#!/usr/bin/env bash
-
-while true; do
-    read -p "This will create a New Node-Red LXC Container. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-CHECKMARK='\033[0;32m\xE2\x9C\x94\033[0m'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if [ ! -z ${MOUNT+x} ]; then
-    pct unmount $CTID
-  fi
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
-function load_module() {
-  if ! $(lsmod | grep -Fq $1); then
-    modprobe $1 &>/dev/null || \
-      die "Failed to load '$1' module."
-  fi
-  MODULES_PATH=/etc/modules
-  if ! $(grep -Fxq "$1" $MODULES_PATH); then
-    echo "$1" >> $MODULES_PATH || \
-      die "Failed to add '$1' module to load at boot."
-  fi
-}
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-wget -qL https://raw.githubusercontent.com/tteck/Proxmox/main/setup/node-red_setup.sh
-
-load_module overlay
-
-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 rootdir | awk 'NR>1')
-if [ $((${#STORAGE_MENU[@]}/3)) -eq 0 ]; then
-  warn "'Container' needs to be selected for at least one storage location."
-  die "Unable to detect valid storage location."
-elif [ $((${#STORAGE_MENU[@]}/3)) -eq 1 ]; then
-  STORAGE=${STORAGE_MENU[0]}
-else
-  while [ -z "${STORAGE:+x}" ]; do
-    STORAGE=$(whiptail --title "Storage Pools" --radiolist \
-    "Which storage pool you would like to use for the container?\n\n" \
-    16 $(($MSG_MAX_LENGTH + 23)) 6 \
-    "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
-  done
-fi
-info "Using '$STORAGE' for storage location."
-
-CTID=$(pvesh get /cluster/nextid)
-info "Container ID is $CTID."
-
-echo -e "${CHECKMARK} \e[1;92m Updating LXC Template List... \e[0m"
-pveam update >/dev/null
-echo -e "${CHECKMARK} \e[1;92m Downloading LXC Template... \e[0m"
-OSTYPE=debian
-OSVERSION=${OSTYPE}-11
-mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($OSVERSION.*\)/\1/p" | sort -t - -k 2 -V)
-TEMPLATE="${TEMPLATES[-1]}"
-pveam download local $TEMPLATE >/dev/null ||
-  die "A problem occured while downloading the LXC template."
-
-STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
-case $STORAGE_TYPE in
-  dir|nfs)
-    DISK_EXT=".raw"
-    DISK_REF="$CTID/"
-    ;;
-  zfspool)
-    DISK_PREFIX="subvol"
-    DISK_FORMAT="subvol"
-    ;;
-esac
-DISK=${DISK_PREFIX:-vm}-${CTID}-disk-0${DISK_EXT-}
-ROOTFS=${STORAGE}:${DISK_REF-}${DISK}
-
-echo -e "${CHECKMARK} \e[1;92m Creating LXC Container... \e[0m"
-DISK_SIZE=4G
-pvesm alloc $STORAGE $CTID $DISK $DISK_SIZE --format ${DISK_FORMAT:-raw} >/dev/null
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-else
-  mkfs.ext4 $(pvesm path $ROOTFS) &>/dev/null
-fi
-ARCH=$(dpkg --print-architecture)
-HOSTNAME=nodered
-TEMPLATE_STRING="local:vztmpl/${TEMPLATE}"
-pct create $CTID $TEMPLATE_STRING -arch $ARCH -features nesting=1 \
-  -hostname $HOSTNAME -net0 name=eth0,bridge=vmbr0,ip=dhcp -onboot 1 -cores 1 -memory 1024 \
-  -ostype $OSTYPE -rootfs $ROOTFS,size=$DISK_SIZE -storage $STORAGE >/dev/null
-
-MOUNT=$(pct mount $CTID | cut -d"'" -f 2)
-ln -fs $(readlink /etc/localtime) ${MOUNT}/etc/localtime
-pct unmount $CTID && unset MOUNT
-
-echo -e "${CHECKMARK} \e[1;92m Starting LXC Container... \e[0m"
-pct start $CTID
-pct push $CTID node-red_setup.sh /node-red_setup.sh -perms 755
-pct exec $CTID /node-red_setup.sh
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-info "Successfully Created Node-Red LXC to $CTID."
-echo -e "\e[1;92m Node-Red should be reachable by going to the following URL.
-       http://${IP}:1880
-\e[0m"

+ 0 - 253
ct/node-red-v2.sh

@@ -1,253 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New Node-Red LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-      _   _           _             _____          _ 
-     | \ | |         | |           |  __ \        | |
-     |  \| | ___   __| | ___ ______| |__) |___  __| |
-     |     |/ _ \ / _  |/ _ \______|  _  // _ \/ _  |
-     | |\  | (_) | (_| |  __/      | | \ \  __/ (_| |
-     |_| \_|\___/ \__,_|\___|      |_|  \_\___|\__,_|
-                                                 
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=4
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname node-red
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 1
-  -memory 1024
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/node-red-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created Node-Red LXC to${CL} ${BL}$CTID${CL}.
-${RD}Node-Red${CL} should be reachable by going to the following URL.
-
-         ${BL}http://${IP}:1880${CL} \n"

+ 0 - 356
ct/node-red-v3.sh

@@ -1,356 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Node Red"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${RD}
-      _   _           _             _____          _ 
-     | \ | |         | |           |  __ \        | |
-     |  \| | ___   __| | ___ ______| |__) |___  __| |
-     |     |/ _ \ / _  |/ _ \__v3__|  _  // _ \/ _  |
-     | |\  | (_) | (_| |  __/      | | \ \  __/ (_| |
-     |_| \_|\___/ \__,_|\___|      |_|  \_\___|\__,_|
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}4${CL}${DGN}GB${CL}"
-        DISK_SIZE="4"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="1"
-        echo -e "${DGN}Using ${BGN}1024${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="1024"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 4 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="4"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 1 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="1"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 1024 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="1024"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/node-red-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:1880${CL} \n"

+ 1 - 1
ct/node-red-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 252
ct/omada-v2.sh

@@ -1,252 +0,0 @@
-#!/usr/bin/env bash
-clear
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-while true; do
-    read -p "This will create a New Omada Controller LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-   ____                      _          _____            _             _ _           
-  / __ \                    | |        / ____|          | |           | | |          
- | |  | |_ __ ___   __ _  __| | __ _  | |     ___  _ __ | |_ _ __ ___ | | | ___ _ __ 
- | |  | |  _   _ \ / _  |/ _  |/ _  | | |    / _ \|  _ \| __|  __/ _ \| | |/ _ \  __|
- | |__| | | | | | | (_| | (_| | (_| | | |___| (_) | | | | |_| | | (_) | | |  __/ |   
-  \____/|_| |_| |_|\__,_|\__,_|\__,_|  \_____\___/|_| |_|\__|_|  \___/|_|_|\___|_|   
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose an Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=ubuntu
-export PCT_OSVERSION=20.04
-export PCT_DISK_SIZE=8
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname omada
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 2
-  -memory 2048
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/omada-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created Omada Controller LXC to${CL} ${BL}$CTID${CL}.
-${BL}Omada${CL} should be reachable by going to the following URL.
-         ${BL}https://${IP}:8043${CL} \n"

+ 0 - 356
ct/omada-v3.sh

@@ -1,356 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="Omada"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${BL}
-   ____                      _          _____            _             _ _           
-  / __ \                    | |        / ____|          | |           | | |          
- | |  | |_ __ ___ v3__ _  __| | __ _  | |     ___  _ __ | |_ _ __ ___ | | | ___ _ __ 
- | |  | |  _   _ \ / _  |/ _  |/ _  | | |    / _ \|  _ \| __|  __/ _ \| | |/ _ \  __|
- | |__| | | | | | | (_| | (_| | (_| | | |___| (_) | | | | |_| | | (_) | | |  __/ |   
-  \____/|_| |_| |_|\__,_|\__,_|\__,_|  \_____\___/|_| |_|\__|_|  \___/|_|_|\___|_|   
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}8${CL}${DGN}GB${CL}"
-        DISK_SIZE="8"
-        echo -e "${DGN}Using ${BGN}1${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="2"
-        echo -e "${DGN}Using ${BGN}512${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="2048"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 8 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="8"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 2 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="2"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 2048 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="2048"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=ubuntu
-export PCT_OSVERSION=20.04
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/omada-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}https://${IP}:8043${CL} \n"

+ 1 - 1
ct/omada-v4.sh

@@ -318,7 +318,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/omv-v4.sh

@@ -320,7 +320,7 @@ EOF
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 361
ct/openhab-v3.sh

@@ -1,361 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-APP="openHAB"
-var_disk="8"
-var_cpu="2"
-var_ram="2048"
-var_os="debian"
-var_version="11"
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-var_install="${NSAPP}-install"
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-function msg_info() {
-   local msg="$1"
-   echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-   local msg="$1"
-   echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${YW}
-                         _    _          ____  
-                        | |  | |   /\   |  _ \ 
-   ___  _ __   ___ _ __ | |__| |  /  \  | |_) |
-  / _ \|  _ \ / _ \  _ \|  __  | / /\ \ |  _ < 
- | (_) | |_) |  __/ | | | |  | |/ ____ \| |_) |
-  \___/| .__/ \___|_| |_|_|  |_/_/ v3 \_\____/ 
-       | |                                     
-       |_|                                     
-${CL}"
-}
-
-header_info
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Privileged${CL}"
-        CT_TYPE="0"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}$var_disk${CL}${DGN}GB${CL}"
-        DISK_SIZE="$var_disk"
-        echo -e "${DGN}Using ${BGN}$var_cpu${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="$var_cpu"
-        echo -e "${DGN}Using ${BGN}$var_ram${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="$var_ram"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Unprivileged, or Press [ENTER] for Default: Privileged"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Privileged" CT_TYPE="0"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Unprivileged"
-        CT_TYPE="1"
-        echo -en "${DGN}Set CT Type ${BL}Unprivileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: $var_disk "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="$var_disk"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: $var_cpu "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="$var_cpu"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: $var_ram "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="$var_ram"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-export CTID=$CT_ID
-export PCT_OSTYPE=$var_os
-export PCT_OSVERSION=$var_version
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-         ${BL}http://${IP}:8080${CL}\n"

+ 1 - 1
ct/openhab-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 1 - 1
ct/paperless-ngx-v4.sh

@@ -310,7 +310,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 259
ct/photoprism-v2.sh

@@ -1,259 +0,0 @@
-#!/usr/bin/env bash
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-RD=`echo "\033[01;31m"`
-CM='\xE2\x9C\x94\033'
-GN=`echo "\033[1;92m"`
-CL=`echo "\033[m"`
-PP=`echo "\e[1;35m"`
-APP="PhotoPrism"
-HN=$(echo ${APP,,} | tr -d ' ')
-while true; do
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${PP}
-  _____  _           _        _____      _               
- |  __ \| |         | |      |  __ \    (_)              
- | |__) | |__   ___ | |_ ___ | |__) | __ _ ___ _ __ ___  
- |  ___/|  _ \ / _ \| __/ _ \|  ___/  __| / __|  _   _ \ 
- | |    | | | | (_) | || (_) | |   | |  | \__ \ | | | | |
- |_|    |_| |_|\___/ \__\___/|_|   |_|  |_|___/_| |_| |_|
-${CL}"
-}
-
-header_info
-show_menu(){
-    printf "    ${YW} 1)${YW} Privileged ${CL}\n"
-    printf "    ${YW} 2)${GN} Unprivileged ${CL}\n"
-
-    printf "Please choose a Install Method and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message1=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-}
-show_menu
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Privileged Install";
-            IM=0
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Unprivileged Install";
-            IM=1
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Install Method from the menu";
-            show_menu;
-        ;;
-      esac
-  done
-show_menu2(){
-    printf "    ${YW} 1)${GN} Use Automatic Login ${CL}\n"
-    printf "    ${YW} 2)${GN} Use Password (changeme) ${CL}\n"
-
-    printf "Please choose a Password Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message2=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-}
-show_menu2
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic Login";
-            PW=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Password (changeme)";
-            PW="-password changeme"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a Password Type from the menu";
-            show_menu2;
-        ;;
-      esac
-  done
-show_menu3(){
-    printf "    ${YW} 1)${GN} Automatic DHCP ${CL}\n"
-    printf "    ${YW} 2)${GN} Manual DHCP ${CL}\n"
-
-    printf "Please choose a DHCP Type and hit enter or ${RD}x${CL} to exit."
-    read opt
-}
-
-option_picked(){
-    message3=${@:-"${CL}Error: No message passed"}
-    printf " ${YW}${message1}${CL}\n"
-    printf " ${YW}${message2}${CL}\n"
-    printf " ${YW}${message3}${CL}\n"
-}
-show_menu3
-while [ "$opt" != " " ]
-    do
-      case $opt in
-        1) clear;
-            header_info;
-            option_picked "Using Automatic DHCP";
-            DHCP=" "
-            break;
-        ;;
-        2) clear;
-            header_info;
-            option_picked "Using Manual DHCP";
-            DHCP="1"
-            break;
-        ;;
-
-        x)exit;
-        ;;
-        \n)exit;
-        ;;
-        *)clear;
-            option_picked "Please choose a DHCP Type from the menu";
-            show_menu3;
-        ;;
-      esac
-  done
-
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
- if [ "$IM" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$(pvesh get /cluster/nextid)
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=8
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=vmbr0,ip=dhcp
-  -onboot 1
-  -cores 2
-  -memory 2048
-  -unprivileged ${IM}
-  ${PW}
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-STORAGE_TYPE=$(pvesm status -storage $(pct config $CTID | grep rootfs | awk -F ":" '{print $2}') | awk 'NR>1 {print $2}')
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some addons may not work due to ZFS not supporting 'fallocate'."
-fi
-LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
-cat <<EOF >> $LXC_CONFIG
-lxc.cgroup2.devices.allow: a
-lxc.cap.drop:
-EOF
-if [ "$DHCP" == "1" ]; then
-MAC=$(pct config $CTID \
-| grep -i hwaddr \
-| awk '{print substr($2, 31, length($3) 17 ) }') \
-
-echo -e "MAC Address ${BL}$MAC${CL}"
-
-dhcp_reservation(){
-    printf "Please set DHCP reservation and press Enter."
-    read
-}
-dhcp_reservation
-fi
-
-echo -en "${GN} Starting LXC Container... "
-pct start $CTID
-echo -e "${CM}${CL} \r"
-
-alias lxc-cmd="lxc-attach -n $CTID --"
-
-lxc-cmd bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$HN-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-echo -e "${GN}Successfully created ${APP} LXC to${CL} ${BL}$CTID${CL}. 
-${APP} should be reachable by going to the following URL.
-      ${BL}http://${IP}:2342${CL} \n"

+ 0 - 357
ct/photoprism-v3.sh

@@ -1,357 +0,0 @@
-#!/usr/bin/env bash
-echo -e "Loading..."
-NEXTID=$(pvesh get /cluster/nextid)
-INTEGER='^[0-9]+$'
-PP=`echo "\e[1;35m"`
-YW=`echo "\033[33m"`
-BL=`echo "\033[36m"`
-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}"
-APP="PhotoPrism"
-NSAPP=$(echo ${APP,,} | tr -d ' ')
-set -o errexit
-set -o errtrace
-set -o nounset
-set -o pipefail
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-trap die ERR
-
-function error_exit() {
-  trap - ERR
-  local reason="Unknown failure occurred."
-  local msg="${1:-$reason}"
-  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
-  echo -e "$flag $msg" 1>&2
-  exit $EXIT
-}
-
-while true; do
-    clear
-    read -p "This will create a New ${APP} LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-clear
-function header_info {
-echo -e "${PP}
-  _____  _           _        _____      _               
- |  __ \| |         | |      |  __ \    (_)              
- | |__) | |__   ___ | |_ ___ | |__) | __ _ ___ _ __ ___  
- |  ___/|  _ \ / _ \| __/ _ \|  ___/  __| / __|  _   _ \ 
- | |    | | | | (_) | || (_) | |   | |  | \__ \ | | | | |
- |_| v3 |_| |_|\___/ \__\___/|_|   |_|  |_|___/_| |_| |_|
-${CL}"
-}
-
-header_info
-
-function msg_info() {
-    local msg="$1"
-    echo -ne " ${HOLD} ${YW}${msg}..."
-}
-
-function msg_ok() {
-    local msg="$1"
-    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
-}
-
-function PVE_CHECK() {
-    PVE=$(pveversion | grep "pve-manager/7" | wc -l)
-
-    if [[ $PVE != 1 ]]; then
-        echo -e "${RD}This script requires Proxmox Virtual Environment 7.0 or greater${CL}"
-        echo -e "Exiting..."
-        sleep 2
-        exit
-    fi
-}
-
-function default_settings() {
-        clear
-        header_info
-        echo -e "${BL}Using Default Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}Unprivileged${CL} ${RD}NO DEVICE PASSTHROUGH${CL}"
-        CT_TYPE="1"
-        echo -e "${DGN}Using CT Password ${BGN}Automatic Login${CL}"
-        PW=" "
-        echo -e "${DGN}Using CT ID ${BGN}$NEXTID${CL}"
-        CT_ID=$NEXTID
-        echo -e "${DGN}Using CT Name ${BGN}$NSAPP${CL}"
-        HN=$NSAPP
-        echo -e "${DGN}Using Disk Size ${BGN}8${CL}${DGN}GB${CL}"
-        DISK_SIZE="8"
-        echo -e "${DGN}Using ${BGN}2${CL}${DGN}vCPU${CL}"
-        CORE_COUNT="2"
-        echo -e "${DGN}Using ${BGN}2048${CL}${DGN}MiB RAM${CL}"
-        RAM_SIZE="2048"
-        echo -e "${DGN}Using Bridge ${BGN}vmbr0${CL}"
-        BRG="vmbr0"
-        echo -e "${DGN}Using Static IP Address ${BGN}DHCP${CL}"
-        NET=dhcp
-        echo -e "${DGN}Using Gateway Address ${BGN}NONE${CL}"
-        GATE=""
-        echo -e "${DGN}Using VLAN Tag ${BGN}NONE${CL}"
-        VLAN=""
-}
-
-function advanced_settings() {
-        clear
-        header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${YW}Type Privileged, or Press [ENTER] for Default: Unprivileged (${RD}NO DEVICE PASSTHROUGH${CL}${YW})"
-        read CT_TYPE1
-        if [ -z $CT_TYPE1 ]; then CT_TYPE1="Unprivileged" CT_TYPE="1"; 
-        echo -en "${DGN}Set CT Type ${BL}$CT_TYPE1${CL}"
-        else
-        CT_TYPE1="Privileged"
-        CT_TYPE="0"
-        echo -en "${DGN}Set CT Type ${BL}Privileged${CL}"  
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${YW}Set Password, or Press [ENTER] for Default: Automatic Login "
-        read PW1
-        if [ -z $PW1 ]; then PW1="Automatic Login" PW=" "; 
-        echo -en "${DGN}Set CT ${BL}$PW1${CL}"
-        else
-          PW="-password $PW1"
-        echo -en "${DGN}Set CT Password ${BL}$PW1${CL}"
-        fi;
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${YW}Enter the CT ID, or Press [ENTER] to automatically generate (${NEXTID}) "
-        read CT_ID
-        if [ -z $CT_ID ]; then CT_ID=$NEXTID; fi;
-        echo -en "${DGN}Set CT ID To ${BL}$CT_ID${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${YW}Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
-        read CT_NAME
-        if [ -z $CT_NAME ]; then
-           HN=$NSAPP
-        else
-           HN=$(echo ${CT_NAME,,} | tr -d ' ')
-        fi
-        echo -en "${DGN}Set CT Name To ${BL}$HN${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${YW}Enter a Disk Size, or Press [ENTER] for Default: 8 "
-        read DISK_SIZE
-        if [ -z $DISK_SIZE ]; then DISK_SIZE="8"; fi;
-        if ! [[ $DISK_SIZE =~ $INTEGER ]] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi;
-        echo -en "${DGN}Set Disk Size To ${BL}$DISK_SIZE${CL}${DGN}GB${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${YW}Allocate CPU cores, or Press [ENTER] for Default: 2 "
-        read CORE_COUNT
-        if [ -z $CORE_COUNT ]; then CORE_COUNT="2"; fi;
-        echo -en "${DGN}Set Cores To ${BL}$CORE_COUNT${CL}${DGN}vCPU${CL}"
-echo -e " ${CM}${CL} \r"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${YW}Allocate RAM in MiB, or Press [ENTER] for Default: 2048 "
-        read RAM_SIZE
-        if [ -z $RAM_SIZE ]; then RAM_SIZE="2048"; fi;
-        echo -en "${DGN}Set RAM To ${BL}$RAM_SIZE${CL}${DGN}MiB RAM${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-        echo -e "${YW}Enter a Bridge, or Press [ENTER] for Default: vmbr0 "
-        read BRG
-        if [ -z $BRG ]; then BRG="vmbr0"; fi;
-        echo -en "${DGN}Set Bridge To ${BL}$BRG${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${YW}Enter a Static IPv4 CIDR Address, or Press [ENTER] for Default: DHCP "
-        read NET
-        if [ -z $NET ]; then NET="dhcp"; fi;
-        echo -en "${DGN}Set Static IP Address To ${BL}$NET${CL}"
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-    	echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-    	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${YW}Enter a Gateway IP (mandatory if static IP is used), or Press [ENTER] for Default: NONE "
-        read GATE1
-        if [ -z $GATE1 ]; then GATE1="NONE" GATE=""; 
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        else
-          GATE=",gw=$GATE1"
-        echo -en "${DGN}Set Gateway IP To ${BL}$GATE1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${YW}Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
-        read VLAN1
-        if [ -z $VLAN1 ]; then VLAN1="NONE" VLAN=""; 
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        else
-          VLAN=",tag=$VLAN1"
-        echo -en "${DGN}Set VLAN Tag To ${BL}$VLAN1${CL}"
-        fi;
-echo -e " ${CM}${CL} \n"
-sleep 1
-clear
-header_info
-        echo -e "${RD}Using Advanced Settings${CL}"
-        echo -e "${DGN}Using CT Type ${BGN}$CT_TYPE1${CL}"
-        echo -e "${DGN}Using CT Password ${BGN}$PW1${CL}"
-        echo -e "${DGN}Using CT ID ${BGN}$CT_ID${CL}"
-        echo -e "${DGN}Using CT Name ${BGN}$HN${CL}"
-        echo -e "${DGN}Using Disk Size ${BGN}$DISK_SIZE${CL}${DGN}GB${CL}"
-        echo -e "${DGN}Using ${BGN}${CORE_COUNT}${CL}${DGN}vCPU${CL}"
-        echo -e "${DGN}Using ${BGN}${RAM_SIZE}${CL}${DGN}MiB RAM${CL}"
-	echo -e "${DGN}Using Bridge ${BGN}${BRG}${CL}"
-        echo -e "${DGN}Using Static IP Address ${BGN}$NET${CL}"
-        echo -e "${DGN}Using Gateway IP Address ${BGN}$GATE1${CL}"
-        echo -e "${DGN}Using VLAN Tag ${BGN}$VLAN1${CL}"
-
-read -p "Are these settings correct(y/n)? " -n 1 -r
-echo
-if [[ ! $REPLY =~ ^[Yy]$ ]]
-then
-    advanced_settings
-fi
-}
-
-function start_script() {
-		echo -e "${YW}Type Advanced, or Press [ENTER] for Default Settings "
-		read SETTINGS
-		if [ -z $SETTINGS ]; then default_settings; 
-		else
-		advanced_settings 
-		fi;
-}
-
-start_script
-
-if [ "$CT_TYPE" == "1" ]; then 
- FEATURES="nesting=1,keyctl=1"
- else
- FEATURES="nesting=1"
- fi
-
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-export CTID=$CT_ID
-export PCT_OSTYPE=debian
-export PCT_OSVERSION=11
-export PCT_DISK_SIZE=$DISK_SIZE
-export PCT_OPTIONS="
-  -features $FEATURES
-  -hostname $HN
-  -net0 name=eth0,bridge=$BRG,ip=$NET$GATE$VLAN
-  -onboot 1
-  -cores $CORE_COUNT
-  -memory $RAM_SIZE
-  -unprivileged $CT_TYPE
-  $PW
-"
-bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/create_lxc.sh)" || exit
-
-msg_info "Starting LXC Container"
-pct start $CTID
-msg_ok "Started LXC Container"
-
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/photoprism-install.sh)" || exit
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-
-pct set $CTID -description "# ${APP} LXC
-### https://github.com/tteck/Proxmox"
-
-msg_ok "Completed Successfully!\n"
-echo -e "${APP} should be reachable by going to the following URL.
-      ${BL}http://${IP}:2342${CL} \n"

+ 1 - 1
ct/photoprism-v4.sh

@@ -309,7 +309,7 @@ bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/c
 msg_info "Starting LXC Container"
 pct start $CTID
 msg_ok "Started LXC Container"
-lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/setup/$var_install.sh)" || exit
+lxc-attach -n $CTID -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/install/$var_install.sh)" || exit
 IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
 pct set $CTID -description "# ${APP} LXC
 ### https://tteck.github.io/Proxmox/

+ 0 - 162
ct/pihole-v1.sh

@@ -1,162 +0,0 @@
-#!/usr/bin/env bash
-
-while true; do
-    read -p "This will create a New Pi-hole LXC. Proceed(y/n)?" yn
-    case $yn in
-        [Yy]* ) break;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-    esac
-done
-
-set -o errexit  
-set -o errtrace 
-set -o nounset  
-set -o pipefail 
-shopt -s expand_aliases
-alias die='EXIT=$? LINE=$LINENO error_exit'
-CHECKMARK='\033[0;32m\xE2\x9C\x94\033[0m'
-trap die ERR
-trap cleanup EXIT
-
-function error_exit() {
-  trap - ERR
-  local DEFAULT='Unknown failure occured.'
-  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
-  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
-  msg "$FLAG $REASON"
-  [ ! -z ${CTID-} ] && cleanup_ctid
-  exit $EXIT
-}
-function warn() {
-  local REASON="\e[97m$1\e[39m"
-  local FLAG="\e[93m[WARNING]\e[39m"
-  msg "$FLAG $REASON"
-}
-function info() {
-  local REASON="$1"
-  local FLAG="\e[36m[INFO]\e[39m"
-  msg "$FLAG $REASON"
-}
-function msg() {
-  local TEXT="$1"
-  echo -e "$TEXT"
-}
-function cleanup_ctid() {
-  if [ ! -z ${MOUNT+x} ]; then
-    pct unmount $CTID
-  fi
-  if $(pct status $CTID &>/dev/null); then
-    if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
-      pct stop $CTID
-    fi
-    pct destroy $CTID
-  elif [ "$(pvesm list $STORAGE --vmid $CTID)" != "" ]; then
-    pvesm free $ROOTFS
-  fi
-}
-function cleanup() {
-  popd >/dev/null
-  rm -rf $TEMP_DIR
-}
-function load_module() {
-  if ! $(lsmod | grep -Fq $1); then
-    modprobe $1 &>/dev/null || \
-      die "Failed to load '$1' module."
-  fi
-  MODULES_PATH=/etc/modules
-  if ! $(grep -Fxq "$1" $MODULES_PATH); then
-    echo "$1" >> $MODULES_PATH || \
-      die "Failed to add '$1' module to load at boot."
-  fi
-}
-TEMP_DIR=$(mktemp -d)
-pushd $TEMP_DIR >/dev/null
-
-wget -qL https://raw.githubusercontent.com/tteck/Proxmox/main/setup/pihole_setup.sh
-
-load_module overlay
-
-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 rootdir | awk 'NR>1')
-if [ $((${#STORAGE_MENU[@]}/3)) -eq 0 ]; then
-  warn "'Container' needs to be selected for at least one storage location."
-  die "Unable to detect valid storage location."
-elif [ $((${#STORAGE_MENU[@]}/3)) -eq 1 ]; then
-  STORAGE=${STORAGE_MENU[0]}
-else
-  while [ -z "${STORAGE:+x}" ]; do
-    STORAGE=$(whiptail --title "Storage Pools" --radiolist \
-    "Which storage pool you would like to use for the container?\n\n" \
-    16 $(($MSG_MAX_LENGTH + 23)) 6 \
-    "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
-  done
-fi
-info "Using '$STORAGE' for storage location."
-
-CTID=$(pvesh get /cluster/nextid)
-info "LXC ID is $CTID."
-
-echo -e "${CHECKMARK} \e[1;92m Updating LXC Template List... \e[0m"
-pveam update >/dev/null
-
-echo -e "${CHECKMARK} \e[1;92m Downloading LXC Template... \e[0m"
-OSTYPE=debian
-OSVERSION=${OSTYPE}-11
-mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($OSVERSION.*\)/\1/p" | sort -t - -k 2 -V)
-TEMPLATE="${TEMPLATES[-1]}"
-pveam download local $TEMPLATE >/dev/null ||
-  die "A problem occured while downloading the LXC template."
-
-STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
-case $STORAGE_TYPE in
-  dir|nfs)
-    DISK_EXT=".raw"
-    DISK_REF="$CTID/"
-    ;;
-  zfspool)
-    DISK_PREFIX="subvol"
-    DISK_FORMAT="subvol"
-    ;;
-esac
-DISK=${DISK_PREFIX:-vm}-${CTID}-disk-0${DISK_EXT-}
-ROOTFS=${STORAGE}:${DISK_REF-}${DISK}
-
-echo -e "${CHECKMARK} \e[1;92m Creating LXC... \e[0m"
-DISK_SIZE=2G
-pvesm alloc $STORAGE $CTID $DISK $DISK_SIZE --format ${DISK_FORMAT:-raw} >/dev/null
-if [ "$STORAGE_TYPE" == "zfspool" ]; then
-  warn "Some containers may not work properly due to ZFS not supporting 'fallocate'."
-else
-  mkfs.ext4 $(pvesm path $ROOTFS) &>/dev/null
-fi
-ARCH=$(dpkg --print-architecture)
-HOSTNAME=pi-hole
-TEMPLATE_STRING="local:vztmpl/${TEMPLATE}"
-pct create $CTID $TEMPLATE_STRING -arch $ARCH -features nesting=1 \
-  -hostname $HOSTNAME -net0 name=eth0,bridge=vmbr0,ip=dhcp -onboot 1 -cores 1 -memory 512 \
-  -ostype $OSTYPE -rootfs $ROOTFS,size=$DISK_SIZE -storage $STORAGE >/dev/null
-
-MOUNT=$(pct mount $CTID | cut -d"'" -f 2)
-ln -fs $(readlink /etc/localtime) ${MOUNT}/etc/localtime
-pct unmount $CTID && unset MOUNT
-
-echo -e "${CHECKMARK} \e[1;92m Starting LXC... \e[0m"
-pct start $CTID
-pct push $CTID pihole_setup.sh /pihole_setup.sh -perms 755
-pct exec $CTID /pihole_setup.sh
-
-IP=$(pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}')
-info "Successfully created a Pi-hole LXC to $CTID"
-echo -e "\e[1;92m Pi-hole should be reachable by going to the following URL.
-                  http://${IP}
-\e[0m"

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików