PLCのデバイス情報をNode-RED経由でクラウドにアップロードしブラウザから参照できるようにしてみます。
ロードマップ
構成要素 | 機器 | 備考 |
センサ/PLC | 三菱PLC | データはラズパイが取得 |
ゲートウェイ | Raspberry Pi | PLCのデータをクラウドへ送信 |
クラウド | さくらのVPS | クラウドデータベース |
ダッシュボード | Node-RED | ユーザー用画面 |
1章:さくらのVPSの契約と設定(Node-RED常駐まで)
2章:VPSのNode-REDプログラミング
3章:Raspberry Piのセットアップ・Node-REDプログラミング
4章:VPSのNode-REDにてダッシュボード構築
5章:PLCとの通信
開発の全体図
[PLC] ──(MCプロトコル)──> [Raspberry Pi] ──(MQTT/HTTP)──> [クラウド] ──> [可視化画面(スマホ・PC)]
ステップ1:さくらのVPSの契約と設定
VPSを契約しましょう。今回は比較的人気なさくらのVPSを契約してみます。
1Gまたは2Gプランを契約(月額1000円弱)
OSは Ubuntu 22.04 を選択(GUI不要)
契約完了後、固定IPアドレスとSSH情報が発行される
ローカルPCからSSH接続(例:Tera Term, Windows Terminal, macOSのターミナル)
ubuntuはそれぞれのユーザー名に変更してください。
ssh ubuntu@<VPSのIP>
もしrootでログインする場合は、rootのパスワードを聞かれるが、おそらくここまでのセットアップでrootのパスワードは設定していないと思います。
なのでこのままではrootでログインはできません。
なので、VNCコンソールから一旦初期に設定したユーザーでログインして以下のコマンドを入力してパスワードを変更します。
ユーザーでログイン後、以下のコマンドを実行:
sudo passwd root
以下のような表示になります:
Enter new UNIX password: (ここで新しいrootパスワードを入力)
Retype new UNIX password: (もう一度同じパスワードを入力)
passwd: password updated successfully
これで root のパスワードが設定されます。
rootログインを有効にする(念のため)
UbuntuのSSH設定では、初期状態で root ログインが禁止されていることがあるため、以下のファイルを確認・修正します。
sudo nano /etc/ssh/sshd_config
以下の行を探してください:
#PermitRootLogin prohibit-password
これを次のように変更:
PermitRootLogin yes
変更したら Ctrl + O → Enter → Ctrl + X で保存して、SSHを再起動します:
sudo /etc/init.d/ssh restart
ssh root@xxx.xxx.xxx.xxx(契約したVPSのアドレス)
先ほど設定したrootパスワードを入力すればログインできます。
補足:推奨される方法
セキュリティ上、rootログインではなく「ubuntuユーザー + sudo」で運用するのが一般的です。
ただし、学習目的や初期構築段階では root
ログインでも構いません。
ステップ2:クラウド上にNode.js と Node-RED のインストール(推奨:nvmを使用)
① 必要パッケージの更新
apt update && apt upgrade -y
② nvm(Node Version Manager)のインストール
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
完了後、以下を実行してnvmを使えるようにします:
source ~/.bashrc
③ Node.js(LTS版)のインストール
nvm install --lts
インストール確認:
node -v
npm -v
バージョンが表示されればOK
④ Node-RED のインストール
npm install -g --unsafe-perm node-red
Step 3:Node-RED を起動してみる
一度起動して動作確認します:
node-red
以下のような表示が出れば成功です:
...
Server now running at http://127.0.0.1:1880/
ブラウザから確認
別PCのブラウザで http://<VPSのアドレス>:1880 にアクセス
Node-REDの画面が表示されればOK!

NOTE!もしも画面が表示されない場合
さくらのVPSコントロールパネルにログイン
該当VPS → 「パケットフィルタ」タブ
下記のように 「1880番ポート」または「全許可」ルール を追加
例:許可:TCP / ポート: 1880 / ソース: 任意 or 自分のIP
※ 最初は「パケットフィルタOFF」にして試すのもOKです。
これで改善しない場合は次の確認
Node-REDの設定ファイルを編集:
nano ~/.node-red/settings.js
次の行を探します:
//uiHost: "127.0.0.1",
これを以下のように修正して コメントアウトを外し、全IPにバインド:
uiHost: "0.0.0.0",
保存してNode-REDを再起動:
pkill node-red
node-red
再度、ブラウザで http://<VPSのIP>:1880 にアクセスしてみてください。
Step 4:Node-RED を常時稼働させる(systemdでサービス化)
インストールされているNVMのバージョンを確認します。
nvm ls
や which node-red
で正しいパスに修正してください
見るべきポイント
コマンド: which node-red
出力例:/home/ubuntu/.nvm/versions/node/v22.16.0/bin/node-red
なぜこれを見るのか?
Node-RED の systemd サービスを作るときに、以下のような記述が必要です。ここに出力されたパスを設定します。
ExecStart=/home/ubuntu/.nvm/versions/node/v22.16.0/bin/node-red
また以下のパスの途中のnvmのバージョン値も同様にあわせます。
Environment=PATH=/home/ubuntu/.nvm/versions/node/v22.16.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
もしnvm -ls として、出力に「-> N/A」と出た場合:
これは、Node.jsが選択されていない状態です。以下で再指定してください:
nvm use <バージョン番号>
例:
nvm use v22.15.1
node-redが起動している場合は停止
停止:[Ctrl + C] または
# プロセスIDを確認してkill
sudo pkill -f node-red
以下のコマンドでサービスファイルを作成します。
nano /etc/systemd/system/nodered.service
中身を以下のように記述( ExecStartとEnvironmentのパスは which node-red
で確認):
[Unit]
Description=Node-RED
After=syslog.target network.target
[Service]
ExecStart=/home/ubuntu/.nvm/versions/node/v22.16.0/bin/node-red --max-old-space-size=128 --userDir /home/ubuntu/.node-red
Restart=on-failure
RestartSec=20
KillMode=process
# ユーザーとグループを指定
User=ubuntu
Group=ubuntu
# 作業ディレクトリ
WorkingDirectory=/home/ubuntu
# 環境変数(NVMのNode.jsを使用するため)
Environment=NODE_ENV=production
Environment=PATH=/home/ubuntu/.nvm/versions/node/v22.16.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Environment=HOME=/home/ubuntu
[Install]
WantedBy=multi-user.target
rootユーザーの場合は以下のように設定します。
[Unit]
Description=Node-RED
After=network.target
[Service]
ExecStart=/root/.nvm/versions/node/v22.16.0/bin/node-red
Restart=on-failure
User=root
Environment=PATH=/root/.nvm/versions/node/v22.16.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[Install]
WantedBy=multi-user.target
保存後:
サービスファイルの権限設定
sudo chmod 644 /etc/systemd/system/nodered.service
systemdの設定を再読み込み
sudo systemctl daemon-reload
# サービスを有効化(自動起動設定)
sudo systemctl enable nodered
# サービスを開始
sudo systemctl start nodered
# サービスの状態確認
sudo systemctl status nodered
# ログの確認
sudo journalctl -u nodered -f
# 自動起動が有効になっているか確認
sudo systemctl is-enabled nodered
Step 5:ファイアウォール(UFW)設定
必要なポートを許可します:
ufw allow ssh
ufw allow 1880/tcp
ufw enable
Step 6:自動起動できているか確認
sudo reboot
再度sshでログイン
systemctl status nodered
出力例(正常時):
● nodered.service - Node-RED
Loaded: loaded (/etc/systemd/system/nodered.service; enabled; vendor preset: enabled)
Active: active (running) since ...(← ✅ここが重要)
状態 | 意味 |
---|---|
active (running) | Node-REDが起動中 ✅ |
inactive (dead) | 起動していない(サービス失敗か未起動) ❌ |
failed | エラーで起動できなかった ❌ |
こんなエラーが出た場合
× nodered.service - Node-RED
Loaded: loaded (/etc/systemd/system/nodered.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2025-05-17 23:19:48 JST; 1min 3s ago
Process: 554 ExecStart=/root/.nvm/versions/node/v22.15.1/bin/node-red (code=exited, status=127)
Main PID: 554 (code=exited, status=127)
CPU: 1ms
May 17 23:19:48 os3-371-18523 systemd[1]: nodered.service: Scheduled restart job, restart counter is at 5.
May 17 23:19:48 os3-371-18523 systemd[1]: Stopped Node-RED.
May 17 23:19:48 os3-371-18523 systemd[1]: nodered.service: Start request repeated too quickly.
May 17 23:19:48 os3-371-18523 systemd[1]: nodered.service: Failed with result 'exit-code'.
May 17 23:19:48 os3-371-18523 systemd[1]: Failed to start Node-RED.
このエラーは、Node-REDが systemd経由で起動しようとしたが、実行ファイルのパスが正しくなくて起動できなかった という典型的なパターンです。
バージョン指定を見直しましょう
ここまででクラウド側の環境設定は完了です。お疲れ様でした。
おまけ:便利なコマンド
# サービス停止
sudo systemctl stop nodered
# サービス開始
sudo systemctl start nodered
# サービス再起動
sudo systemctl restart nodered
# リアルタイムログ表示
sudo journalctl -u nodered -f
# 自動起動を無効化
sudo systemctl disable nodered
もしサービス開始でエラーが出た場合:
# 詳細なログ確認
sudo journalctl -u nodered --no-pager
# Node-REDのパスが正しいか確認
which node-red
コメント
コメント一覧 (3件)
I don’t even know how I ended up here, but I thought this
post was great. I don’t know who you are but certainly you’re going to a famous blogger if you are not already 😉 Cheers!
Here is my homepage: youtube mp3
My programmer іs trying to convince me to move to .net from PHP.
I һave aⅼways disliked the idea because of the costs.
But he’s tryiong none the ⅼess. I’ve Ƅeen using WordPress οn numerous websites fօr about a yeɑr ɑnd ɑm nervous aƄout switching tο another platform.
Ӏ have hearⅾ excellent things aЬout blogengine.net.
Iѕ thеre a way I ⅽan transfer ɑll my wordpress posts intο it?
Any һelp would Ье reаlly appreciated!
Unfortunately, there is currently no established, straightforward method for migrating posts from WordPress to BlogEngine.net. Due to the long-term stagnation in BlogEngine.net development, many automated migration tools and plugins have not been updated and are incompatible with the current version of WordPress.