お金をかけずにサーバーの勉強をしよう

Node-REDインストール

2025年3月25日

メニューへ戻る

最近ノーコード・ローコードツールが流行っています。

私が数年前に買った Raspberry Piには専用OSである Raspbian(現在は Raspberry Pi OSと改名)をインストールして遊んでいました。

非力なマシンに GUIまで乗っけて大層重かったのですが、入っているものは一通り動かしましたね。

Java統合開発環境の BlueJ・Java教育ツールの Greenfootマインクラフトの限定版(Pythonの勉強で自動操作する)など、結構面白いソフトが入っていた覚えがあります。

その中の1つに Node-REDがありまして、これが私と Node-REDの出会いでした。

何か画面に部品を置いて線を繋いでいくとプログラムができる、そんなツールだったんですが、当時は全く使い方が分からずに放ってありました。
その時は Raspberry Pi専用のツールだと思っていました。

その後別件で Node.jsをやることになった時に、再び Node-REDの名前を目にするようになって「npmでインストールできるということは Node.jsが動くなら Raspberry Piじゃなくてもどこでも動くのでは?」から始まりました。


Node-REDは Node.jsで動く IBMが開発したローコードツールという位置づけで良いと思います。

本家サイトはこちらです。
Node-RED

Node-RED日本ユーザー会というのもあります。

ここでは Node.js環境に Node-REDをインストールして、ローコードツールを味わってみます。


1.環境

一通り 2025年3月25日時点での最新版を使います。

Linuxでやりますが、Node.jsが動くならどこでも動くでしょう。

Ubuntu Serverのインストールについては「Ubuntu 24.04 Server インストール」に、Node.jsについては「Node.jsインストール」にそれぞれ書いています。

以降 Ubuntu Serverに Node.jsがインストールされている状態からスタートします。


2.インストール

Node-REDのインストール方法はこちら。
Running Node-RED locally

これに従ってインストールしていきます。

subro@UbuntuServer2404-1:~$ sudo npm install -g --unsafe-perm node-red

added 311 packages in 36s

63 packages are looking for funding
  run `npm fund` for details
npm notice
npm notice New major version of npm available! 10.9.2 -> 11.2.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.2.0
npm notice To update run: npm install -g npm@11.2.0
npm notice

インストールできました。

なお、Ubuntu環境で snap版の Node.jsでの Node-REDのモジュールの配置場所は [/usr/local/lib/node_modules/node-red]ディレクトリでした。

手順にはありませんけど、Node-REDを実行する専用ユーザーと専用グループを Ubuntu Serverに作ります。
「nodered」ユーザーと「nodered」グループにしました。

subro@UbuntuServer2404-1:~$ sudo adduser nodered
info: ユーザ `nodered' を追加しています...
info: Selecting UID/GID from range 1000 to 59999 ...
info: 新しいグループ `nodered' (1001) を追加しています...
info: Adding new user `nodered' (1001) with group `nodered (1001)' ...
info: ホームディレクトリ `/home/nodered' を作成しています...
info: `/etc/skel' からファイルをコピーしています...
新しい パスワード: noderedユーザーの新規パスワード
新しい パスワードを再入力してください: パスワードをもう一回
passwd: パスワードは正しく更新されました
nodered のユーザ情報を変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
        フルネーム []: Enterキー
        部屋番号 []: Enterキー
        職場電話番号 []: Enterキー
        自宅電話番号 []: Enterキー
        その他 []: Enterキー
以上で正しいですか? [Y/n] Y
info: Adding new user `nodered' to supplemental / extra groups `users' ...
info: ユーザ `nodered' をグループ `users' に追加しています...

新規ユーザーとグループができましたので、それで Ubuntu Serverにログインします。

Node-REDを実行します。

nodered@UbuntuServer2204-1:~$ node-red
24 Mar 22:02:22 - [info]

Welcome to Node-RED
===================

24 Mar 22:02:22 - [info] Node-RED バージョン: v4.0.9
24 Mar 22:02:22 - [info] Node.js  バージョン: v22.14.0
24 Mar 22:02:22 - [info] Linux 6.8.0-55-generic x64 LE
24 Mar 22:02:23 - [info] パレットノードのロード
24 Mar 22:02:23 - [info] 設定ファイル: /home/nodered/.node-red/settings.js
24 Mar 22:02:23 - [info] コンテキストストア : 'default' [module=memory]
24 Mar 22:02:23 - [info] ユーザディレクトリ : /home/nodered/.node-red
24 Mar 22:02:23 - [warn] プロジェクトは無効化されています : editorTheme.projects.enabled=false
24 Mar 22:02:23 - [info] フローファイル     : /home/nodered/.node-red/flows.json
24 Mar 22:02:23 - [info] flow ファイルを作成します
24 Mar 22:02:23 - [warn]

---------------------------------------------------------------------
フローのクレデンシャルファイルはシステム生成キーで暗号化されています。

システム生成キーを何らかの理由で失った場合、クレデンシャルファイルを
復元することはできません。その場合、ファイルを削除してクレデンシャルを
再入力しなければなりません。

設定ファイル内で 'credentialSecret' オプションを使って独自キーを設定
します。変更を次にデプロイする際、Node-REDは選択したキーを用いてクレ
デンシャルを再暗号化します。

---------------------------------------------------------------------

24 Mar 22:02:23 - [info] サーバは http://127.0.0.1:1880/ で実行中です
24 Mar 22:02:23 - [warn] 暗号化されたクレデンシャルが存在しません
24 Mar 22:02:23 - [info] フローを開始します
24 Mar 22:02:23 - [info] フローを開始しました

立ち上がりました。


3.Node-REDを使ってみる

Ubuntu Serverの [1880/tcp] で待ち受けていますので、そこに WEBブラウザで HTTPアクセスしてみて下さい。
私の環境では [http://UbuntuServer2404-1:1880] です。

こんな画面が出るはずです。
Node-RED画面 1
「ようこそ」の画面は新バージョンになってからの機能説明が11ページありました。

一通り見終わるとこの画面になります。
Node-RED画面 2
これがNode-REDの開発画面で、左にある部品を真ん中の方眼の所にドラッグ&ドロップで持ってきて、線で繋げてアプリケーションを作ります。

WEBサーバーを作ってみましょう。

仕様: [http://UbuntuServer2404-1/hello] にアクセスしたら「Hello World!」の画面を返す。

まず左ペインから、[http in][template][http Response]の部品を持ってきて、以下のように線で繋いで下さい。
Node-RED画面 3

[http in]ノードをダブルクリックしますと以下の画面になるので [URL]を「/hello」として下さい。
これがエンドポイントになります。
完了を押します。
Node-RED画面 4

[template]ノードをダブルクリックしますと、以下の画面になるので [構文] を [HTML] にして、[テンプレート] の中を以下のように書き換えます。
これがレスポンスボディになります。
完了を押します。
Node-RED画面 5

右上にあるこのボタンを押します。
Node-RED画面 6

[http://UbuntuServer2404-1:1880/hello] に WEBブラウザでアクセスします。
Node-RED画面 7
「Hello World!」が表示されました。WEBサーバーとして動いています!

たったこれだけの作業で簡易WEBサーバーとして動いてしまいました。
中々のスグレモノと思います。


4.部品(ノード)について

インストール直後の部品は少ないですが、画面右上にあるハンバーガーメニューを開くとこんなメニューになりますので、[パレットの管理] を選択して下さい。
Node-RED画面 8

こんな画面になりますので [ノードを追加] タブを選択して、虫眼鏡の検索行に検索ワードを入れると関連のものが出てきます。
例として「azure」と入れてみました。 Node-RED画面 9

こんなリストが出てきました。
Azureを使ったことがある人なら「Azureのアレにアクセスする部品か!」って分かると思います。 Node-RED画面 10

こうしてNode-REDの公式であったり第三者が作った部品を(Node-RED では「ノード」と呼びます)を増やしていけます。


5.ログイン画面有効化

オマケ機能程度ですがログイン画面を有効にしましょう。

先程立ち上げた Node-REDはCtrl+cで停止させて下さい。

ユーザー認証機能の有効化方法が書いてあるところ(Node-RED日本ユーザー会による翻訳だと思います)はこちら。
セキュリティ

上記ドキュメントの「エディタおよび管理APIのセキュリティ」の段落が対象です。

設定ファイルは Node-REDを実行したユーザーのホームディレクトリ以下にあります。

ここの例では [nodered]ユーザーですので、
[/home/nodered/.node-red/settings.js]ファイルになります。

ユーザーのパスワードは bycriptという方法で暗号化した文字列を入れないといけませんので、先に作っておきます。
パスワードは「Subro38Manager-」です。

nodered@UbuntuServer2404-1:~$ node-red admin hash-pw
Password: Subro38Manager- ← 画面には出ない
Password: $2y$08$0cGhoTY3xQ8gtnpBTB3qTemQbSs9D5n0skYTGPDbRp2inc6KDNlXW

ピンクの部分が暗号化されたパスワード文字列になります。

vimなどのテキストエディタで [settings.js]ファイルを以下のように書き換えて下さい。
(ついでに同じパスワードの「subro」ユーザーを追加しています。)

    //adminAuth: {
    //    type: "credentials",
    //    users: [{
    //        username: "admin",
    //        password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
    //        permissions: "*"
    //    }]
    //},

    ↓↓↓↓↓↓ コメントを表す // を消しています ↓↓↓↓↓↓

    adminAuth: {
        type: "credentials",
        users: [{
            username: "admin",
            password: "$2y$08$0cGhoTY3xQ8gtnpBTB3qTemQbSs9D5n0skYTGPDbRp2inc6KDNlXW",
            permissions: "*"},
            {
            username: "subro",
            password: "$2y$08$0cGhoTY3xQ8gtnpBTB3qTemQbSs9D5n0skYTGPDbRp2inc6KDNlXW"",
            permissions: "*"
        }]
    },

修正したら、Node-REDをまた起動します。

WEBブラウザで再び [http://UbuntuServer2404-1:1880] にアクセスすると今度はこのような画面が出ましたので、[subro]ユーザーでログインしてみます。
Node-RED画面 11
ログインした後の絵は変りませんので割愛します。

adminとは別のユーザーを作りはしましたが、作成したフロー(ノーコードのプログラム)はユーザー別になってるわけじゃありませんでした。

Node-REDを実行している OSユーザー1人につき(ここの例では[nodered]ユーザー)、フローのデータ管理枠が 1つという捉え方になるのではないでしょうか。


==========
いかがだったでしょうか。

Node-REDの利点は IBM製で、メンテナンスと機能拡充が何年も続いています。

部品も世界中で新しいノードがどんどん作られていて、特に IoT分野(センサー等の値を得るとか)での利用が進んでいるようです。
データベースにアクセスするノードもありました。

Raspberry Piも、きっとあのチクチク(GPIO)に付けたセンサーを扱うノードがあるんだろうと思います。
(自作センサー回路から Node-REDで信号を拾う電子工作について「光センサーで IoT(前編)」に書いています)

Node.js自体が非力な環境で動かせる特性を持っているものですし、これならサーバー監視に使える簡単な Web-APIを作れるだろうと思っています。

私個人的にはノーコード・ローコードツールは長生きするものが少ない印象なんですが、Node-REDは実体が Node.jsというメジャーな JavaScript実行環境という点で長生きしそうな雰囲気があります。

どうせタダですし、インストールもこの通り簡単なので、一度イジってみると面白いと思います。


電子工作じゃなくても十分使えるポテンシャルがあると思います。

Raspberry Piも最近のはかなりパワフルなので、そこで Linuxの勉強をしても良いかもです。