Infinite loop updating node-red on Raspbian Stretch

I appear to be stuck in an infinite loop trying to update node red 0.19.4 on Raspbian "Stretch" It is and old system and was working well until I tried installing an improved flow for my AI security add-on system. I've come the the conclusion that I needed to update to at least 1.3.something. I tried this:
Based on an old HSS thread:
https://discourse.nodered.org/t/home-surveillance-system-hss/51726/5
it seemed to work until I got this when I tried node-red-start:

"bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) --nodered-version="1.3.1"
  If you wish to stay on nodejs 8 you can update to the latest Node-RED 1.x or 2.x version by adding
  --nodered-version="1.3.7" or --nodered-version="2.2.2" to that install command. If in doubt this is the safer option.
  Please backup your installation and flows before upgrading.
  
  Note: not all embedded hardware can be updated via this method - please check before proceeding.
  
  Exiting now.
pi@PiCam:~/AI_ncs $ bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) --nodered-version="1.3.7"

 
This script checks the version of node.js installed is 16 or greater. It will try to
install node 20 if none is found. It can optionally install node 18 or 20 LTS for you.
 
If necessary it will then remove the old core of Node-RED, before then installing the latest
version. You can also optionally specify the version required.
 
It also tries to run 'npm rebuild' to refresh any extra nodes you have installed
that may have a native binary component. While this normally works ok, you need
to check that it succeeds for your combination of installed nodes.
 
To do all this it runs commands as root - please satisfy yourself that this will
not damage your Pi, or otherwise compromise your configuration.
If in doubt please backup your SD card first.
 
See the optional parameters by re-running this command with --help
 
Are you really sure you want to do this ? [y/N] ? y

Would you like to install the Pi-specific nodes ? [y/N] ? y


Running Node-RED install for user pi at /home/pi on raspbian


This can take 20-30 minutes on the slower Pi versions - please wait.

  Stop Node-RED                       ✔
  Remove old version of Node-RED      ✔
  Node option not specified           :   --node18 or --node20
  Leave existing Node.js              :   v8.11.1   Npm 1.4.21
  Clean npm cache                     -
(node:3172) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
npm ERR! not ok code 1 local          
  Install Node-RED core               ✘   
(node:3218) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
  Move global nodes to local          -
  Leave existing nodes                -
  Install extra Pi nodes              ✔
  Add shortcut commands               ✔
  Update systemd script               ✔/nodered-install.log



All done.
You can now start Node-RED with the command  node-red-start
  or using the icon under   Menu / Programming / Node-RED
Then point your browser to localhost:1880 or http://{your_pi_ip-address}:1880

Started :  Fri May 16 21:39:42 CDT 2025 
Finished:  Fri May 16 21:40:07 CDT 2025
 
Just FYI : Your settings.js file is different from the latest defaults.
You may wish to run
   diff -y --suppress-common-lines /usr/lib/node_modules/node-red/settings.js /home/pi/.node-red/settings.js
to compare them and see what the latest options are.
 
**********************************************************************************
 ### WARNING ###
 DO NOT EXPOSE NODE-RED TO THE OPEN INTERNET WITHOUT SECURING IT FIRST
 
 Even if your Node-RED doesn't have anything valuable, (automated) attacks will
 happen and could provide a foothold in your local network
 
 Follow the guide at https://nodered.org/docs/user-guide/runtime/securing-node-red
 to setup security.
 
 ### ADDITIONAL RECOMMENDATIONS ###
  - Remove the /etc/sudoers.d/010_pi-nopasswd file to require entering your password
    when performing any sudo/root commands:
 
      sudo rm -f /etc/sudoers.d/010_pi-nopasswd
 
**********************************************************************************
 
pi@PiCam:~/AI_ncs $ node-red-start

Node-RED is not yet fully installed. Please re-run the install script again manually.
 
   bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
 
then retry  node-red-start
 
pi@PiCam:~/AI_ncs $ 

Any ideas? I can't really update to Bullseye or Bookworm because the whole point of this is to set up a demo on an old pi using the old Intel NCS stick, It works well for a demo but as the initial version of my AI system the false positive rate is far too high for any serious use. I was trying to bring the dashboard inline with my latest version.

As long as you have nodejs already installed then rather than use the script just install it manually using npm as per Running Node-RED locally : Node-RED

eg sudo npm i -g --unsafe-perm node-red@1.3.1
or whichever version you want.

1 Like

Thanks I'll give this a try, Turns out this old system hand the version of node-red in the Raspbian repos. I got it working again by re-installing it. Perhaps that is why the bash script failed?

Should I remove the repo version before doing the npm install? I'll assume yes unless I hear from you, won't be getting to it for six or eight hours.

Probably, otherwise the system may try to update it if you do an apt upgrade. Remove it using apt or whatever you installed it with.

2 Likes

Thanks guys, I don't really have a solution since I managed to solve the issue without updating node-red.

It tested my debugging and troubleshooting skills, but long story short, it was OOP object type mismatches in the interaction of the old Stretch versions of Python3.5, node-red 19.4, and paho-mqtt, that I could fix with explicit type casts avoiding the need for the update. But I did "break the loop" by reinstalling the Stretch version of node-red. Likely would have been fixed with an update since the code had developed and run on ubuntu 22.04