-
-
Save apearson/56a2cd137099dbeaf6683ef99aa43ce0 to your computer and use it in GitHub Desktop.
#!/bin/sh | |
# | |
# PROVIDE: nodered | |
# REQUIRE: LOGIN | |
# KEYWORD: shutdown | |
# Author: Andrew Pearson (apearson.io) | |
# Version: 1.0.2 | |
# Description: | |
# This script runs Node-RED as a service under the supplied user on boot | |
# How to use: | |
# Place this file in /usr/local/etc/rc.d/ | |
# Add nodered_enable="YES" to /etc/rc.config | |
# (Optional) To run as non-root, add nodered_runAs="node-red" to /etc/rc.config | |
# (Optional) To pass Node-RED args, add nodered_args="" to /etc/rc.config | |
# Freebsd rc library | |
. /etc/rc.subr | |
# General Info | |
name="nodered" # Safe name of program | |
program_name="node-red" # Name of exec | |
title="Node-RED" # Title to display in top/htop | |
# RC.config vars | |
load_rc_config $name # Loading rc config vars | |
: ${nodered_enable="NO"} # Default: Do not enable Node-RED | |
: ${nodered_runAs="root"} # Default: Run Node-RED as root | |
# Freebsd Setup | |
rcvar=nodered_enable # Enables the rc.conf YES/NO flag | |
pidfile="/var/run/${program_name}.pid" # File that allows the system to keep track of node-red status | |
# Env Setup | |
export HOME=$( getent passwd "$nodered_runAs" | cut -d: -f6 ) # Gets the home directory of the runAs user | |
# Command Setup | |
exec_path="/usr/local/bin/${program_name}" # Path to the node-red exec, /usr/local/bin/ when installed globally | |
output_file="/var/log/${program_name}.log" # Path to Node-RED output file | |
# Command | |
command="/usr/sbin/daemon" | |
command_args="-r -t ${title} -u ${nodered_runAs} -o ${output_file} -P ${pidfile} ${exec_path} ${nodered_args}" | |
# Loading Config | |
load_rc_config ${name} | |
run_rc_command "$1" |
@jprovan If you open a process viewer do you see a nodejs service with a parent of a daemon service? Or do you just see a daemon service or do you see neither?
Anything in the output logs?
Well, I am sorry to have bothered you. I retraced my steps and it is working properly. Thank you for responding so quickly.
@jprovan No worries! Glad it's working
is it just me or am I missing something, because as far as I can tell node-red is running as root.
That surely can't be right, can it?
never mind, found the rc.conf setting I was missing.
is it just me or am I missing something, because as far as I can tell node-red is running as root. That surely can't be right, can it?
never mind, found the rc.conf setting I was missing.
Glad you found the rc.conf setting. Is there anything I could to make that setting more visible?
is it just me or am I missing something, because as far as I can tell node-red is running as root. That surely can't be right, can it?
never mind, found the rc.conf setting I was missing.Glad you found the rc.conf setting. Is there anything I could to make that setting more visible?
Could make it default so that you only have to change the user if you don't want it to run as user nodered.
This is in reply to @kitten77.
I don't think its a good idea to change the default user in a script like this, since the Freebsd install instructions don't require the creation of a non-root user. While this is good practice and highly recommended, there is no guarantee that each of us will create that non-root user the same way, thus breaking the script and causing more work for @apearson.
I agree with @RanceH on this. We can't depend on the nodered_runAs
user being created before and the people creating the user will be the ones to read the comment and know how to change the nodered_runAs
user
Hello, can someone help me instaling it on TrueNAS core 13.1?
What have you tried @EliasZoockt?
I tried to run the script and than to understand the comments but i dont know what i have to do.
- Did you
Place this file in /usr/local/etc/rc.d/
- Then
Add nodered_enable="YES" to /etc/rc.config
- Then
service start nodered
how do i put the file in the path with the shell?
@EliasZoockt email me at noderedhelp at {myusername} dot io
I am on FreeBSD 13.1. I implemented your RC script. I enabled nodered with "sudo sysrc nodered_enable="YES". I even did a "sudo chmod +x /usr/local/etc/rc.d/nodered".
The system says that nodered is running, but I do not get a node-red gui until I do a "sudo service nodered restart".
Any ideas what I may have overlooked ?