Хочу провести время с пользой и разобрать как установить на Ubuntu 22.04 Server
приложение Node-RED
, а возможно если все будет довольно просто начать использовать или посмотреть, что можно сделать.
Node-RED
— это инструмент разработки на основе потоков для визуального программирования, первоначально разработанный IBM
для объединения аппаратных устройств, API
-интерфейсов и онлайн-сервисов в рамках Интернета вещей
В качестве ключевой составляющей Node-RED
выступает парадигма потокового программирования, которое было изобретено в 70-х Джеем Полом Моррисоном. Потоковое программирование — это способ описания поведения приложения в виде сети черных ящиков или «узлов», как они называются в Node-RED.
Каждый узел имеет четкую цель — к нему поступают некоторые данные, он что-то делает с этими данными, а затем передает их на следующий узел. Сеть отвечает за поток данных между узлами.
Шаг №1:
Обновляем систему до самого актуального состояния в рамках текущего релиза Ubuntu 22.04 Server:
ekzorchik@srv-us2204a:~$ sudo rm -Rf /var/lib/apt/lists ekzorchik@srv-us2204a:~$ sudo apt-get update && sudo apt-get upgrade -y
Шаг №2:
Устанавливаем NodeJS:
ekzorchik@srv-us2204a:~$ curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - ekzorchik@srv-us2204a:~$ sudo apt-get install -y nodejs net-tools ekzorchik@srv-us2204a:~$ npm -v 8.11.0 ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo npm install -g npm@8.16.0 ekzorchik@srv-us2204a:~$ npm -v 8.16.0 ekzorchik@srv-us2204a:~$ node -v v16.16.0 ekzorchik@srv-us2204a:~$
Шаг №3:
Устанавливаем Node-RED & Node-RED-ADMIN:
ekzorchik@srv-us2204a:~$ sudo npm install -g --unsafe-perm node-red node-red-admin added 361 packages, and audited 362 packages in 16s 38 packages are looking for funding run `npm fund` for details found 0 vulnerabilities ekzorchik@srv-us2204a:~$ Теперь можно инициализировать запуск node-red: ekzorchik@srv-us2204a:~$ node-red -v 5 Aug 08:43:21 - [info] Welcome to Node-RED =================== 5 Aug 08:43:21 - [info] Node-RED version: v3.0.2 5 Aug 08:43:21 - [info] Node.js version: v16.16.0 5 Aug 08:43:21 - [info] Linux 5.15.0-27-generic x64 LE 5 Aug 08:43:21 - [info] Loading palette nodes 5 Aug 08:43:22 - [info] Settings file : /home/ekzorchik/.node-red/settings.js 5 Aug 08:43:22 - [info] Context store : 'default' [module=memory] 5 Aug 08:43:22 - [info] User directory : /home/ekzorchik/.node-red 5 Aug 08:43:22 - [warn] Projects disabled : editorTheme.projects.enabled=false 5 Aug 08:43:22 - [info] Flows file : /home/ekzorchik/.node-red/flows.json 5 Aug 08:43:22 - [info] Creating new flow file 5 Aug 08:43:22 - [warn] --------------------------------------------------------------------- Your flow credentials file is encrypted using a system-generated key. If the system-generated key is lost for any reason, your credentials file will not be recoverable, you will have to delete it and re-enter your credentials. You should set your own key using the 'credentialSecret' option in your settings file. Node-RED will then re-encrypt your credentials file using your chosen key the next time you deploy a change. --------------------------------------------------------------------- 5 Aug 08:43:22 - [info] Server now running at http://127.0.0.1:1880/ 5 Aug 08:43:22 - [warn] Encrypted credentials not found 5 Aug 08:43:22 - [info] Starting flows 5 Aug 08:43:22 - [info] Started flows ^C5 Aug 08:44:16 - [info] Stopping flows 5 Aug 08:44:16 - [info] Stopped flows ekzorchik@srv-us2204a:~$
Шаг №4:
Создадим административный логин и пароль в Node-RED:
ekzorchik@srv-us2204a:~$ node-red admin hash-pw Password: ввожу к примеру 712mbddr@ $2b$08$7.k/709kgGzHwI47KVrRR.smonPsCfJJ5DnGCcOImKiMEEIRBBEJa ekzorchik@srv-us2204a:~$
Шаг №5:
Настраиваем авторизацию в Node-RED:
ekzorchik@srv-us2204a:~$ node-red --settings 5 Aug 08:47:26 - [info] Welcome to Node-RED =================== 5 Aug 08:47:26 - [info] Node-RED version: v3.0.2 5 Aug 08:47:26 - [info] Node.js version: v16.16.0 5 Aug 08:47:26 - [info] Linux 5.15.0-27-generic x64 LE 5 Aug 08:47:27 - [info] Loading palette nodes 5 Aug 08:47:27 - [info] Settings file : /home/ekzorchik/.node-red/settings.js 5 Aug 08:47:27 - [info] Context store : 'default' [module=memory] 5 Aug 08:47:27 - [info] User directory : /home/ekzorchik/.node-red 5 Aug 08:47:27 - [warn] Projects disabled : editorTheme.projects.enabled=false 5 Aug 08:47:27 - [info] Flows file : /home/ekzorchik/.node-red/flows.json 5 Aug 08:47:27 - [info] Creating new flow file 5 Aug 08:47:27 - [warn] ekzorchik@srv-us2204a:~$ nano ~/.node-red/settings.js adminAuth: { type: "credentials", users: [{ username: "admin", password: "$2b$08$7.k/709kgGzHwI47KVrRR.smonPsCfJJ5DnGCcOImKiMEEIRBBEJa", permissions: "*" }] },
После сохраняем внесенные изменения и инициируем запуск (ekzorchik@srv-us2204a:~$ node-red
):
Шаг №6:
Производим настройку Node-RED
как сервис дабы после перезагрузки сервис поднимался автоматически:
ekzorchik@srv-us2204a:~$ sudo nano /etc/systemd/system/node-red.service [Unit] Description=Node-RED After=syslog.target network.target [Service] ExecStart=/usr/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/ekzorchik/ User=ekzorchik Group=ekzorchik [Install] WantedBy=multi-user.target ekzorchik@srv-us2204a:~$ sudo systemctl enable node-red.service Created symlink /etc/systemd/system/multi-user.target.wants/node-red.service → /etc/systemd/system/node-red.service. ekzorchik@srv-us2204a:~$ sudo systemctl start node-red.service ekzorchik@srv-us2204a:~$ sudo netstat -tulpn | egrep :1880 tcp 0 0 127.0.0.1:1880 0.0.0.0:* LISTEN 1641/node-red ekzorchik@srv-us2204a:~$
Шаг №7:
Теперь поднимем связку Nginx
+ обратный прокси до сервиса Node-RED
дабы можно было с любой системы локальной сети зайти в Web
—интерфейс:
ekzorchik@srv-us2204a:~$ sudo apt-get install -y nginx ekzorchik@srv-us2204a:~$ sudo nano /etc/nginx/sites-available/node-red.conf upstream nodered { server 127.0.0.1:1880; } server { listen 80; #listen 443 ssl http2; server_name 172.33.33.112; #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; # } location / { proxy_pass http://nodered; 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; # } } ekzorchik@srv-us2204a:~$ sudo ln -s /etc/nginx/sites-available/node-red.conf /etc/nginx/sites-enabled/node-red.conf ekzorchik@srv-us2204a:~$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo systemctl restart nginx
Теперь проверяю, что при обращении к URL (http://172.33.33.112)
адресу системы на которой проделаны действия выше открывается Web
-интерфейс Node-RED:
Авторизуюсь
Имя пользователя: admin
Пароль: 712mbddr@
И нажимаю "Войти"
, успешно кстати говоря
Теперь нужно на практических задача познакомиться с применением Node-RED
. Для этого следует погуглить какие-либо примеры и почитать документацию.
Об это либо Вы как-нибудь сами, либо ждите, когда что-то появится на моем блоге.
А пока на этом у меня все, с уважением автор блога Олло Александр aka ekzorchik.