{"id":97743,"date":"2020-06-26T13:23:38","date_gmt":"2020-06-26T13:23:38","guid":{"rendered":"https:\/\/randomnerdtutorials.com\/?p=97743"},"modified":"2020-07-25T10:14:44","modified_gmt":"2020-07-25T10:14:44","slug":"access-node-red-dashboard-anywhere-digital-ocean","status":"publish","type":"post","link":"https:\/\/randomnerdtutorials.com\/access-node-red-dashboard-anywhere-digital-ocean\/","title":{"rendered":"Access Node-RED Dashboard from Anywhere using Digital Ocean"},"content":{"rendered":"\n<p>This guide explains how to install Node-RED software on a Linux Ubuntu VM (Virtual Machine) using Digital Ocean. Running Node-RED in the cloud allows you to access your Node-RED Dashboard from anywhere. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/Access-Node-RED-Dashboard-Software-from-anywhere-in-the-worl-using-Digital-Ocean.jpg?resize=1200%2C675&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Access Node-RED Dashboard Software from anywhere in the world using Digital Ocean\" class=\"wp-image-97735\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/Access-Node-RED-Dashboard-Software-from-anywhere-in-the-worl-using-Digital-Ocean.jpg?w=1280&amp;quality=100&amp;strip=all&amp;ssl=1 1280w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/Access-Node-RED-Dashboard-Software-from-anywhere-in-the-worl-using-Digital-Ocean.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/Access-Node-RED-Dashboard-Software-from-anywhere-in-the-worl-using-Digital-Ocean.jpg?resize=1024%2C576&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/Access-Node-RED-Dashboard-Software-from-anywhere-in-the-worl-using-Digital-Ocean.jpg?resize=768%2C432&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure><\/div>\n\n\n\n<p>You can also <a href=\"https:\/\/randomnerdtutorials.com\/cloud-mqtt-mosquitto-broker-access-anywhere-digital-ocean\/\">install the MQTT Mosquitto Broker<\/a> in your VM to connect several ESP32\/ESP8266 boards and other IoT devices from anywhere using different networks with an Internet connection.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introducing Node-RED<\/h2>\n\n\n\n<p>Node-RED is a powerful tool for building Internet of Things (IoT) applications using visual programming: connect code blocks (nodes) together to perform a task. Node-RED provides a dashboard (<a href=\"https:\/\/randomnerdtutorials.com\/getting-started-with-node-red-dashboard\/\">Node-RED dashboard<\/a>) that can be used as an Home Automation platform to interact with IoT devices to control outputs and monitor sensors.<\/p>\n\n\n\n<p>You can easily establish a communication with Node-RED and your ESP32\/ESP8266 boards using <a href=\"https:\/\/randomnerdtutorials.com\/esp32-http-get-post-arduino\/\">HTTP requests<\/a> or <a href=\"https:\/\/randomnerdtutorials.com\/what-is-mqtt-and-how-it-works\/\">MQTT<\/a>, for example.<\/p>\n\n\n\n<p>What&#8217;s the advantage of installing Node-RED on the cloud (Digital Ocean hosting service) and how it works? Here&#8217;s an example.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"950\" height=\"950\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/ESP32-ESP8266-Digital-Ocean-Node-RED-Overview.png?resize=950%2C950&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32 ESP8266 Digital Ocean Node-RED Overview\" class=\"wp-image-97779\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/ESP32-ESP8266-Digital-Ocean-Node-RED-Overview.png?w=950&amp;quality=100&amp;strip=all&amp;ssl=1 950w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/ESP32-ESP8266-Digital-Ocean-Node-RED-Overview.png?resize=300%2C300&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/ESP32-ESP8266-Digital-Ocean-Node-RED-Overview.png?resize=150%2C150&amp;quality=100&amp;strip=all&amp;ssl=1 150w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/ESP32-ESP8266-Digital-Ocean-Node-RED-Overview.png?resize=768%2C768&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 950px) 100vw, 950px\" \/><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>You have Node-RED software and Node-RED dashboard installed on Digital Ocean.<\/li><li>The ESP32 can communicate with Node-RED as long as it is connected to a router with access to the internet.<\/li><li>The ESP32 can send sensor readings to Node-RED and\/or you can control its outputs by accessing the dashboard.<\/li><li>You can access Node-RED dashboard using your computer or your smartphone from anywhere in the world.<\/li><li>This allows you to control and monitor one or multiple <a href=\"https:\/\/randomnerdtutorials.com\/projects-esp32\/\">ESP32<\/a>\/<a href=\"https:\/\/randomnerdtutorials.com\/projects-esp8266\/\">ESP8266<\/a> boards from anywhere.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Hosting Service &#8211; Digital Ocean<\/h2>\n\n\n\n<p>To run your Cloud MQTT Mosquitto Broker, you need to use a hosting service that allows you to have access to the command line and install any software that you need. I recommend using <a href=\"https:\/\/randomnerdtutorials.com\/digitalocean\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Digital Ocean<\/a><span style=\"font-size: inherit; background-color: initial;\"> that offers an Ubuntu server that you can manage through a command line.<\/span><\/p>\n\n\n\n<p>I&#8217;ve been using it since 2015 and I personally recommend it, but you can use any other hosting service. Any hosting service that offers a Linux Ubuntu VM with full console access should work. <\/p>\n\n\n\n<p>If you don&#8217;t have a hosting account, I recommend <a href=\"https:\/\/randomnerdtutorials.com\/bluehost\">signing up for Digital Ocean<\/a>. When you sign up for Digital Ocean, you can try it for 60 days (they give you free credits to test the platform).<\/p>\n\n\n\n<p style=\"text-align:center\"><a href=\"https:\/\/randomnerdtutorials.com\/digitalocean\" target=\"_blank\" class=\"button\" rel=\"noopener noreferrer nofollow\">Grab Linux Ubuntu VM on Digital Ocean \u00bb<\/a><\/p>\n\n\n\n<p>If you like our projects, you might consider signing up to the recommended hosting service, because you&#8217;ll be supporting our work.<\/p>\n\n\n\n<p class=\"rntbox rntclgreen\"><strong>Note: <\/strong> you can also <a href=\"https:\/\/randomnerdtutorials.com\/getting-started-with-node-red-on-raspberry-pi\/\">run Node-RED in your local network using a Raspberry Pi board<\/a>. However, the purpose of this tutorial is to run Node-RED in the cloud to communicate with boards (or other IoT devices) across different networks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creating Digital Ocean Account<\/h2>\n\n\n\n<p>To create a Digital Ocean Account, go to <a rel=\"noreferrer noopener nofollow\" href=\"https:\/\/randomnerdtutorials.com\/digitalocean\" target=\"_blank\">Digital Ocean<\/a> and press the &#8220;<strong>Sign Up<\/strong>&#8221; button.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/randomnerdtutorials.com\/digitalocean\" target=\"_blank\" rel=\"noopener noreferrer nofollow\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"900\" height=\"588\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/1-Digital-Ocean-VPN-Mosquitto-MQTT-Broker-Installation.png?resize=900%2C588&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Mosquitto MQTT Broker Installation\" class=\"wp-image-97714\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/1-Digital-Ocean-VPN-Mosquitto-MQTT-Broker-Installation.png?w=900&amp;quality=100&amp;strip=all&amp;ssl=1 900w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/1-Digital-Ocean-VPN-Mosquitto-MQTT-Broker-Installation.png?resize=300%2C196&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/1-Digital-Ocean-VPN-Mosquitto-MQTT-Broker-Installation.png?resize=768%2C502&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><a rel=\"noreferrer noopener nofollow\" href=\"https:\/\/randomnerdtutorials.com\/digitalocean\" target=\"_blank\">Create your account<\/a>, and you&#8217;ll receive a $100 credit that you can use for 60 days to test the platform. You might need to enter a valid credit card, but you can cancel your account anytime if you&#8217;re no longer interested in using the service after the free 60 days trial.<\/p>\n\n\n\n<p>Complete the account creation using your preferred method (I always use the Email option).<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/randomnerdtutorials.com\/digitalocean\" target=\"_blank\" rel=\"noopener noreferrer\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"478\" height=\"480\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-Digital-Ocean-VPN-Sign-Up-Mosquitto-MQTT-Broker-Installation.png?resize=478%2C480&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Sign Up Mosquitto MQTT Broker Installation\" class=\"wp-image-97715\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-Digital-Ocean-VPN-Sign-Up-Mosquitto-MQTT-Broker-Installation.png?w=478&amp;quality=100&amp;strip=all&amp;ssl=1 478w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-Digital-Ocean-VPN-Sign-Up-Mosquitto-MQTT-Broker-Installation.png?resize=300%2C300&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-Digital-Ocean-VPN-Sign-Up-Mosquitto-MQTT-Broker-Installation.png?resize=150%2C150&amp;quality=100&amp;strip=all&amp;ssl=1 150w\" sizes=\"(max-width: 478px) 100vw, 478px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Confirm your account and login, you should see a similar Dashboard.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"944\" height=\"602\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/3-Digital-Ocean-Login-Dashboard-Mosquitto-MQTT-Broker.png?resize=944%2C602&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean Login Dashboard Mosquitto MQTT Broker\" class=\"wp-image-97716\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/3-Digital-Ocean-Login-Dashboard-Mosquitto-MQTT-Broker.png?w=944&amp;quality=100&amp;strip=all&amp;ssl=1 944w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/3-Digital-Ocean-Login-Dashboard-Mosquitto-MQTT-Broker.png?resize=300%2C191&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/3-Digital-Ocean-Login-Dashboard-Mosquitto-MQTT-Broker.png?resize=768%2C490&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 944px) 100vw, 944px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Create a Droplet (Linux Ubuntu VM)<\/h2>\n\n\n\n<p>To create a new VM, press the &#8220;<strong>Create<\/strong>&#8221; button on the top right corner and select the &#8220;<strong>Droplets<\/strong>&#8221; option. Digital Ocean calls <strong>Droplets<\/strong> to its VMs.<\/p>\n\n\n\n<p class=\"rntbox rntclblue\"><strong>Important: <\/strong> if you&#8217;re already running a <a href=\"https:\/\/randomnerdtutorials.com\/cloud-mqtt-mosquitto-broker-access-anywhere-digital-ocean\/\">Droplet with MQTT Mosquitto Broker<\/a>, you can skip these next steps (creating a Droplet). You can run both Node-RED and Mosquitto MQTT broker in the same server.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"453\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/4-Digital-Ocean-VPN-Create-Droplet-Mosquitto-MQTT-Broker.png?resize=829%2C453&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Create Droplet Mosquitto MQTT Broker\" class=\"wp-image-97717\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/4-Digital-Ocean-VPN-Create-Droplet-Mosquitto-MQTT-Broker.png?w=829&amp;quality=100&amp;strip=all&amp;ssl=1 829w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/4-Digital-Ocean-VPN-Create-Droplet-Mosquitto-MQTT-Broker.png?resize=300%2C164&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/4-Digital-Ocean-VPN-Create-Droplet-Mosquitto-MQTT-Broker.png?resize=768%2C420&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 829px) 100vw, 829px\" \/><\/figure><\/div>\n\n\n\n<p>For this guide I&#8217;ll be using Ubuntu 20.04 (LTS) x64, and I recommend choosing the same option. You can also use the &#8220;<strong>Basic<\/strong>&#8221; starter plan.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1017\" height=\"567\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/5-Digital-Ocean-VPN-Droplet-Linux-Ubuntu-Mosquitto-MQTT-Broker.png?resize=1017%2C567&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Droplet Linux Ubuntu Mosquitto MQTT Broker\" class=\"wp-image-97718\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/5-Digital-Ocean-VPN-Droplet-Linux-Ubuntu-Mosquitto-MQTT-Broker.png?w=1017&amp;quality=100&amp;strip=all&amp;ssl=1 1017w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/5-Digital-Ocean-VPN-Droplet-Linux-Ubuntu-Mosquitto-MQTT-Broker.png?resize=300%2C167&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/5-Digital-Ocean-VPN-Droplet-Linux-Ubuntu-Mosquitto-MQTT-Broker.png?resize=768%2C428&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 1017px) 100vw, 1017px\" \/><\/figure><\/div>\n\n\n\n<p>In the VM resources menu, you can choose the cheapest plan for $5\/month. Even with the lowest plan, it will run the MQTT Broker and Node-RED smoothly .<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"992\" height=\"302\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/6-Digital-Ocean-VPN-Sign-Up-Droplet-Pricing-Mosquitto-MQTT-Broker.png?resize=992%2C302&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Sign Up Droplet Pricing Mosquitto MQTT Broker\" class=\"wp-image-97719\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/6-Digital-Ocean-VPN-Sign-Up-Droplet-Pricing-Mosquitto-MQTT-Broker.png?w=992&amp;quality=100&amp;strip=all&amp;ssl=1 992w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/6-Digital-Ocean-VPN-Sign-Up-Droplet-Pricing-Mosquitto-MQTT-Broker.png?resize=300%2C91&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/6-Digital-Ocean-VPN-Sign-Up-Droplet-Pricing-Mosquitto-MQTT-Broker.png?resize=768%2C234&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 992px) 100vw, 992px\" \/><\/figure><\/div>\n\n\n\n<p>Choose the Virtual Machine datacenter location closer to you, in my case I&#8217;ve used &#8220;<strong>London<\/strong>&#8221; region.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"984\" height=\"553\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/7-Digital-Ocean-VPN-Linux-Ubuntu-Server-Location-Mosquitto-MQTT-Broker-Installation.png?resize=984%2C553&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Linux Ubuntu Server Location Mosquitto MQTT Broker Installation\" class=\"wp-image-97720\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/7-Digital-Ocean-VPN-Linux-Ubuntu-Server-Location-Mosquitto-MQTT-Broker-Installation.png?w=984&amp;quality=100&amp;strip=all&amp;ssl=1 984w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/7-Digital-Ocean-VPN-Linux-Ubuntu-Server-Location-Mosquitto-MQTT-Broker-Installation.png?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/7-Digital-Ocean-VPN-Linux-Ubuntu-Server-Location-Mosquitto-MQTT-Broker-Installation.png?resize=768%2C432&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 984px) 100vw, 984px\" \/><\/figure><\/div>\n\n\n\n<p>Create the root password that allows you to access your Droplet (save this password, because you&#8217;ll need it to access your server).<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"987\" height=\"467\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/8-Digital-Ocean-VPN-Linux-Ubuntu-Server-Set-Define-Password.png?resize=987%2C467&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Linux Ubuntu Server Set Define Password\" class=\"wp-image-97721\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/8-Digital-Ocean-VPN-Linux-Ubuntu-Server-Set-Define-Password.png?w=987&amp;quality=100&amp;strip=all&amp;ssl=1 987w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/8-Digital-Ocean-VPN-Linux-Ubuntu-Server-Set-Define-Password.png?resize=300%2C142&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/8-Digital-Ocean-VPN-Linux-Ubuntu-Server-Set-Define-Password.png?resize=768%2C363&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 987px) 100vw, 987px\" \/><\/figure><\/div>\n\n\n\n<p>Finally, choose a <strong>hostname <\/strong>to easily identify which Virtual Machine you are working with. I&#8217;ve named my Droplet as &#8220;mqtt-cloud-server&#8221;. That&#8217;s it, you just need to press the big green button &#8220;Create Droplet&#8221; to finish the process.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"990\" height=\"760\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/9-Digital-Ocean-VPN-Linux-Ubuntu-Server-Set-Define-Hostname-Create-Droplet.png?resize=990%2C760&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Linux Ubuntu Server Set Define Hostname Create Droplet\" class=\"wp-image-97722\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/9-Digital-Ocean-VPN-Linux-Ubuntu-Server-Set-Define-Hostname-Create-Droplet.png?w=990&amp;quality=100&amp;strip=all&amp;ssl=1 990w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/9-Digital-Ocean-VPN-Linux-Ubuntu-Server-Set-Define-Hostname-Create-Droplet.png?resize=300%2C230&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/9-Digital-Ocean-VPN-Linux-Ubuntu-Server-Set-Define-Hostname-Create-Droplet.png?resize=768%2C590&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 990px) 100vw, 990px\" \/><\/figure><\/div>\n\n\n\n<p>Wait a few minutes and when the progress bar ends, your Droplet is ready.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Accessing Your Linux Ubuntu VM Console<\/h2>\n\n\n\n<p>When your Droplet is prepared, open your newly created server (in my case, it&#8217;s called &#8220;<strong>mqtt-cloud-server<\/strong>&#8220;).<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"898\" height=\"579\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/10-Digital-Ocean-VPN-Linux-Ubuntu-Server-Open-Droplet.png?resize=898%2C579&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Linux Ubuntu Server Open Droplet\" class=\"wp-image-97723\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/10-Digital-Ocean-VPN-Linux-Ubuntu-Server-Open-Droplet.png?w=898&amp;quality=100&amp;strip=all&amp;ssl=1 898w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/10-Digital-Ocean-VPN-Linux-Ubuntu-Server-Open-Droplet.png?resize=300%2C193&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/10-Digital-Ocean-VPN-Linux-Ubuntu-Server-Open-Droplet.png?resize=768%2C495&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/figure><\/div>\n\n\n\n<p>Select the &#8220;<strong>Access<\/strong>&#8221; menu and press the &#8220;<strong>Launch Console<\/strong>&#8221; button.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"431\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/11-Digital-Ocean-VPN-Linux-Ubuntu-Server-Open-Launch-Console.png?resize=950%2C431&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Linux Ubuntu Server Open Launch Console\" class=\"wp-image-97724\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/11-Digital-Ocean-VPN-Linux-Ubuntu-Server-Open-Launch-Console.png?w=950&amp;quality=100&amp;strip=all&amp;ssl=1 950w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/11-Digital-Ocean-VPN-Linux-Ubuntu-Server-Open-Launch-Console.png?resize=300%2C136&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/11-Digital-Ocean-VPN-Linux-Ubuntu-Server-Open-Launch-Console.png?resize=768%2C348&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 950px) 100vw, 950px\" \/><\/figure><\/div>\n\n\n\n<p>A new browser window opens up in your computer.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1036\" height=\"249\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/12-Digital-Ocean-VPN-Linux-Ubuntu-Server-Login-Console.png?resize=1036%2C249&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Linux Ubuntu Server Login Console\" class=\"wp-image-97725\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/12-Digital-Ocean-VPN-Linux-Ubuntu-Server-Login-Console.png?w=1036&amp;quality=100&amp;strip=all&amp;ssl=1 1036w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/12-Digital-Ocean-VPN-Linux-Ubuntu-Server-Login-Console.png?resize=300%2C72&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/12-Digital-Ocean-VPN-Linux-Ubuntu-Server-Login-Console.png?resize=1024%2C246&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/12-Digital-Ocean-VPN-Linux-Ubuntu-Server-Login-Console.png?resize=768%2C185&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 1036px) 100vw, 1036px\" \/><\/figure><\/div>\n\n\n\n<p>Type your login (root) and the password defined earlier, press Enter key to access your server.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1036\" height=\"565\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/13-Digital-Ocean-VPN-Linux-Ubuntu-Server-Login-Console-Username-Password.png?resize=1036%2C565&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean VPN Linux Ubuntu Server Login Console Username Password\" class=\"wp-image-97726\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/13-Digital-Ocean-VPN-Linux-Ubuntu-Server-Login-Console-Username-Password.png?w=1036&amp;quality=100&amp;strip=all&amp;ssl=1 1036w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/13-Digital-Ocean-VPN-Linux-Ubuntu-Server-Login-Console-Username-Password.png?resize=300%2C164&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/13-Digital-Ocean-VPN-Linux-Ubuntu-Server-Login-Console-Username-Password.png?resize=1024%2C558&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/13-Digital-Ocean-VPN-Linux-Ubuntu-Server-Login-Console-Username-Password.png?resize=768%2C419&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 1036px) 100vw, 1036px\" \/><\/figure><\/div>\n\n\n\n<p>There&#8217;s an <strong><em>optional <\/em><\/strong>step, but it goes beyond the scope of this tutorial. It&#8217;s <strong><em>not<\/em> <\/strong>required to make this project work: prepare your server with non-root, sudo-enabled user and basic firewall with this <a rel=\"noreferrer noopener nofollow\" href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/initial-server-setup-with-ubuntu-20-04\" target=\"_blank\">Initial Server Setup with Ubuntu 20.04<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installing Node-RED<\/h2>\n\n\n\n<p>Let&#8217;s install Node-RED software.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/node-red-icon-2.png?resize=247%2C247&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Node-RED software icon logo\" class=\"wp-image-97810\" width=\"247\" height=\"247\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/node-red-icon-2.png?w=512&amp;quality=100&amp;strip=all&amp;ssl=1 512w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/node-red-icon-2.png?resize=300%2C300&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/node-red-icon-2.png?resize=150%2C150&amp;quality=100&amp;strip=all&amp;ssl=1 150w\" sizes=\"(max-width: 247px) 100vw, 247px\" \/><\/figure><\/div>\n\n\n\n<p>Before installing the software, update and upgrade your server (this will take a few minutes to complete).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update &amp;&amp; sudo apt upgrade -y<\/code><\/pre>\n\n\n\n<p>To install Node-RED, you&#8217;ll need npm:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install npm -y<\/code><\/pre>\n\n\n\n<p>This next command installs Node-RED as a global module along with all its dependencies.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo npm install -g --unsafe-perm node-red<\/code><\/pre>\n\n\n\n<p>When the installation process is completed, you should see a similar message:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"821\" height=\"306\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/1-DigitalOcean-Installing-Node-RED-NPM.png?resize=821%2C306&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean Installing Node-RED NPM\" class=\"wp-image-97736\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/1-DigitalOcean-Installing-Node-RED-NPM.png?w=821&amp;quality=100&amp;strip=all&amp;ssl=1 821w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/1-DigitalOcean-Installing-Node-RED-NPM.png?resize=300%2C112&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/1-DigitalOcean-Installing-Node-RED-NPM.png?resize=768%2C286&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 821px) 100vw, 821px\" \/><\/figure><\/div>\n\n\n\n<p>Open up a port on your server firewall. Node-RED defaults to using port 1880, so run this next command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 1880<\/code><\/pre>\n\n\n\n<p>You can confirm it has succeeded if the end of the command output looks similar to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node-red start<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"661\" height=\"345\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/1-DigitalOcean-Installing-Node-RED-NPM-node-red-start.png?resize=661%2C345&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean Node-RED software node-red start command\" class=\"wp-image-97768\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/1-DigitalOcean-Installing-Node-RED-NPM-node-red-start.png?w=661&amp;quality=100&amp;strip=all&amp;ssl=1 661w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/1-DigitalOcean-Installing-Node-RED-NPM-node-red-start.png?resize=300%2C157&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 661px) 100vw, 661px\" \/><\/figure><\/div>\n\n\n\n<p>Wait a few seconds while everything loads, if you go to your Digital Ocean Droplet IP address followed by the port number 1880:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;YOUR-Digital-Ocean-IP-Address:1880<\/code><\/pre>\n\n\n\n<p>For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;178.62.83.231:1880<\/code><\/pre>\n\n\n\n<p>Node-RED software should load, here&#8217;s how it should look like:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1114\" height=\"734\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-DigitalOcean-Node-RED-Installed-testing.png?resize=1114%2C734&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean Node-RED Installed testing\" class=\"wp-image-97737\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-DigitalOcean-Node-RED-Installed-testing.png?w=1114&amp;quality=100&amp;strip=all&amp;ssl=1 1114w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-DigitalOcean-Node-RED-Installed-testing.png?resize=300%2C198&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-DigitalOcean-Node-RED-Installed-testing.png?resize=1024%2C675&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-DigitalOcean-Node-RED-Installed-testing.png?resize=768%2C506&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 1114px) 100vw, 1114px\" \/><\/figure><\/div>\n\n\n\n<p>In your console window, press the Ctrl+C key to stop Node-RED.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Autostart Node-RED on Boot<\/h2>\n\n\n\n<p>To make Node-RED autostart when you boot or restart your Virtual Machine, you need to create a new <em>systemd<\/em> file for the <span class=\"rnthl rntliteral\">nodered.service<\/span>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/systemd\/system\/nodered.service<\/code><\/pre>\n\n\n\n<p>Then, add the following (if you&#8217;re using root, you can leave the file as it is &#8211; otherwise comment the root and configure the non-root user option):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;Unit]\nDescription=Node-RED\nAfter=syslog.target network.target\n\n&#091;Service]\nExecStart=\/usr\/local\/bin\/node-red --max-old-space-size=128 -v\nRestart=on-failure\nKillSignal=SIGINT\n\n# log output to syslog as 'node-red'\nSyslogIdentifier=node-red\nStandardOutput=syslog\n\n# non-root user to run as\n#WorkingDirectory=\/home\/rui\/\n#User=rui\n#Group=rui\n\n# if using a root user\nWorkingDirectory=\/root\/\nUser=root\nGroup=root\n\n&#091;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p>Your file should look like this, save it and exit (Ctrl+X, Y, Enter key).<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"661\" height=\"562\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/3-DigitalOcean-Installing-Node-RED-autostart-on-boot.png?resize=661%2C562&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean Installing Node-RED autostart on boot\" class=\"wp-image-97738\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/3-DigitalOcean-Installing-Node-RED-autostart-on-boot.png?w=661&amp;quality=100&amp;strip=all&amp;ssl=1 661w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/3-DigitalOcean-Installing-Node-RED-autostart-on-boot.png?resize=300%2C255&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 661px) 100vw, 661px\" \/><\/figure><\/div>\n\n\n\n<p>To enable the Node-RED service and run this file on boot, enter the command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable nodered.service<\/code><\/pre>\n\n\n\n<p>Restart your Virtual Machine to test if Node-RED is automatically starting on boot:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo reboot<\/code><\/pre>\n\n\n\n<p>Wait approximately 2 to 3 minutes for your server to fully restart, when you open your server IP address Node-RED software should load automatically:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;YOUR-Digital-Ocean-IP-Address:1880<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1114\" height=\"734\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-DigitalOcean-Node-RED-Installed-testing.png?resize=1114%2C734&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean Node-RED Installed testing\" class=\"wp-image-97737\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-DigitalOcean-Node-RED-Installed-testing.png?w=1114&amp;quality=100&amp;strip=all&amp;ssl=1 1114w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-DigitalOcean-Node-RED-Installed-testing.png?resize=300%2C198&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-DigitalOcean-Node-RED-Installed-testing.png?resize=1024%2C675&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/2-DigitalOcean-Node-RED-Installed-testing.png?resize=768%2C506&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 1114px) 100vw, 1114px\" \/><\/figure><\/div>\n\n\n\n<p>That&#8217;s it! Your Node-RED software is prepared.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Securing Node-RED Software with Username and Password<\/h2>\n\n\n\n<p>Install node-red-admin package to make it available globally:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install -g --unsafe-perm node-red-admin<\/code><\/pre>\n\n\n\n<p>Run the next command to create a password hash:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node-red-admin hash-pw<\/code><\/pre>\n\n\n\n<p>You will be prompted for a password. Type your desired password, press Enter key, and a hash will be printed on screen.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"661\" height=\"450\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/4-DigitalOcean-Installing-Node-RED-generating-password-hash-admin-dashboard-highlighted.png?resize=661%2C450&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean Installing Node-RED generating password hash admin dashboard\" class=\"wp-image-97769\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/4-DigitalOcean-Installing-Node-RED-generating-password-hash-admin-dashboard-highlighted.png?w=661&amp;quality=100&amp;strip=all&amp;ssl=1 661w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/4-DigitalOcean-Installing-Node-RED-generating-password-hash-admin-dashboard-highlighted.png?resize=300%2C204&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 661px) 100vw, 661px\" \/><\/figure><\/div>\n\n\n\n<p>Copy the hash string to your clipboard and open the Node-RED settings file. In my case the hash is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$2b$08$bQvFgdNi6as2.JwtDENbP.w\/JROldMUhY9o9hXExyjQzw1iFRvC9liF<\/code><\/pre>\n\n\n\n<p>Open the <em>settings.js<\/em> file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano ~\/.node-red\/settings.js<\/code><\/pre>\n\n\n\n<p>Scroll down and uncomment the adminAuth block (by removing the \u201c\/\/ \u201d in front of each line). Change username to whatever you like, and paste the previously generated hash into the password field.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"733\" height=\"370\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/5-DigitalOcean-Installing-Node-RED-enabling-password-dashboard.png?resize=733%2C370&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean Installing Node-RED enabling password dashboard\" class=\"wp-image-97740\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/5-DigitalOcean-Installing-Node-RED-enabling-password-dashboard.png?w=733&amp;quality=100&amp;strip=all&amp;ssl=1 733w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/5-DigitalOcean-Installing-Node-RED-enabling-password-dashboard.png?resize=300%2C151&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 733px) 100vw, 733px\" \/><\/figure><\/div>\n\n\n\n<p>Make sure you uncomment and replace the password field with the hash exactly as illustrated above, failing to do it will make it impossible to login and you&#8217;ll have to repeat this process.<\/p>\n\n\n\n<p>Exit the file and save it (Ctr+X, Y, Enter key). Restart your server to ensure that all changes take effect:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo reboot<\/code><\/pre>\n\n\n\n<p>Now, when you access your Node-RED software you&#8217;ll be prompted to enter the username (default is admin) and the password defined earlier.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"590\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/6-DigitalOcean-Installing-Node-RED-dashboard-login-username-password.png?resize=900%2C590&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean Installing Node-RED dashboard login username password\" class=\"wp-image-97741\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/6-DigitalOcean-Installing-Node-RED-dashboard-login-username-password.png?w=900&amp;quality=100&amp;strip=all&amp;ssl=1 900w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/6-DigitalOcean-Installing-Node-RED-dashboard-login-username-password.png?resize=300%2C197&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/6-DigitalOcean-Installing-Node-RED-dashboard-login-username-password.png?resize=768%2C503&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/figure><\/div>\n\n\n\n<p>After logging in, you&#8217;ll be redirected to Node-RED software where you can create and edit your flows. You also have a menu at the top right corner to logout.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"464\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/7-DigitalOcean-Node-RED-logout.png?resize=900%2C464&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Digital Ocean Node RED Dashboard software logout button\" class=\"wp-image-97742\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/7-DigitalOcean-Node-RED-logout.png?w=900&amp;quality=100&amp;strip=all&amp;ssl=1 900w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/7-DigitalOcean-Node-RED-logout.png?resize=300%2C155&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/7-DigitalOcean-Node-RED-logout.png?resize=768%2C396&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/figure><\/div>\n\n\n\n<p>That&#8217;s it! Your server is ready and you can install Node-RED Dashboard or connect Node-RED to your <a href=\"https:\/\/randomnerdtutorials.com\/cloud-mqtt-mosquitto-broker-access-anywhere-digital-ocean\/\">cloud MQTT broker<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">(Optional) Taking It Further &#8211; Node-RED SSL Certificate<\/h2>\n\n\n\n<p>The best method to add an SSL certificate to your server is by having a domain name pointed at your server and use Let\u2019s Encrypt SSL certificates.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>You&#8217;ll have to buy a domain name and point it to Digital Ocean Name Servers (like example.com).<\/li><li>The web server Nginx installed, with the firewall updated to allow traffic on ports 80 and 443, as describe in <a rel=\"noreferrer noopener nofollow\" href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-install-nginx-on-ubuntu-18-04\" target=\"_blank\">How To Install Nginx on Ubuntu<\/a> (that guides also works for version 20.04)<\/li><li><span style=\"font-size: inherit; background-color: initial;\">Let\u2019s Encrypt installed, and a certificate generated for the domain name (like example.com). <a rel=\"noreferrer noopener nofollow\" href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04\" target=\"_blank\">How To Secure Nginx with Let\u2019s Encrypt on Ubuntu 20.04<\/a>. You can ignore steps 3-5 regarding Nginx configuration, as we\u2019ll cover that next.<\/span><\/li><\/ul>\n\n\n\n<p>Having those prerequisites completed, open a new Nginx configuration for the site (replace the path with your domain name).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/nginx\/sites-enabled\/example.com<\/code><\/pre>\n\n\n\n<p>Copy and paste the following to the new file. You need to change the domain name and certificate paths:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n  listen 80;\n  listen 443 ssl http2;\n  server_name example.com;\n  ssl_certificate \/etc\/letsencrypt\/live\/example.com\/fullchain.pem;\n  ssl_certificate_key \/etc\/letsencrypt\/live\/example.com\/privkey.pem;\n  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n  ssl_ciphers EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;\n  ssl_prefer_server_ciphers On;\n  ssl_session_cache shared:SSL:128m;\n  ssl_stapling on;\n  ssl_stapling_verify on;\n  resolver 8.8.8.8;\n\n  location \/ {\n    if ($scheme = http) {\n      return 301 https:\/\/$server_name$request_uri;\n    }\n    proxy_pass http:\/\/localhost:1880;\n    proxy_set_header Host $host;\n    proxy_set_header X-Real-IP $remote_addr;\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection \"upgrade\";\n  }\n\n  location '\/.well-known\/acme-challenge' {\n    root \/var\/www\/html;\n  }\n}<\/code><\/pre>\n\n\n\n<p>Change the example.com text to your own domain name:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server_name example.com;\nssl_certificate \/etc\/letsencrypt\/live\/example.com\/fullchain.pem;\nssl_certificate_key \/etc\/letsencrypt\/live\/example.com\/privkey.pem;<\/code><\/pre>\n\n\n\n<p>When you&#8217;re done editing the file, save it and exit the editor (Ctrl+X, Y, Enter key). Reload Nginx to pick up the new configuration.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl reload nginx<\/code><\/pre>\n\n\n\n<p>Finally, restart your server:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo reboot<\/code><\/pre>\n\n\n\n<p>Wait a couple of minutes to restart. Finally, navigate to your server: <span class=\"rnthl rntliteral\">http:\/\/example.com<\/span>. You should be redirected to <span class=\"rnthl rntliteral\">https:\/\/example.com<\/span> (note the https) and see the Node-RED software login page. This means we\u2019re now proxying Node-RED through Nginx.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p>This complete guide was tested and it should work, however there are many steps and they must be followed exactly as we describe, otherwise something might not work properly.<\/p>\n\n\n\n<p>In all our guides and projects we always try to help if anyone gets stuck. However, in this particular case, there are so many steps that it can be extremely hard to help you without having access to the server and test it (of course, we don&#8217;t have the resources to personally help everyone). <\/p>\n\n\n\n<p>If you have any problem installing Mosquitto MQTT broker, preparing your Linux Ubuntu server, running Node-RED, installing an SSL certificate, contact Digital Ocean support and describe exactly what&#8217;s happening. I&#8217;ve been using their service since 2015 and they always have an extremely helpful support team (or just use their Forum).<\/p>\n\n\n\n<p>Now, if you want to install Mosquitto MQTT Broker on Digital Ocean, follow the next tutorial: <a href=\"https:\/\/randomnerdtutorials.com\/cloud-mqtt-mosquitto-broker-access-anywhere-digital-ocean\/\">Run Your Cloud MQTT Mosquitto Broker (access from anywhere using Digital Ocean)<\/a>.<\/p>\n\n\n\n<p>Read the next guides to learn more about Node-RED:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/randomnerdtutorials.com\/getting-started-with-node-red-dashboard\/\">Node-RED Dashboard &#8211; Getting Started<\/a><\/li><li><a style=\"font-size: inherit; background-color: initial;\" href=\"https:\/\/randomnerdtutorials.com\/esp32-mqtt-publish-subscribe-arduino-ide\/\">ESP32 MQTT \u2013 Publish and Subscribe with Arduino IDE<\/a><\/li><li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-mqtt-publish-bme280-arduino\/\">ESP32 MQTT \u2013 Publish BME280 Sensor Readings (Arduino IDE)<\/a><\/li><\/ul>\n\n\n\n<p>Thanks for reading.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This guide explains how to install Node-RED software on a Linux Ubuntu VM (Virtual Machine) using Digital Ocean. Running Node-RED in the cloud allows you to access your Node-RED Dashboard &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"Access Node-RED Dashboard from Anywhere using Digital Ocean\" class=\"read-more button\" href=\"https:\/\/randomnerdtutorials.com\/access-node-red-dashboard-anywhere-digital-ocean\/#more-97743\" aria-label=\"Read more about Access Node-RED Dashboard from Anywhere using Digital Ocean\">CONTINUE READING \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":97735,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[304,225],"tags":[],"class_list":["post-97743","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-0-home-automation","category-home-automation"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/06\/Access-Node-RED-Dashboard-Software-from-anywhere-in-the-worl-using-Digital-Ocean.jpg?fit=1280%2C720&quality=100&strip=all&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/97743","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/comments?post=97743"}],"version-history":[{"count":0,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/97743\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media\/97735"}],"wp:attachment":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media?parent=97743"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/categories?post=97743"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/tags?post=97743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}