こんにちは、今回は 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
結果 → nodered
と myapp
が online ✅
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 を運用できるようになりました 🎉