Update unprivileged-node-red.sh

pull/40/head
tteckster 3 years ago committed by GitHub
parent 02f614d209
commit 1312b256f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,63 +1,116 @@
#!/usr/bin/env bash #!/usr/bin/env bash
CROSS='\033[1;31m\xE2\x9D\x8C\033[0m'
RD=`echo "\033[01;31m"`
BL=`echo "\033[36m"` BL=`echo "\033[36m"`
RD=`echo "\033[01;31m"`
CM='\xE2\x9C\x94\033' CM='\xE2\x9C\x94\033'
GN=`echo "\033[1;92m"` GN=`echo "\033[1;92m"`
CL=`echo "\033[m"` CL=`echo "\033[m"`
RETRY_NUM=5 while true; do
RETRY_EVERY=3 read -p "This will create a New Unprivileged Node-Red LXC. Proceed(y/n)?" yn
NUM=$RETRY_NUM case $yn in
echo -en "${GN} Setting up Container OS... " [Yy]* ) break;;
sed -i "/$LANG/ s/\(^# \)//" /etc/locale.gen [Nn]* ) exit;;
locale-gen >/dev/null * ) echo "Please answer yes or no.";;
while [ "$(hostname -I)" = "" ]; do esac
1>&2 echo -en "${CROSS}${RD} No Network! "
sleep $RETRY_EVERY
((NUM--))
if [ $NUM -eq 0 ]
then
1>&2 echo -e "${CROSS}${RD} No Network After $RETRY_NUM Tries${CL}"
exit 1
fi
done done
echo -e "${CM}${CL} \r" clear
echo -en "${GN} Network Connected: ${BL}$(hostname -I)${CL} " function header_info {
echo -e "${CM}${CL} \r" echo -e "${RD}
echo -en "${GN} Updating Container OS... " _ _ _ _____ _
apt update &>/dev/null | \ | | | | | __ \ | |
apt-get -qqy upgrade &>/dev/null | \| | ___ __| | ___ ______| |__) |___ __| |
echo -e "${CM}${CL} \r" | |/ _ \ / _ |/ _ \______| _ // _ \/ _ |
| |\ | (_) | (_| | __/ | | \ \ __/ (_| |
|_| \_|\___/ \__,_|\___| |_| \_\___|\__,_|
echo -en "${GN} Installing Dependencies... "
apt-get install -y curl &>/dev/null
apt-get install -y sudo &>/dev/null
echo -e "${CM}${CL} \r"
echo -en "${GN} Installing Node-Red... " ${CL}"
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) --confirm-root --confirm-install --skip-pi &>/dev/nul }
sudo systemctl enable nodered.service &>/dev/null
sudo systemctl start nodered.service &>/dev/null header_info
echo -e "${CM}${CL} \r"
echo -en "${GN} Customizing Container... " set -o errexit
rm /etc/motd set -o errtrace
rm /etc/update-motd.d/10-uname set -o nounset
touch ~/.hushlogin set -o pipefail
GETTY_OVERRIDE="/etc/systemd/system/container-getty@1.service.d/override.conf" shopt -s expand_aliases
mkdir -p $(dirname $GETTY_OVERRIDE) alias die='EXIT=$? LINE=$LINENO error_exit'
cat << EOF > $GETTY_OVERRIDE trap die ERR
[Service] trap cleanup EXIT
ExecStart=
ExecStart=-/sbin/agetty --autologin root --noclear --keep-baud tty%I 115200,38400,9600 \$TERM function error_exit() {
EOF trap - ERR
systemctl daemon-reload local DEFAULT='Unknown failure occured.'
systemctl restart $(basename $(dirname $GETTY_OVERRIDE) | sed 's/\.d//') 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
}
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 nesting=1
-hostname node-red
-net0 name=eth0,bridge=vmbr0,ip=dhcp
-onboot 1
-cores 1
-memory 1024
-unprivileged 1
"
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/unprev/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
echo -en "${GN} Starting LXC Container... "
pct start $CTID
echo -e "${CM}${CL} \r" echo -e "${CM}${CL} \r"
echo -en "${GN} Cleanup... " alias lxc-cmd="lxc-attach -n $CTID --"
apt-get autoremove >/dev/null
apt-get autoclean >/dev/null bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/unprev/node-red-install.sh)" || exit
rm -rf /var/{cache,log}/* /var/lib/apt/lists/*
echo -e "${CM}${CL} \n" 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} is reachable by going to the following URL.
${BL}http://${IP}:1880${CL} \n"

Loading…
Cancel
Save

Powered by BW's shoe-string budget.