Azure, Node-Red and VM

I have a general question on how would be the best way to have an IoT Dashboard for our customers.
Actually we followed the instruction on how to have nodered on an Azure VM but this VM has to be maintained.
Best thing would be to have the Mosquitto MQTT Broker, which actually also runs on this Azure VM, and Node-Red as a cloud service.
What would you suggest to do or is it acually the bst solution to have this VM in Azure running Mosquitto and Node-Red?

Thanks for any reply!


As with so many things in IT, there are many solutions and it is very hard to give advice without knowing the requirements. How many customers, do you need many instances of your environment (1 for each customer for example to keep data isolated)? How sensitive is the data you will be working with? How scalable, how resilient do you need the infrastructure to be? What skills do you have to hand in order to maintain your infrastructure? What is the geographic distribution of your customers? Are any of them in regions that require data residency? ...

Good morning,
there will be 20-30 different customers.
Data should be isolated.
1 instance for one customer is the way we should go.
An other solution would be to have a local Raspi running Mosquitto and MQTT. That will be also our "Local Dashboard without Cloud" solution - it runs without internet but only inside the customer's company.
If we would use this way instead of the Azure based solution we would need something like an uplink or DynDNS address for the Node-Red Dashboard to access it from anywhere not only from the local network. Any suggestions?

OK, so a single instance is out.

You could use Docker to maintain multiple VM's which would make maintenance of them a lot easier. I'm no expert on that but doesn't Azure off Docker as a service? That might work for you. Of course, you would need your own Docker configuration to maintain the data but you could probably use the standard Docker version of Node-RED at the core.

An on-prem device would work well in some circumstances too. If your customers are happy with something on their network. And you could still use Azure's IoT service if you wanted to get data offsite. You can set up a VPN to talk from the device to Azure.

You also need to think about resilience. What is the impact to the customer (and to your org.) if the device or service goes down? Will it stand a day's downtime, a week, an hour, a minute? This will help decide the solution for sure. Also what backups do you need. If running onsite, you might need device backups as well as data backups. You probably wouldn't need device backups if running everything in Azure as long as you are using Azure templates so that you can rebuild everything quickly.

Then you need to think about networking between your customer sites and Azure. Is it resilient? If not, then an on-prem device would be very sensible with a backup to cloud. Similarly if some client networks were slow or bandwidth already heavily utilised.

Obviously, I must stress that you should not treat any of the above as professional Advice. This is merely the ramblings of an IT Architect.

1 Like

Thanks for your help, I appreciate this!
Bevore I had this VM with Mosquitto and Node-Red running, I used the Docker Image for Node-Red. But I wasn't able to add the Mosquitto Broker to this Docker so I switched over to the VM. Is it possible to extend the Docker for a Mosquitto Broker or something comparable?

No problem.

I'm not a docker expert by any means but I think that the right approach is to use separate images for Node-RED, Mosquitto and your data. Then link them so that they can talk to each other. The data image would expose a virtual filing system to the 2 others and the Mosquitto image would have the port(s) needed open to the Node-RED image.

So the only image that changes between customers is the data image.

But as I say, if you do use Azure to run these things, don't overlook Microsoft's IoT data store: