浏览代码

Update node-red-install.sh

move away from node-red github install script
tteckster 2 年之前
父节点
当前提交
283c328917
共有 1 个文件被更改,包括 52 次插入2 次删除
  1. 52 2
      setup/node-red-install.sh

+ 52 - 2
setup/node-red-install.sh

@@ -11,6 +11,22 @@ CM="${GN}✓${CL}"
 CROSS="${RD}✗${CL}"
 BFR="\\r\\033[K"
 HOLD="-"
+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"
@@ -43,9 +59,13 @@ done
 msg_ok "Set up Container OS"
 msg_ok "Network Connected: ${BL}$(hostname -I)"
 
+set +e
+alias die=''
 if nc -zw1 8.8.8.8 443; then  msg_ok "Internet Connected"; else  msg_error "Internet NOT Connected"; exit 1; fi;
 RESOLVEDIP=$(nslookup "github.com" | awk -F':' '/^Address: / { matched = 1 } matched { print $2}' | xargs)
 if [[ -z "$RESOLVEDIP" ]]; then msg_error "DNS Lookup Failure";  else msg_ok "DNS Resolved github.com to $RESOLVEDIP";  fi;
+alias die='EXIT=$? LINE=$LINENO error_exit'
+set -e
 
 msg_info "Updating Container OS"
 apt-get update &>/dev/null
@@ -57,11 +77,41 @@ apt-get install -y curl &>/dev/null
 apt-get install -y sudo &>/dev/null
 msg_ok "Installed Dependencies"
 
+msg_info "Setting up Node.js Repository"
+curl -fsSL https://deb.nodesource.com/setup_18.x | bash - &>/dev/null
+msg_ok "Set up Node.js Repository"
+
+msg_info "Installing Node.js"
+apt-get install -y nodejs &>/dev/null
+msg_ok "Installed Node.js"
+
 msg_info "Installing Node-Red"
-bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) --confirm-root --confirm-install --skip-pi --no-init &>/dev/null
-systemctl enable --now nodered.service &>/dev/null
+npm install -g --unsafe-perm node-red &>/dev/null
 msg_ok "Installed Node-Red"
 
+msg_info "Creating Service"
+service_path="/etc/systemd/system/nodered.service"
+echo "[Unit]
+Description=Node-RED
+After=syslog.target network.target
+
+[Service]
+ExecStart=/usr/bin/node-red --max-old-space-size=128 -v
+Restart=on-failure
+KillSignal=SIGINT
+
+SyslogIdentifier=node-red
+StandardOutput=syslog
+
+WorkingDirectory=/root/
+User=root
+Group=root
+
+[Install]
+WantedBy=multi-user.target" > $service_path
+systemctl enable --now nodered.service &>/dev/null
+msg_ok "Created Service"
+
 PASS=$(grep -w "root" /etc/shadow | cut -b6);
   if [[ $PASS != $ ]]; then
 msg_info "Customizing Container"