Skip to content

Instantly share code, notes, and snippets.

@Belphemur
Last active April 22, 2023 22:08
  • Star 6 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save Belphemur/cf91100f81f2b37b3e94 to your computer and use it in GitHub Desktop.
#!/bin/bash
### BEGIN INIT INFO
# Provides: node-red
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop the node-red server
### END INIT INFO
# Can be downloaded and installed in one go by using this command
# sudo wget -O /tmp/download https://gist.github.com/Belphemur/cf91100f81f2b37b3e94/download && sudo tar -zxf /tmp/download --strip-components 1 -C /etc/init.d && sudo chmod +x /etc/init.d/node-red && sudo update-rc.d node-red defaults
# User that launches node-RED (it's advised to create a new user for Node-RED)
# You can do : sudo useradd node-red
# then change the USER=root by USER=node-red
# if you change the user, don't forget to also change the ownership of the log file (and create it if it doesn't exist):
# sudo chown NEWUSER /var/log/node-red.log
# else the log won't be writtable
USER=root
# The location of Node-RED configuration, not mandatory, leave empty/commented to let
# Node-RED decides.
#USER_DIR='/home/pi/node-red/'
# DONT'T CHANGE unless you know what you're doing
NAME=node-red
DAEMON=/usr/local/bin/node-red-pi
OPTIONS="--max-old-space-size=128"
if [ -n "$USER_DIR" ]; then
OPTIONS="$OPTIONS --userDir=$USER_DIR"
fi
LOG='/var/log/node-red.log'
PIDFILE=/var/run/node-red.pid
. /lib/lsb/init-functions
start_daemon () {
start-stop-daemon --start --background \
--chuid $USER --name $NAME \
$START_STOP_OPTIONS --make-pidfile --pidfile $PIDFILE \
--startas /bin/bash -- -c "exec $DAEMON $OPTIONS >> $LOG 2>&1"
log_end_msg 0
}
case "$1" in
start)
log_daemon_msg "Starting daemon" "$NAME"
start_daemon
;;
stop)
log_daemon_msg "Stopping daemon" "$NAME"
start-stop-daemon --stop --quiet \
--chuid $USER \
--exec $DAEMON --pidfile $PIDFILE --retry 30 \
--oknodo || log_end_msg $?
log_end_msg 0
;;
restart)
$0 stop
sleep 5
$0 start
;;
status)
status_of_proc "$DAEMON" "$NAME"
exit $?
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
@K2AAE
Copy link

K2AAE commented Oct 12, 2014

where does this script tell node what script to load? node red.js

@gregtoth
Copy link

red.js is called out in $OPTIONS string which is used when calling start-stop-daemon in start_daemon()

@davidoc85
Copy link

davidoc85 commented Dec 8, 2016

How can I get this to run in Ubuntu 14.04?
Created the script manually inside init.d, and pasted the text from here.
Changed:
User=Root to User=node-red (which is a sudo user)
DAEMON=/usr/local/bin/node-red-pi for DAEMON=usr/bin/node-red as this is what I get while typing which node-red
Then run from init.d sudo chmod a+x node-red
Tested the script by running sudo ./node-red start and the daemon says that it starts, however it is not running.

Am I missing something? Is there an easier way to launch using upstart in Ubuntu 14.04 (there is no systemd)?

@vskbot007
Copy link

hey @davidoc85 have you found any solution for your issue, im actually facing this issue right now .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment