- Step by step guide to install Node-RED on Ubuntu 18.04 LTS
- Step 1: Update your system
- Step 2: Install Node.js and npm
- Step 4: Install Node-RED
- Step 5: Test your installation
- Установка и настройка Node-RED в Ubuntu 16.04
- Требования
- 1: Установка Node.js и npm
- 2: Установка Node-RED
- 3: Настройка автозапуска Node-RED
- 4: Настройка Nginx
- 5: Защита Node-RED
- Заключение
Step by step guide to install Node-RED on Ubuntu 18.04 LTS
You have probably heard about Node-RED and which is one of the most popular tool in IOT revolution. It’s an open-source flow based visual programming tool for wiring the components as a part of Internet of Things. It allows developers at any level to rapidly connect physical IO, cloud-based systems, databases and most APIs in any combination you can imagine.
Node-red can be installed and run on very small hardware machines e.g. Raspberry PI, TinkerBoard etc.
Today we will provide step by step guide to install Node-RED 0.20.x on Ubuntu 18.04 LTS x86_64 (64 bit) Operating system.
Step 1: Update your system
Update the package lists for upgrades for packages that need upgrading, as well as new packages that have just come to the repositories.
$ sudo apt-get update $ sudo apt-get upgrade -y
Step 2: Install Node.js and npm
$ sudo apt-get install nodejs
It is recommended to check the version of Node.js before proceeding. The versions Node.js LTS 8.x or 10.x is recommended. Node-RED does not support Node.js 6.x or earlier.
To check the version of Node.js installed, use the following command:
Now we have the prerequisites installed, let’s install Node-RED.
Step 4: Install Node-RED
$ sudo npm install -g --unsafe-perm node-red node-red-admin
-g | This means that the package is installed globally and it will be available for Node.js |
–unsafe-perm | This overrides any errors during the time of installation. Basically the user/group ID switching is suppressed when a package script is run, non-root users will be able to install packages. |
Node-red-admin | This will install the admin module providing us with some additional administration tools for Node-RED. |
Step 5: Test your installation
Node-RED uses the port :1880 as its default port. So, lets allow the port to be used by the service by using the following command:
So now we are all set and can start using Node-RED.
Open a terminal (Ctrl+Alt+T) and type the following command:
You can open any browser installed on your system and hit the url bar with the following address:
Установка и настройка Node-RED в Ubuntu 16.04
Node-RED – это конфигуратор Интернета вещей (Internet of Things, IoT), графический инструмент, который поможет вам создать простую схему для объединения любимых приложений, веб-сайтов и аппаратного обеспечения. Node-RED часто сравнивают с IFTTT и поздним Yahoo Pipes, однако этот инструмент обладает большей производительностью, а также поддерживается широким открытым сообществом, которое разрабатывает ноды для взаимодействия с разнообразными приложениями и сервисами.
Данное руководство поможет:
- установить Node.js и Node-RED,
- получить SSL-сертификат от Let’s Encrypt,
- настроить Nginx для обработки безопасных соединений Node-RED.
Требования
- Сервер Ubuntu 16.04.
- Пользователь с доступом к sudo (научиться создавать таких пользователей можно здесь). В данном руководстве такой пользователь условно называется 8host; откорректируйте все команды и код, указав имя своего пользователя.
- Предварительно установленный веб-сервер Nginx. Не забудьте настроить брандмауэр для поддержки трафика на порты 80 и 443 (шаблон Nginx Full в ufw). Всю необходимую информацию можно найти здесь.
- Доменное имя, указывающее на ваш сервер; в руководстве используется условный домен node-red.example.com.
- Сертификат Let’s Encrypt для домена. Чтобы получить бесплатный сертификат Let’s Encrypt, читайте это руководство; вы можете пропустить разделы по настройке Nginx, так как эта настройка будет описана здесь. Просто получите сертификат и настройте его автоматическое обновление с помощью cron.
1: Установка Node.js и npm
Ubuntu 16.04 позволяет быстро установить LTS релиз Node.js из официального репозитория системы:
sudo apt-get install nodejs-legacy
Команда установит Node.js v4.2.x LTS (эта версия будет поддерживаться компанией Node.js Foundation в течение 30 месяцев с момента выхода 12 октября 2015 года).
Примечание: Обязательно нужно установить версию –legacy, как показано в команде, поскольку стартовые скрипты Node-RED требуют, чтобы бинарный файл Node.js назывался node, а не nodejs. В противном случае возникнет конфликт имён.
Убедитесь, что установка прошла успешно:
Команда вернёт номер версии Node.js:
Пакетный менеджер npm (Node Package Manager) позволяет устанавливать и управлять пакетами Node.js. С его помощью можно установить и Node-RED. Установите npm:
Убедитесь, что установка прошла успешно, запросив версию npm:
Если команда вернула номер версии, а не ошибку, можно переходить к следующему этапу.
2: Установка Node-RED
Установите Node-RED и вспомогательную утилиту node-red-admin.
sudo npm install -g —unsafe-perm node-red node-red-admin
Менеджер npm обычно устанавливает пакеты в текущий каталог. В данной команде использован флаг –g (globally), который выполнит глобальную установку указанных пакетов и поместит их в стандартный каталог системы, например в /usr/local/bin. Флаг –unsafe-perm помогает избежать некоторых ошибок, которые могут возникнуть при попытке npm скомпилировать встроенные модули (написанные на компилируемых языках, например C или C ++).
Установка займёт некоторое время, после чего вы вернётесь в обычную командную строку. Пора протестировать установку.
Для начала откройте порт в брандмауэре.
По умолчанию Node-RED использует порт 1880.
Теперь попробуйте запустить Node-RED.
В терминале появится приветственное сообщение типа Welcome to Node-RED. Откройте браузер и перейдите по ссылке:
Примечание: Не забудьте заменить условный домен.
На экране появится интерфейс администратора Node-RED.
Если всё работает должным образом, нажмите CTRL+C, чтобы остановить Node-RED и вернуться в командную строку.
3: Настройка автозапуска Node-RED
Чтобы приложение Node-RED автоматически запускалось во время загрузки сервера, нужно создать файл node-red.service, поскольку Ubuntu 16.04 является первым LTS релизом, который использует систему инициализации systemd.
Откройте пустой service файл по имени node-red.service.
sudo nano /etc/systemd/system/node-red.service
Скопируйте и вставьте в него следующий код, внеся соответствующие коррективы.
[Unit] Description=Node-RED
After=syslog.target network.target
[Service] ExecStart=/usr/local/bin/node-red-pi —max-old-space-size=128 -v
Restart=on-failure
KillSignal=SIGINT
# log output to syslog as ‘node-red’
SyslogIdentifier=node-red
StandardOutput=syslog
# non-root user to run as
WorkingDirectory=/home/8host/
User=8host
Group=8host
[Install] WantedBy=multi-user.target
Примечание: Подробнее о service-файлах рассказано в статье Основы Systemd: управление сервисами и журналирование.
Рассмотрим файл по частям.
[Unit] Description=Node-RED
After=syslog.target network.target
Этот раздел описывает сервис и сообщает, что он должен быть запущен после syslog и network.
[Service] ExecStart=/usr/local/bin/node-red-pi —max-old-space-size=128 -v
Restart=on-failure
KillSignal=SIGINT
Директива ExecStart содержит команду, с помощью которой запускается сервис. Она вызовет node-red-pi вместо node-red, что позволяет применить некоторые опции Node.js для экономии памяти. Такая команда запустит Node-RED на сервере любого разумного размера (возможность запуска зависит от количества потоков Node-RED). Restart=on-failure попробует перезапустить Node-RED в случае сбоя, а KillSignal подберёт лучший способ закрыть Node-RED, если станет необходимо выключить или перезапустить процесс.
# log output to syslog as ‘node-red’
SyslogIdentifier=node-red
StandardOutput=syslog
Этот раздел создаёт метку для логирования и регистрирует все выходные данные.
# non-root user to run as
WorkingDirectory=/home/8host/
User=8host
Group=8host
Приложение Node-RED будет запущено с помощью не-root пользователя и его группы в домашнем каталоге.
Теперь нужно включить service-файл.
sudo systemctl enable node-red
Чтобы убедиться, что сервис работает, запустите его вручную:
sudo systemctl start node-red
Откройте Node-RED в браузере и убедитесь, что всё работает. Чтобы остановить сервис, введите:
sudo systemctl stop node-red
4: Настройка Nginx
Теперь нужно настроить Nginx для проксирования сервиса Node-RED. Это значит, что Nginx будет обрабатывать все соединения SSL на порте 443 (с помощью сертификата Let’s Encrypt) и передавать трафик приложению Node-RED.
Создайте новый конфигурационный файл Nginx:
sudo nano /etc/nginx/sites-enabled/node-red.example.com
Скопируйте и вставьте в него такой код:
server listen 80;
listen 443 ssl http2;
server_name node-red.example.com;
ssl_certificate /etc/letsencrypt/live/node-red.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/node-red.example.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers On;
ssl_session_cache shared:SSL:128m;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8;
location / if ($scheme = http) return 301 https://$server_name$request_uri;
>
proxy_pass http://localhost:1880;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection «upgrade»;
>
location ‘/.well-known/acme-challenge’ root /var/www/html;
>
>
Примечание: Откорректируйте конфигурацию, указав имя своего сервера и правильный путь к сертификату.
Сохраните и закройте файл.
Первые три строки указывают порты, которые будет слушать Nginx, и доменное имя, на которое он должен отвечать.
Строки ssl_certificate и ssl_certificate_key указывают пути к файлам сертификата и ключа Let’s Encrypt. Остальные строки ssl_ задают более безопасные протоколы, шифры и опции, чем предложенные по умолчанию.
Блок location / определяет параметры проксирования Node-RED.
if ($scheme = http) return 301 https://$server_name$request_uri;
>
Эти параметры перехватят любое простое, незашифрованное соединение и перенаправят его на https.
Эта строка указывает на сервис Node-RED, который доступен на localhost и порте 1880. Остальные строки блока задают дополнительные заголовки, необходимые для корректного проксирования. Особенно важны заголовки Upgrade и Connection, они обрабатывают соединения сокетов Node-RED.
Последний раздел позволяет извлечь Let’s Encrypt из root-каталога Nginx.
location ‘/.well-known/acme-challenge’ root /var/www/html;
>
Чтобы обновить настройки, перезапустите Nginx.
sudo systemctl reload nginx
Для проверки снова запустите Node-RED.
sudo systemctl start node-red
Веб-сервер должен перенаправить запрос на https://node-red.example.com. Если это так, Nginx проксирует трафик Node-RED.
5: Защита Node-RED
Теперь нужно защитить доступ к интерфейсу Node-RED с помощью пароля. Хешируйте пароль, прежде чем добавлять его в конфигурационный файл.
Команда запросит пароль. Введите его, нажмите Enter, и на экране появится хеш пароля. Скопируйте его и добавьте в файл настроек Node-RED:
Найдите и раскомментируйте строку adminAuth (удалите // в начале строки). В строке username укажите имя администратора, а в строку password добавьте хеш пароля.
adminAuth: type: «credentials»,
users: [ username: «admin»,
password: «$2a$08$Ab9prIr1M8a5a1/Zx8.B9.uIOCPe.v90ZGuZc2kAATp6BHJ/WV5KS»,
permissions: «*»
>]
Также нужно раскомментировать строку uihost:
Теперь Node-RED будет прослушивать только локальный интерфейс, и никто не сможет получить доступ к приложению в интернете (только через прокси-сервер Nginx). Сохраните и закройте файл.
Снова обновите настройки брандмауэра:
sudo systemctl restart node-red
На экране появится форма входа.
Заключение
Теперь у вас есть надёжная установка Node-RED. Подробную информацию о приложении можно найти на сайте Node-RED.