Multiple node red instances

It depends on your use case.

In my setups I am using one Node-RED installation and launch different workspaces with -u, each with their own dependencies, settings.js, flows.json and so on.

Structured like this:

.
├── apps
│   ├── node-red -> node-red_1.0
│   ├── node-red_0.19
│   ├── node-red_0.20
│   └── node-red_1.0
└── workspaces
    ├── node-red-controller
    │   ├── flows_cred.json
    │   ├── flows.json
    │   ├── lib
    │   ├── node_modules
    │   ├── package.json
    │   ├── package-lock.json
    │   └── settings.js
    ├── node-red-dashboard
    │   ├── flows_cred.json
    │   ├── flows.json
    │   ├── lib
    │   ├── node_modules
    │   ├── package.json
    │   ├── package-lock.json
    │   ├── settings.js
    │   └── static
    ├── node-red-telegram
    │   ├── flows_cred.json
    │   ├── flows.json
    │   ├── lib
    │   ├── node_modules
    │   ├── package.json
    │   ├── package-lock.json
    │   └── settings.js
    └── node-red-test
        ├── flows_cred.json
        ├── flows.json
        ├── lib
        ├── package.json
        └── settings.js

Everything is managed with a PM2 ecosystem file.

After all it's not very different from your approach.