【VPS】Node-REDをPM2+systemdで自動起動させるまでの記録

こんにちは、今回は Ubuntu VPS 上で Node-RED を pm2 で管理し、再起動しても自動で起動するようにした手順を記録します。 同時に自作アプリ(myapp)も pm2 管理下で動かし、systemd 経由で永続化しました。

環境

  • VPS (Ubuntu 20.04/22.04)
  • Node.js + npm
  • Node-RED
  • pm2
  • systemd

1. pm2 で Node-RED を起動・管理

pm2 start node-red
pm2 start /home/ubuntu/myapp/server.js --name myapp
pm2 list

2. pm2 の状態を保存

再起動後に復元できるように保存します。

pm2 save

3. ecosystem.config.js の作成

pm2 の推奨方式である ecosystem ファイルを作成。

nano /home/ubuntu/ecosystem.config.js

module.exports = {
  apps: [
    {
      name: "nodered",
      script: "node-red"
    },
    {
      name: "myapp",
      script: "/home/ubuntu/myapp/server.js"
    }
  ]
}

4. systemd ユニットファイルの設定

sudo nano /etc/systemd/system/pm2-ubuntu.service

[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=simple
User=ubuntu
Environment=PATH=/usr/bin:/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/sbin
Environment=PM2_HOME=/home/ubuntu/.pm2
ExecStart=/usr/bin/pm2-runtime start /home/ubuntu/ecosystem.config.js
ExecStop=/usr/bin/pm2 save
Restart=always

[Install]
WantedBy=multi-user.target

5. systemd に反映

sudo systemctl daemon-reload
sudo systemctl enable pm2-ubuntu
sudo systemctl start pm2-ubuntu

確認:

systemctl status pm2-ubuntu
pm2 list

6. 動作確認

sudo reboot

再ログイン後:

pm2 list

結果 → noderedmyapponline

7. バックアップ方法

cd /home/ubuntu
tar -czvf pm2_backup_$(date +%Y%m%d).tar.gz .pm2 ecosystem.config.js myapp .node-red

復元:

tar -xzvf pm2_backup_xxxxxx.tar.gz
pm2 start ecosystem.config.js
pm2 save

まとめ

  • pm2 で Node-RED と自作アプリを管理
  • ecosystem.config.js を利用して systemd 永続化
  • pm2-runtime + systemd サービスで再起動後も自動復元
  • バックアップ方法も用意

これで安心して VPS を運用できるようになりました 🎉