- Starting Node-RED on boot
- Raspberry Pi, Debian, Ubuntu
- RPM based Linux, RedHat, Fedora, CentOS
- Other Linux, OSX
- Using PM2
- 1. Install PM2
- 2. Determine the exact location of the node-red command.
- 3. Tell PM2 to run Node-RED
- 4. Tell PM2 to run on boot
- 5. Reboot
- Windows
- Alternative options
- dceejay / nssm.md
- This comment has been minimized.
- natcl commented Jan 21, 2016
- This comment has been minimized.
- bloigge commented Apr 13, 2016
- Install node-red
- Install pm2
- Install and config pm2-windows-startup package :
- Locate the Node-Red red.js File and add it to pm2:
- This comment has been minimized.
- alex3305 commented Dec 3, 2016
- This comment has been minimized.
- qlartpg commented Aug 7, 2017 •
- This comment has been minimized.
- autumnharmony commented Aug 22, 2017 •
- This comment has been minimized.
- KL-AU-S commented Feb 15, 2019
- This comment has been minimized.
- wimmatthijs commented Jun 13, 2019
- Install node-red
- Install pm2
- Install and config pm2-windows-startup package :
- Locate the Node-Red red.js File and add it to pm2:
- This comment has been minimized.
- Aklex1 commented Mar 11, 2020
- This comment has been minimized.
- aniston commented Oct 28, 2020 •
- This comment has been minimized.
- amilanov75 commented Nov 19, 2020
- This comment has been minimized.
- ELGUEROUEL commented Mar 24, 2021
- This comment has been minimized.
- Cappe73 commented Apr 14, 2021
- Install node-red
- Install pm2
- Install and config pm2-windows-startup package :
- Locate the Node-Red red.js File and add it to pm2:
- Автозагрузка nodejs на windows 10?
- Знакомство с Node-RED и потоковое программирование в Yandex IoT Core
- Кратко о Node-RED, его истории, создателях и сообществе
- Почему проект называется Node-RED?
- Постановка задачи — интеграция Node-RED c Yandex IoT Core
- Создание облачной среды и установка Node-RED
- Создание ВМ
- Подключение к ВМ
- Установка Node-RED
- Подготовка и настройка сервиса Yandex IoT Core
- Пример создания простого приложения в Node-RED
- В качестве результатов и краткого заключения
- Ссылки на полезные материалы
Starting Node-RED on boot
There are many methods of starting, stopping and monitoring applications at boot time. This guide highlights some of the possible ways of doing it.
Raspberry Pi, Debian, Ubuntu
The Raspberry Pi install script we provide can be used on any Debian-like operating system.
This script installs Node-RED as a systemd service. For more information, read the Running on Raspberry Pi guide.
If you are not using Raspbian, you may need to edit the service file to suit your local user id and environment. Details for how to do that are available here.
RPM based Linux, RedHat, Fedora, CentOS
We also provide an install script for RPM based linux available here, that also sets up systemd.
Other Linux, OSX
The guide below sets out what we believe to be the most straight-forward for the majority of users. For Windows, PM2 does not autorun as a service — you may prefer the NSSM option below.
Using PM2
PM2 is a process manager for Node.js. It makes it easy to run applications on boot and ensure they are restarted if necessary.
1. Install PM2
2. Determine the exact location of the node-red command.
If you have done a global install of node-red, then on Linux/OS X the node-red command will probably be either: /usr/bin/node-red or /usr/local/bin/node-red . The command which node-red can be used to confirm the location.
If you have done a local install, it will be node_modules/node-red/bin/node-red , relative to where you ran npm install from.
3. Tell PM2 to run Node-RED
The following command tells PM2 to run Node-RED, assuming /usr/bin/node-red as the location of the node-red command.
The — argument must appear before any arguments you want to pass to node-red.
This will start Node-RED in the background. You can view information about the process and access the log output using the commands:
More information about managing processes under PM2 is available here.
4. Tell PM2 to run on boot
PM2 is able to generate and configure a startup script suitable for the platform it is being run on.
Run these commands and follow the instructions it provides:
for newer Linux systems that use systemd use
5. Reboot
Finally, reboot and check everything starts as expected.
Windows
PM2 does not autorun as a service on Windows. An alternative option is to use NSSM, an example of which is available from the community link below.
Alternative options
There are many alternative approaches. The following are some of those created by members of the community.
Node-RED: Low-code programming for event-driven applications.
dceejay / nssm.md
Running Node-RED as a service on Windows using NSSM
These instructions assume you installed Node-RED from an administrator enabled command prompt using the npm install -g node-red command to do so.
As an administrator, install nssm from https://nssm.cc/download
And then from the directory where you installed nssm, run the commands
You can edit the service using the GUI to the configuration, add extra parameters, etc.
The log will be written to c:\temp\node-red.log (see line 3)
For further options read the nssm usage page.
This comment has been minimized.
Copy link Quote reply
natcl commented Jan 21, 2016
For anybody having troubles with this, make sure you create the C:\temp directory before running the service.
This comment has been minimized.
Copy link Quote reply
bloigge commented Apr 13, 2016
Another way for autostarting NodeRed in PM2 as a Serivce in Windows:
Everything in command-line as Admin:
Install node-red
npm install -g node-red
Install pm2
npm install pm2 -g
Install and config pm2-windows-startup package :
npm install pm2-windows-startup -g
pm2-startup install
pm2 save
Locate the Node-Red red.js File and add it to pm2:
pm2 start C:\Users\ \AppData\Roaming\npm\node_modules\node-red\red.js —save
This comment has been minimized.
Copy link Quote reply
alex3305 commented Dec 3, 2016
Note: Running this from a Powershell prompt will not work. Escaping of quotes will fail and the commands will all get borked.
This comment has been minimized.
Copy link Quote reply
qlartpg commented Aug 7, 2017 •
This will not work if the directory or username have a space in it. It will run, but if you look at the log, it creates new folder after where the space will be. Anyone have solution? Thanks.
Update:
Don’t run this:
nssm set Node-RED AppParameters «-u c:\Users\»%USERNAME%».node-red > c:\temp\node-red.log»
run: nssm edit Node-Red
and make sure the parameters is blank and and it worked for me.
This comment has been minimized.
Copy link Quote reply
autumnharmony commented Aug 22, 2017 •
Hi, i’m trying to lock windows workstation by executing «rundll32.exe user32.dll,LockWorkStation». I’m using exec node.
In case of nodered is running as service it’s failing.
Could someone tell me why ?
https://msdn.microsoft.com/en-us/library/windows/desktop/aa376875(v=vs.85).aspx
The LockWorkStation function is callable only by processes running on the interactive desktop. In addition, the user must be logged on, and the workstation cannot already be locked.
Could someone tell me about alternative ways ?
This comment has been minimized.
Copy link Quote reply
KL-AU-S commented Feb 15, 2019
Hi,
i got it running with nssm and the redirection of the output. I used the following Node-Red AppParameters:
-u c:\Users»%USERNAME%».node-red 2> C:\temp\node-red.log 1>&2
In this case at first stderr will be redirected after that stdout will be redirected to the same file as stderr.
This comment has been minimized.
Copy link Quote reply
wimmatthijs commented Jun 13, 2019
Another way for autostarting NodeRed in PM2 as a Serivce in Windows:
Everything in command-line as Admin:
Install node-red
npm install -g node-red
Install pm2
npm install pm2 -g
Install and config pm2-windows-startup package :
npm install pm2-windows-startup -g
pm2-startup install
pm2 save
Locate the Node-Red red.js File and add it to pm2:
pm2 start C:\Users\ \AppData\Roaming\npm\node_modules\node-red\red.js —save
thanks, works well
This comment has been minimized.
Copy link Quote reply
Aklex1 commented Mar 11, 2020
pm2 start C:\Users\ \AppData\Roaming\npm\node_modules\node-red\red.js -save
This comment has been minimized.
Copy link Quote reply
aniston commented Oct 28, 2020 •
pm2 start C:\Users\ \AppData\Roaming\npm\node_modules\node-red\red.js —save
on W10 that won’t work unless preceded by — hence that becomes
pm2 start C:\Users\ \AppData\Roaming\npm\node_modules\node-red\red.js — —save
My flavor to running node-red as a service was the combination of pm2 and pm2-windows-service
- pm2-windows-service actually handles only the pm2 as a visible windows service.
- after that pm2 kicks in and handles it’s own configuration.
Sorry to have jumped in on an thread that has to do with the NSSM manager !
This comment has been minimized.
Copy link Quote reply
amilanov75 commented Nov 19, 2020
Hey, I setup the PM2 service described above by @bloggie. Thank you BTW for your solution!
When I was running from the command prompt and I went to safely shut down ie.. ctrl+C, sometimes it would take a good few seconds before it shut down or I’d even have to hit ctrl+c a couple of times before it shut down.
When I stop the service using:
cmd /k pm2 stop C:\Users\ubiquitous\AppData\Roaming\npm\node_modules\node-red\red.js pause
It stops the service almost instantly every single time.
I’m just wondering if the way I am stopping the service is the right way for it to be «safe»
This comment has been minimized.
Copy link Quote reply
ELGUEROUEL commented Mar 24, 2021
thanks it is working for me
As an administrator, install nssm from https://nssm.cc/download
And then from the directory where you installed nssm, run the commands
mkdir c:\temp
nssm install Node-RED «c:\Users\»%USERNAME%»\AppData\Roaming\npm\node-red.cmd»
nssm set Node-RED AppDirectory «c:\Users\»%USERNAME%».node-red»
nssm set Node-RED AppParameters «-u c:\Users\»%USERNAME%».node-red > c:\temp\node-red.log»
nssm set Node-RED Description «A wiring tool for the Internet of Things»
This comment has been minimized.
Copy link Quote reply
Cappe73 commented Apr 14, 2021
Another way for autostarting NodeRed in PM2 as a Serivce in Windows:
Everything in command-line as Admin:
Install node-red
npm install -g node-red
Install pm2
npm install pm2 -g
Install and config pm2-windows-startup package :
npm install pm2-windows-startup -g
pm2-startup install
pm2 save
Locate the Node-Red red.js File and add it to pm2:
Автозагрузка nodejs на windows 10?
Салют коллеги. Два вопроса:
1) Разработку приходится вести на Windows 10 и лень каждый раз после включения компа запускать локальный сервер (если я правильно это называю), типа переходить в директорию запускать файл через «node index.js». Как сделать чтобы nodejs сам запускал этот файл как процесс при включении винды? И в случае сбоев как настроить автоматический рестарт?
2) На линуксе это реализовано через forever (рестарт приложения), но будет ли forever работать если я перезапущу VDS сервер? Эксперимент ставить не охота, сервер боевой и с уже большим аптаймом))
- Вопрос задан более трёх лет назад
- 1091 просмотр
вы так же не тратите неделю на изучение новой библиотеки взамен минутного вопроса
те команды, которые вводите каждый раз в консоль
— для запуска ноды
— перехода в папку проекта
— запуска сервера
напишите их в текстовый документ
и сохраните этот документ с расширением .bat
далее, добавьте этот файл в автозагрузку windows
тем самым, при запуске windows будет выполняться скрипт, который будет набирать команды и запускать сервер
Вот вы когда даёте такие очевидные ответы вы понимаете, что раз человек задаёт подобные вопросы, то проблема не очевидна? Вы с тем же успехом могли дать совет «Читай!» или «Гугли!»
Я понимаю, что «автозагрузка» намекает на автозапуск файла, но каким образом интересно .js файл можно автозапустить? Это уже не очевидно.
И в Windows 10 больше нет «Пуск -> Автозагрузка», но обходными путями это можно сделать.
> Я понимаю, что «автозагрузка» намекает на автозапуск файла, но каким образом интересно .js файл можно автозапустить?
1) Просто положив его в каталог — винда автоматически запустит ассоциированное приложение (файловые ассоциации задаются в панели управления/реестре или специальными более продвинутыми утилитами);
2) Создать ярлык на приложение и в командной строке указать запускаемый файл;
3) Создать *.bat файл, который запустит нужное приложение.
> И в Windows 10 больше нет «Пуск -> Автозагрузка», но обходными путями это можно сделать.
Мда, косяки десятки, хотя сам каталог на месте: `%user%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup`
Знакомство с Node-RED и потоковое программирование в Yandex IoT Core
В этой статье я хочу разобрать один из самых популярных опенсорс-инструментов, Node-RED, с точки зрения создания простых прототипов приложений с минимумом программирования. Проверим гипотезу о простоте и удобстве таких средств, а также рассмотрим взаимодействие Node-RED с облачной платформой на примере Yandex.Cloud.
Написано уже немало статей на тему того, как средства визуального программирования помогают строить приложения интернета вещей, управлять устройствами и автоматизировать дом (управление освещением, автоматизация квартиры — часть 1 и часть 2). Но мало кто упоминает о другом полезном свойстве подобных иструментов. Это быстрое прототипирование, то есть эмуляция самих устройств без использования микроконтроллеров и визуализация результатов их работы без глубоких познаний в программировании или веб-дизайне.
Есть ряд ограничений, связанных с хранением данных клиентов в облачных дата-центрах других государств. Поэтому у пользователей зарубежных ресурсов все чаще появляется устойчивое желание использовать гибридные подходы, применять локализованные облачные сервисы, расположенные на территории России. В таких случаях для реализации сценариев интернета вещей вполне оправдано объединение открытых технологий IBM с готовым облачным сервисом Яндекса.
Кратко о Node-RED, его истории, создателях и сообществе
Как гласит первоисточник, Node-RED — это инструмент потокового программирования, первоначально разработанный командой IBM Emerging Technology Services и в настоящее время являющийся частью JS Foundation.
В качестве ключевой составляющей Node-RED выступает парадигма потокового программирования, которое было изобретено в 70-х Джеем Полом Моррисоном. Потоковое программирование — это способ описания поведения приложения в виде сети черных ящиков или «узлов», как они называются в Node-RED. Каждый узел имеет четкую цель — к нему поступают некоторые данные, он что-то делает с этими данными, а затем передает их на следующий узел. Сеть отвечает за поток данных между узлами.
Эта модель отлично подходит для того, чтобы представить ее визуально: так она становится более доступной для широкого круга пользователей. Если кто-то пытается разобраться в проблеме, он может разбить задачу на отдельные шаги, взглянуть на поток и понять, что он делает, без необходимости разбираться в отдельных строках кода в каждом узле.
Node-RED работает в среде исполнения Node.js, а для создания или редактирования потока («Flow») используется браузер. В браузере вы можете создавать свое приложение путем перетаскивания необходимых узлов («Node») из палитры в рабочую область и соединять их вместе. Одним кликом по кнопке «Deploy» приложение разворачивается в среде исполнения и запускается.
Палитра узлов может быть легко расширена путем установки новых узлов, созданных сообществом, а созданные вами потоки могут быть легко переданы в виде файлов JSON.
Node-RED начал свою жизнь в начале 2013 года как совместный проект Ника О’Лири и Дэйва Конвея-Джонса из группы IBM Emerging Technology Services.
Проект стартовал как подтверждение концепции визуализации и манипулирования мэппингами между топиками сообщений в протоколе Message Queuing Telemetry Transport (MQTT). Node-RED быстро стал более универсальным инструментом, который можно было легко расширять в любом направлении.
Исходный код проекта был открыт в сентябре 2013 года. С тех пор он разрабатывался в открытом виде, кульминацией развития стало признание Node-RED одним из фундаментальных проектов JS Foundation в октябре 2016 года.
Почему проект называется Node-RED?
Со слов авторов:
Название было веселой игрой слов, звучащих как «Code Red».
Это название приклеилось к проекту и стало существенным шагом вперед по сравнению с тем, как он назывался в первые несколько дней.
Часть «Node» отражает суть модели потокового программирования (поток/узел) и основную среду выполнения Node.JS.
Окончательного решения о том, что же означает часть «RED», принято так и не было.
Одно из предложений — «Rapid Event Developer» (быстрый разработчик событий), но мы никогда не чувствовали себя обязанными что-либо формализовать.
Мы придерживаемся названия Node-RED.»
Node-RED предоставляется по лицензии Apache 2.0. Важно понимать и осознавать условия лицензии — по этой ссылке есть краткая выдержка с основными свойствами.
Лицензия разрешает коммерческое использование, но при этом накладывает и ряд ограничений. Вот основные из них: при использовании торговой марки Node-RED (принадлежащей OpenJS Foundation) нельзя ее искажать; кроме того, есть ограничение ответственности (Liability/Warranty) — участники проекта не могут быть привлечены к ответственности в случае причинения убытков в процессе некорректного использования их продукта.
Постановка задачи — интеграция Node-RED c Yandex IoT Core
Сначала хочу отметить: вся эта затея сугубо самообразовательная и подкреплена только непреодолимой тягой энтузиастов к познанинию нового. Например, хотелось изучить возможности облачных сред и сервисов Яндекса, которые могут быть безвозмездно получены для тестирования своих гениальных идей. Ну а чтобы была польза для дела, было решено посмотреть, насколько совместимы реализованные в проекте Node-RED узлы (из коробки на уровне MQTT) с интерфейсами сервиса IoT Core.
Задача выглядит просто:
- Развернуть и настроить виртуальную машину в облаке
- Установить и запустить в нужной конфигурации Node-RED
- Создать и должным образом настроить сервис IoT Core
- Эмулировать IoT-устройство в Node-RED с набором параметров
- Подключить созданное устройство к облачной IoT-платформе
- Отправлять сообщения в облако и получать корректные ответы
- Визуализировать результаты в виде прототипа приложения
Чтобы было повеселее, предположим, есть гениальная идея — создать уникальное приложение «Подключаемых автомобилей», которое требует быстрой апробации некоторых концепций. Пусть создание прототипа будет первым шагом на этом пути.
Создание облачной среды и установка Node-RED
Создание ВМ
Для создания виртуальной машины, на которой мы далее запустим Node-RED, зайдем в Yandex.Cloud и перейдем в Консоль. В сервисе Compute Cloud нажимаем Создать ВМ.
Задаем машине любое разрешенное имя и в качестве операционной системы выбираем CentOS. Для запуска Node-RED подходит любая из приведенных ОС, но в статье мы рассмотрим порядок работы только с CentOS.
Выполнение тестового сценария не требует больших ресурсов, поэтому выставляем все на минимум. Этот ход также позволит сэкономить ресурсы пробного периода, если вы решили развернуть Node-RED только для ознакомления.
Работа с ВМ будет осуществляться через SSH, поэтому пусть у машины будет автоматически выделенный публичный адрес.
Для подключения к машине по SSH необходимо указать публичный ключ. Сгенерируем SSH-ключи командой ssh-keygen -t rsa -b 2048 в терминале, потребуется придумать ключевую фразу.
Теперь требуемый ключ хранится в
/.ssh/is_rsa.pub , копируем его в поле SSH-ключ и нажимаем Создать ВМ.
Подключение к ВМ
После завершения подготовки ВМ в сервисе Compute Cloud появится наша машина с заполненным полем Публичный IPv4.
Также нам необходим логин, который мы указывали на предыдущем шаге в разделе Доступ. Выполним подключение к машине по SSH командой $ ssh @ . При подключении потребуется ввести ключевую фразу, которую мы указали на этапе генерации ключей.
Установка Node-RED
Теперь мы можем установить Node-RED. Самый удобный способ для новой, пустой системы — Linux installers for Node-RED из репозитория проекта. Так как мы используем CentOS 8, нам необходима вторая команда для ОС, основанных на RPM:
Скрипт установит LTS-версию Node.js, базовую версию Node-RED, создаст скрипт автозапуска для systemd и по желанию создаст правила для порта 1880 в файрволе. Для проверки успешности установки можно запустить команду:
Примечание: для выхода из Node-RED нажмите Ctrl+C.
Как активировать автозапуск и старт службы с помощью systemctl:
После этого по адресу http://
Подготовка и настройка сервиса Yandex IoT Core
Возвращаемся в Консоль, выбираем IoT Core и нажимаем Создать реестр. Указываем любое подходящее имя. Далее определимся со способом авторизации.
IoT Core поддерживает два способа: с помощью сертификатов и по логину-паролю. Для нашего тестового сценария намного быстрее использовать последний, поэтому заполним поле Пароль. Длина пароля — минимум 14 символов.
После создания переходим в реестр во вкладку Устройства слева и нажимаем Добавить устройство.
Аналогично реестру задаем имя и пароль.
Теперь в пункте Обзор реестра появился его ID и пароль (в скрытом виде), которые мы указали при создании реестра. То же самое с устройством: на странице устройства есть его ID.
Пример создания простого приложения в Node-RED
Перейдем в http://
В меню в правом верхнем углу Node-RED нажмем Import. Flow в формате .json берем отсюда и либо копируем содержимое в поле, либо скачиваем файл и нажимаем select a file to import.
В новой вкладке появится flow testing connection.
Рассмотрим добавленные узлы. Send data — узел типа Inject, предназначен для ручного или автоматического запуска flow.
Device payload — узел-функция, позволяет выполнять JavaScript для обработки данных, проходящих через этот узел.
device — mqtt-out-узел с настраиваемым MQTT-подключением, предназначен для публикации данных в топик.
Два раза кликаем по узлу device.
Нам необходимо заменить на ID нашего реестра в IoT Core. Далее редактируем данные в Server. Во вкладке Security указываем username — это ID созданного нами устройства, а password — пароль, придуманный на этапе создания устройства. Затем нажимаем Update, далее Done.
Протестируем соединение: в правом верхнем углу нажмем Deploy. Под узлом device появится подпись connected.
Импортируем flow с dashboard таким же образом. После импорта будет показано сообщение о недостающих компонентах, загрузим их. В меню в правом верхнем углу перейдем в Manage palette. В появившемся окне во вкладке Install в поисковом поле напишем node-red-dashboard и установим самый первый из найденных пакетов. Таким же образом установим node-red-contrib-web-worldmap .
Flow получился намного интереснее предыдущего, видны новые узлы.
Так, registry — mqtt-in-узел, принимает сообщения из указанного в настройках топика и передает их следующим узлам.
Измеряемые данные приходят в строке, поэтому применяется узел разбора сообщений json. Он может конвертировать JSON-объект в его JS-представление и обратно.
Parsing JSON и JSON возвращают полученные измерения уже в виде отдельных объектов, которые далее передаются узлам, отвечающим за элементы Dashboard.
Теперь необходимо настроить узел registry. Аналогично первому flow записываем наш ID реестра и переходим в настройки сервера iot-core-subscription.
Во вкладке Security добавляем данные реестра, сохраняем изменения и нажимаем Deploy.
Если все поля заполнены верно, то после развертывания под узлом registry тоже появится подпись connected.
Последння вкладка в окне справа (с иконкой столбчатой диаграммы) отвечает за Dashboard. Перейти в Dashboard можно по кнопке:
Каждые три секунды устройство из flow testing connection генерирует данные, отправляет их в топик нашего реестра, а flow Smart Utilities, в свою очередь, подписывается на этот топик и обновляет Dashboard в соответствии с данными, приходящими из IoT Core.
В качестве результатов и краткого заключения
Node-RED действительно может скачать любой желающий, безвозмездно. При первом знакомстве он вызывает вопросы в плане логики работы и прививает свою непередаваемую любовь к узлу «debug» и вкладке «debug messages». Но когда осмотришься и разберешься, то все встает на свои места и становится очень просто выполнять любые действия. Совсем без познаний в программировании обойтись не получится — требуется хоть какое-то представление о том, что такое переменные, условия, циклы, массивы, JSON сообщения и как осуществлять их разбор. Однако узлы из раздела «Network», такие как «mqtt in/out», заработали с сервисом Yandex IoT Core вообще без проблем при условии правильной конфигурации.
Я умышленно не стал слишком детально описывать, как создается само приложение, поскольку есть исходник потока в JSON. Да и сама идея проекта Node-RED предполагает, что любой желающий может «взглянуть на поток и понять, что он делает, без необходимости разбираться в отдельных строках кода на каждом узле». Но в код лучше заглянуть.
Ссылки на полезные материалы
Отдельное спасибо за помощь при создании статьи: