Disappearing Palette Manager after failed Aedes install

Hi there

My main Node-Red installation - been using it wthout issue until today - I tried using the palette Manager to install Aedes MQTT - it failed.

When I checked 5 minutes later, the palette manager had disappeared. So, I tried a reboot - Node-Red is running fine - but no pallete manager. Ignore the connection to 192.168.1.198 issue below - thats a board not connected.

I'm looking for ideas that don't involve going back to a clone as I've not cloned this for weeks and I've been adding or modifying flows to Node-Red.

Note the line in the block below that says
10 Feb 13:47:10 - [info] Palette editor disabled : npm command not found

HELP anyone?

Once Node-RED has started, point a browser at http://192.168.1.19:1880
On Pi Node-RED works better with the Firefox or Chrome browser

Use node-red-stop to stop Node-RED
Use node-red-start to start Node-RED again
Use node-red-log to view the recent log output
Use sudo systemctl enable nodered.service to autostart Node-RED at every boot
Use sudo systemctl disable nodered.service to disable autostart on boot

To find more nodes and example flows - go to http://flows.nodered.org

Starting as a systemd service.
10 Feb 13:47:10 - [info]
Welcome to Node-RED

10 Feb 13:47:10 - [info] Node-RED version: v1.2.6
10 Feb 13:47:10 - [info] Node.js version: v10.23.1
10 Feb 13:47:10 - [info] Linux 5.10.11-v8+ arm LE
10 Feb 13:47:10 - [info] Palette editor disabled : npm command not found
10 Feb 13:47:10 - [info] Loading palette nodes
10 Feb 13:47:16 - [info] Worldmap version 2.6.0
10 Feb 13:47:17 - [info] Dashboard version 2.25.0 started at /ui
10 Feb 13:47:18 - [info] Settings file : /home/pi/.node-red/settings.js
10 Feb 13:47:18 - [info] HTTP Static : /home/pi/.node-red/public
10 Feb 13:47:18 - [info] Context store : 'default' [module=localfilesystem]
10 Feb 13:47:18 - [info] User directory : /home/pi/.node-red
10 Feb 13:47:18 - [warn] Projects disabled : set editorTheme.projects.enabled=true to enable
10 Feb 13:47:18 - [info] Flows file : /home/pi/.node-red/flows.json
10 Feb 13:47:18 - [info] Server now running at http://127.0.0.1:1880/
10 Feb 13:47:18 - [info] Starting flows
10 Feb 13:47:31 - [info] [tcp out:6a1096d9.774ed8] connecting to 192.168.1.198:55443
10 Feb 13:47:31 - [info] [tcp in:5bbaf720.b78f58] connecting to 192.168.1.198:55443
10 Feb 13:47:32 - [info] Started flows
10 Feb 13:47:32 - [info] [sqlitedb:6e9a0125.59bc4] opened /home/pi/dbs/iot.db ok
10 Feb 13:47:32 - [info] [sqlitedb:fdbe27fe.fb7848] opened /home/pi/dbs/iot.db ok
10 Feb 13:47:32 - [info] [sqlitedb:33875a87.57ade6] opened /home/pi/dbs/iot.db ok
10 Feb 13:47:32 - [info] [tcp out:6a1096d9.774ed8] error: Error: connect ECONNREFUSED 192.168.1.198:55443
10 Feb 13:47:32 - [info] [tcp in:5bbaf720.b78f58] Error: connect ECONNREFUSED 192.168.1.198:55443
10 Feb 13:47:33 - [info] [tcp in:5bbaf720.b78f58] connection lost to 192.168.1.198:55443
10 Feb 13:47:33 - [info] [tcp out:6a1096d9.774ed8] connection lost to 192.168.1.198:55443
10 Feb 13:47:33 - [info] [mqtt-broker:4c682b3a.2ab5c4] Connected to broker: mqtt://127.0.0.1:1883
10 Feb 13:47:40 - [info] [e-mail:peterscargill@gmail.com] Message sent: 250 2.0.0 OK 1612961260 r12sm2821083wrp.13 -

What does npm -v show?

Oh, god, something else has changed. I got impatient, booted the Pi4, ran the install/upgrade script here,
Running on Raspberry Pi : Node-RED as I've done many times in the past (and occasionally had NR work but gripe about my (poor) choice of database - SQLITE. But THIS time - something I've never seen before - NR has bombed completely....

pi@rpi419buster:~:18:50[0]> node-red
Error loading settings file: /home/pi/.node-red/settings.js
Error: Could not locate the bindings file. Tried:
→ /home/pi/.node-red/node_modules/i2c-bus/build/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/build/Debug/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/build/Release/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/out/Debug/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/Debug/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/out/Release/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/Release/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/build/default/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/compiled/12.20.1/linux/arm/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/addon-build/release/install-root/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/addon-build/debug/install-root/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/addon-build/default/install-root/i2c.node
→ /home/pi/.node-red/node_modules/i2c-bus/lib/binding/node-v72-linux-arm/i2c.node
at bindings (/home/pi/.node-red/node_modules/bindings/bindings.js:124:9)
at Object. (/home/pi/.node-red/node_modules/i2c-bus/i2c-bus.js:4:32)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/pi/.node-red/settings.js:20:11)
at Module._compile (internal/modules/cjs/loader.js:999:30) {
tries: [
'/home/pi/.node-red/node_modules/i2c-bus/build/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/build/Debug/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/build/Release/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/out/Debug/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/Debug/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/out/Release/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/Release/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/build/default/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/compiled/12.20.1/linux/arm/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/addon-build/release/install-root/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/addon-build/debug/install-root/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/addon-build/default/install-root/i2c.node',
'/home/pi/.node-red/node_modules/i2c-bus/lib/binding/node-v72-linux-arm/i2c.node'
]
}

Arghhh.

So - I removed the I2c lines from settings.js as I'm not using it anyway and next time..

pi@rpi419buster:~:18:56[130]> node-red
10 Feb 18:58:41 - [info]

Welcome to Node-RED

10 Feb 18:58:41 - [info] Node-RED version: v1.2.9
10 Feb 18:58:41 - [info] Node.js version: v12.20.1
10 Feb 18:58:41 - [info] Linux 5.10.11-v8+ arm LE
10 Feb 18:58:41 - [info] Loading palette nodes
10 Feb 18:58:47 - [info] Worldmap version 2.6.0
10 Feb 18:58:48 - [info] Dashboard version 2.25.0 started at /ui
It looks like serialport didn't install properly.
More information can be found here https://serialport.io/docs/guide-installation
The result of requiring the package is: undefined
Error: The module '/home/pi/.node-red/node_modules/@serialport/bindings/build/Release/bindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 64. This version of Node.js requires
NODE_MODULE_VERSION 72. Please try re-compiling or re-installing
the module (for instance, using npm rebuild or npm install).
at Object.Module._extensions..node (internal/modules/cjs/loader.js:1057:18)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at bindings (/home/pi/.node-red/node_modules/@serialport/bindings/node_modules/bindings/bindings.js:112:48)
at Object. (/home/pi/.node-red/node_modules/@serialport/bindings/lib/linux.js:2:36)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/pi/.node-red/node_modules/@serialport/bindings/lib/index.js:14:22)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/pi/.node-red/node_modules/serialport/lib/index.js:2:17)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/pi/.node-red/node_modules/firmata/lib/com.js:44:18)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/pi/.node-red/node_modules/firmata/lib/firmata.js:3:40)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
10 Feb 18:58:49 - [warn] ------------------------------------------------------
10 Feb 18:58:49 - [warn] [node-red-node-arduino/arduino] Missing serialport dependency
10 Feb 18:58:49 - [warn] [node-red-node-sqlite/sqlite] Error: Cannot find module '/home/pi/.node-red/node_modules/sqlite3/lib/binding/node-v72-linux-arm/node_sqlite3.node'
Require stack:

  • /home/pi/.node-red/node_modules/sqlite3/lib/sqlite3.js
  • /home/pi/.node-red/node_modules/node-red-node-sqlite/sqlite.js
  • /usr/lib/node_modules/node-red/node_modules/@node-red/registry/lib/loader.js
  • /usr/lib/node_modules/node-red/node_modules/@node-red/registry/lib/index.js
  • /usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/index.js
  • /usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/index.js
  • /usr/lib/node_modules/node-red/lib/red.js
  • /usr/lib/node_modules/node-red/red.js
    10 Feb 18:58:49 - [warn] ------------------------------------------------------
    10 Feb 18:58:49 - [info] Settings file : /home/pi/.node-red/settings.js
    10 Feb 18:58:49 - [info] HTTP Static : /home/pi/.node-red/public
    10 Feb 18:58:49 - [info] Context store : 'default' [module=localfilesystem]
    10 Feb 18:58:49 - [info] User directory : /home/pi/.node-red
    10 Feb 18:58:49 - [warn] Projects disabled : set editorTheme.projects.enabled=true to enable
    10 Feb 18:58:49 - [info] Flows file : /home/pi/.node-red/flows.json
    10 Feb 18:58:49 - [info] Server now running at http://127.0.0.1:1880/
    10 Feb 18:58:50 - [info] Waiting for missing types to be registered:
    10 Feb 18:58:50 - [info] - sqlitedb
    10 Feb 18:58:50 - [info] - sqlite

Next, I tried going to .node-red folder and npn rebuild..... it had another go at recompiling SQLITE3 - not sure why the NR script can warn about that but not do it... (VERY slow). Welkl, thata all looked good... but did not get SQLITE3 back up....

But at least Node-Red was running and I had a palette Manager - which (while one dialog box was griping about missing qqlitedb and sqlite) wanted to try upgrading SQLITE to v0.5

I did that and this time on starting Node-Red again I was erduced to

pi@rpi419buster:~:19:11[0]> node-red
10 Feb 19:11:33 - [info]

Welcome to Node-RED

10 Feb 19:11:33 - [info] Node-RED version: v1.2.9
10 Feb 19:11:33 - [info] Node.js version: v12.20.1
10 Feb 19:11:33 - [info] Linux 5.10.11-v8+ arm LE
10 Feb 19:11:34 - [info] Loading palette nodes
10 Feb 19:11:38 - [info] Worldmap version 2.6.0
10 Feb 19:11:38 - [info] Dashboard version 2.25.0 started at /ui
It looks like serialport didn't install properly.
More information can be found here https://serialport.io/docs/guide-installation
The result of requiring the package is: undefined
Error: The module '/home/pi/.node-red/node_modules/@serialport/bindings/build/Release/bindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 64. This version of Node.js requires
NODE_MODULE_VERSION 72. Please try re-compiling or re-installing
the module (for instance, using npm rebuild or npm install).
at Object.Module._extensions..node (internal/modules/cjs/loader.js:1057:18)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at bindings (/home/pi/.node-red/node_modules/@serialport/bindings/node_modules/bindings/bindings.js:112:48)
at Object. (/home/pi/.node-red/node_modules/@serialport/bindings/lib/linux.js:2:36)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/pi/.node-red/node_modules/@serialport/bindings/lib/index.js:14:22)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/pi/.node-red/node_modules/serialport/lib/index.js:2:17)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/pi/.node-red/node_modules/firmata/lib/com.js:44:18)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (/home/pi/.node-red/node_modules/firmata/lib/firmata.js:3:40)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
10 Feb 19:11:39 - [warn] ------------------------------------------------------
10 Feb 19:11:39 - [warn] [node-red-node-arduino/arduino] Missing serialport dependency
10 Feb 19:11:39 - [warn] ------------------------------------------------------
10 Feb 19:11:39 - [warn] Missing node modules:
10 Feb 19:11:39 - [warn] - node-red-node-sqlite (0.4.3): sqlitedb, sqlite
10 Feb 19:11:39 - [info] Removing modules from config

So I rebooted Node-Red - and got this

10 Feb 19:12:33 - [warn] [node-red-node-arduino/arduino] Missing serialport dependency

and

10 Feb 19:12:34 - [info] Waiting for missing types to be registered:
10 Feb 19:12:34 - [info] - sqlitedb
10 Feb 19:12:34 - [info] - sqlite

I thought the serialport issues were resolved ages ago...

That looks like the arduino node. Have you done an npm update ? What does npm outdated report ?

Hi DCJAY - I'm tearing my last hears out here... Back in November I believe - you told me to use the script

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Which I've been using for quite some time - but to add in -

node-red-stop
cd /home/pi/.node-red
npm rebuild sqlite3
node-red-start

So after I had the problem today with my AEGES install failing and Palette Manager disappearing, I've used your script and the 4-liner as well, I blogged that working back in November - but here we are again - it didn't work this time - the palette manager is back up and the aeges now installs - .npm ver now reports 6.14.10

In total it looks like (missing out stuff that doesnt look important)

It looks like serialport didn't install properly.
More information can be found here https://serialport.io/docs/guide-installation
The result of requiring the package is: undefined
Error: The module '/home/pi/.node-red/node_modules/@serialport/bindings/build/Release/bindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 64. This version of Node.js requires
NODE_MODULE_VERSION 72. Please try re-compiling or re-installing
the module (for instance, using npm rebuild or npm install).

and

10 Feb 19:29:33 - [info] Waiting for missing types to be registered:
10 Feb 19:29:33 - [info] - sqlitedb
10 Feb 19:29:33 - [info] - sqlite

I'm trying to keep this short - and earlier this evening I already did NPM rebuild.

Oh, and "npm outdated" shows:

Package Current Wanted Latest Location
dateformat 3.0.3 3.0.3 4.5.1 global
node-red-node-sqlite 0.3.7 0.3.7 0.5.0 global

Latest:

In node-red - trying to upgrade node-red-node-sqlite in palette manager resulted in the command line showing

--- Upgrading module: node-red-node-sqlite to version: 0.5.0

but no further while NR came back affter a few minutes to say once again "update to 0.5.0"

REbooting NR made no difference. Still suggesting upgrade to 0.5.0 - and node-red-node-arduino is missing serial port dependency - yet further down the page - node-red-node-serialport seems fine - no updates requested.

It'd getting worse…

And this is the first time I've ever seen this…. Palette Manager shows under (install) that Dashboard is installed = but in NODES there is no sign of dashboard and if I pull up my phone links to the dashboard r the PC link – 192.168.1.19:1880/ui - I get "Welcome to the Node-RED Dashboard – please add some UI nodes to your flow and deploy" – yet in 192.168.1.19:1880 web page my dashboard nodes are all intact.

Pete

Def something odd going on - it seems like you have two installs or something... as the log shows 10 Feb 19:11:38 - [info] Dashboard version 2.25.0 started at /ui
and yet npm outdated doesn't show that 2.27 is available.
I would (from the .node-red directory) npm uninstall node-red-node-serialport node-red-node-arduino node-red-node-sqlite - check that the log then starts up clean (even though they will now be missing... so don't deploy etc) - and then reinstall them (and maybe not the arduino one if you don't need it).

Hi Dave

I just did exactly what you said (in the /home/pi/.node-red folder)—no change - oh and I was wrong about dashboard, I was looking for node-red-node-dashboard, not node-red-dashboard…. It DOES show in palette Manager… but my dashboards are dead.

Now:

Welcome to Node-RED

Are one of more nodes installed globally possibly? So when you rebuilt it did not rebuild them?

Colin - thanks for responding - I went into a blind panic. Thankfully I had a backup from maybe a week ago but didn't want to lose changes otherwise not documented. So, I exported all the current flows to a file on my desktop, went to the week old clone, deleted all its flows and imported the file file I'd saved to the desktop.

So, everything works, but whether it will end up the same next time I try to install something with palette manager remains to be seen - I've now cloned this apparently working setup and will give it a good night's sleep before delving deeper.

I suggest taking a new SD card image and then trying to install the problematic node again and see if it causes a problem.
Also it seemed that running the upgrade script may have induced other problems so it might be worth trying that again to see what happens. Before that run
npm list -g --depth=0
to check what is installed globally. I think it should generally just be node-red and npm unless you are on a very old version of node-red.

Thanks Colin – I've been working on this since the early hours and only just seen your post, sorry – I went the hard way around – I found a version of my SSD (not SD) from around November before I upgrade to the 64 bit Raspbian (I'm beginning to wonder if that was a mistake) – took a copy of my flows and after deleting the flows on the old SSD, added the current ones. Suffice it to say that I spent quite a few hours getting back to square 1 – including updating the DASHBOARD node.. but I'm pretty much back into a working situation -the only thing I can't yet fix is – in NR Dashboard where I use the text input node for RGB control, in color picker mode, there was some change I made recently to use a paintbrush

That is currently ill-formed- it was working perfectly. I have no notes of what I did recently to get that to format properly… I hope the attachment shows up inhere in case anyone has any udea.

image001.png

Sorry, I only use the dashboard in a limited way, so not much help on this I am afraid.

Hi Peter, The old thread where it was discussed is here:

I did by my own instructions and it worked quit well.

<style>
#Home_CHART_cards > md-card > md-input-container {
   padding:0 !important;
   margin:0 !important;
   border-radius:20px;
   background-color:var(--nr-dashboard-widgetColor);
}
#Home_CHART_cards > md-card > md-input-container > label{
    position: relative;
    top: 15px;
}

.nr-dashboard-theme .nr-dashboard-textinput input[type="color"]{
    border: none !important;
    width: 48px;
    height: 48px;
    margin: 0 !important;
    padding: 10% !important;
}
</style>

of course the "Home_CHART_cards" must be changed to target correct tab and group

Thanks for your help anyway Colin – I was really desperate earlier – my entire home control relies on NR and with clones it has been utterly reliable up to now for yeays except for upgrades to node which mean recompiles of some nodes. Really, hardly any other tools erquire such work when upgrading. Anyway aside from that dashboard colour picker issue my setup is fine now – I just wish I'd made notes of how I got that paintbrush formatted. Some kind soul (I didn’t make a note of who) told me how to improve that text box input to get yje paintbrush and format it – but somethings not right here… it WORKS – just look silly :blush: something to do with the format – if anyone else looking in has any idea feel free to chip in…

I use git for keeping a history of all my node red installations. It is easy to commit after each significant change, sometimes several times a day, and before installing new nodes or anything like that.
I keep the master repositories in private repositories on github so I can always be sure that I am never more than a few hours out of date should a disaster occur.