I use sudo systemctl enable nodered.service command to start Node-Red on boot. I then start Chromium in kiosk mode and use the Node-Red dashboard as a HMI.
I have had a first ever occurrence (that I am aware of) of Node-Red process stopping, or crashing. I have checked for Node-Red using pgrep -f node and confirmed there is no PID for the process. Chromium is still running but showing a blank screen
There is no terminal window showing the Node-Red logs. I have checked sysmlog and I can't find anything in reference to Node-Red.
I have run journalctl -u nodered -n 50 and its empty
I have run sudo systemctl status nodered and get the following which seems to imply something killed the Node-Red process
How to make sure Node-Red will restart automatically if it ever shuts down again? Should I be using PM2 according to this to start and manage Node-Red? Starting Node-RED on boot : Node-RED Will this cause any other issues on RPI with Node-Red? Or is there other options?
It stopped 5 days ago, so it is probably too late to find what killed node-red.
Please post the systemd script for node red. That is the file /lib/systemd/system/nodered.service (the systemctl status command you showed tells you that is it) so we can check it is configured to restart.
No, systemd, which is what you are using, is the right way.
The timeout error suggests that it failed to restart because node-red took too long to start up again, but I don't know why that would be.
In future, if possible please copy/paste logs and terminal output rather than screenshot.
node-red-start will start it using systemd, and show the logs, but you don't then need to keep the window open. If node red stops then you can use journalctl to inspect the log.
It was for 100% sure running last night when I went to bed and was not running when I woke up this morning.
Maybe that log from 5 days ago was me killing the process on purpose when I had issues with an infinte loop......
This is the first time I have seen it crash in years of it running, I dont know if running a terminal to try and capture the log would be useful. And journalctl is empty, I checked that.
Understand the screenshot thing, the Node-Red device is not connected to internet and its a hassle to copy things to USB thumb drive. A photo is easier, sorry about that.
systemd script below
# systemd service file to start Node-RED
[Unit]
Description=Node-RED graphical event wiring tool
Wants=network.target
Documentation=http://nodered.org/docs/hardware/raspberrypi.html
[Service]
Type=simple
# Run as normal pi user - change to the user name you wish to run Node-RED as
User=pi
Group=pi
WorkingDirectory=/home/pi
Environment="NODE_OPTIONS=--max_old_space_size=2048"
# define an optional environment file in Node-RED's user directory to set custom variables externally
EnvironmentFile=-/home/pi/.node-red/EnvironmentFile
# uncomment and edit next line if you need an http proxy
#Environment="HTTP_PROXY=my.httpproxy.server.address"
# uncomment the next line for a more verbose log output
#Environment="NODE_RED_OPTIONS=-v"
# uncomment next line if you need to wait for time sync before starting
#ExecStartPre=/bin/bash -c '/bin/journalctl -b -u systemd-timesyncd | /bin/grep -q "systemd-timesyncd.* Synchronized to time server"'
ExecStart=/usr/bin/env node-red-pi $NODE_OPTIONS $NODE_RED_OPTIONS
#ExecStart=/usr/bin/env node $NODE_OPTIONS red.js $NODE_RED_OPTIONS
# Use SIGINT to stop
KillSignal=SIGINT
# Auto restart on crash
Restart=on-failure
RestartSec=20
# Tag things in the log
SyslogIdentifier=Node-RED
#StandardOutput=syslog
[Install]
WantedBy=multi-user.target
Node-Red is normally started automatically on startup using sudo systemctl enable nodered.service. I can't remember, but I might have killed Node-Red when I had infinite loop issue and restarted in command line Node-Red-Start or maybe Node-Red --Safe and I may not have rebooted since then. So I gather this line of questioning is saying the Systemd was not in charge of Node-Red, when it crashed nothing restarted it.
So I guess I should restart with command line and keep the log open, maybe it is crashing more frequently but because Systemd is normally in charge it just restarts it, but I am not aware of the issue.
When I type journalctl -u nodered -f it says a single line -- Logs begin at Mon 2024-03-11 12:09:47
When I type systemctl status nodered it shows the black diaglog box above showing it failed
Node-Red-Start the system started Node-Red as normal, left it running all day, no problem Node-Red-Stop the system stops, but something slightly strange that just occurred to me.
I have a touchscreen connected which is powered via a relay connected to the Pi. The screen turning on is triggered by Node-Red.
When I type Node-Red-Stop it turns the touchscreen off, which makes sense as Node-Red wont hold the relay closed.
But when Node-Red stopped working as per original post, the screen was still on. A bit odd...... Node-Red not running but screen relay held on...... and come to think of it, when I had the code entering an infinite loop by accident last week, when I typed Node-Red-Stop it would also allow the screen to stay on.
This is perplexing me a bit in retrospect, I hope this problem description makes sense.