{"id":4893,"date":"2026-06-25T09:59:03","date_gmt":"2026-06-25T08:59:03","guid":{"rendered":"https:\/\/m0aws.co.uk\/?p=4893"},"modified":"2026-07-01T10:51:01","modified_gmt":"2026-07-01T09:51:01","slug":"node-red-control-dashboard-for-allstarlink-3","status":"publish","type":"post","link":"https:\/\/m0aws.co.uk\/?p=4893","title":{"rendered":"Node-Red Control Dashboard for AllStarLink 3"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I&#8217;ve recently built a new AllStarLink (ASL) node for my MB7IBW gateway that I have recently brought up on air on the 2m band.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AllStarLink 3 has a lot of changes in it when compared to the previous version and this of course impacts my Node-Red Control Dashboard that I&#8217;ve been using to manage my first ASL node for well over a year now.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To build the node I used the RaspberryPi imager and added the AllStarlink 3 image as detailed on the <a href=\"https:\/\/allstarlink.github.io\/install\/pi-appliance\/pi-detailed\/#\" target=\"_blank\" rel=\"noreferrer noopener\">allstarlink.org website<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Installing the system this way makes it pretty easy compared to previous installs but, it comes with some quirks which cause issues with Node-Red.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From the outset the plan has always been to have AllStartLink 3 and Node-Red running on the same Pi4 to keep it totally self contained. This was easy enough to achieve and works without issue.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"376\" height=\"747\" src=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2026\/06\/AllStarLink3-Node-Red-Control-Dashboard.png\" alt=\"Node-Red Control Dashboard for AllStarLink 3\" class=\"wp-image-4951\" srcset=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2026\/06\/AllStarLink3-Node-Red-Control-Dashboard.png 376w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2026\/06\/AllStarLink3-Node-Red-Control-Dashboard-151x300.png 151w\" sizes=\"auto, (max-width: 376px) 100vw, 376px\" \/><figcaption class=\"wp-element-caption\">Node-Red Control Dashboard for AllStarLink 3<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Installing Node-Red onto a Pi4 is really easy and is fully documented on the <a href=\"https:\/\/nodered.org\/docs\/getting-started\/raspberrypi\" target=\"_blank\" rel=\"noreferrer noopener\">Node-Red Website<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once the AllStarLink 3 operating system was installed on my SD card, booted and operational I installed Node-Red. I soon realised that there were a few things I had to do before loading the Node-Red flow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AllStarLink 3 no longer logs connect and disconnect messages in the <strong><em>connectlog<\/em><\/strong> like it did in AllStarLink 2. To get logging working again I had to create two new BASH scripts as detailed below and put them into <strong><em>\/etc\/asterisk\/myscripts<\/em><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For the connect information I created the BASH script as detailed below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n\n# \/etc\/asterisk\/myscripts\/connectlog.sh\n\necho $1 Connected $2  on $(date +\"%T\") - $(date +\"%m-%d-%Y\")  &gt;&gt; \/var\/log\/asterisk\/connectlog<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For the disconnect information I created the 2nd script detailed below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n\n# \/etc\/asterisk\/myscripts\/disconnectlog.sh\n\necho $1 Disconnected $2  on $(date +\"%T\") - $(date +\"%m-%d-%Y\")  &gt;&gt; \/var\/log\/asterisk\/connectlog\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Once these scripts were created I had to change the ownership and privileges as detailed below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/etc\/asterisk\/myscripts\nchown asterisk:asterisk .\/*\nchmod 750 .\/*<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I also had to change ownership\/privileges of \/etc\/asterisk\/myscripts.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/etc\/asterisk\nchown asterisk:asterisk .\/myscripts\nchmod 755 .\/myscripts<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Once the two scripts were in place I had to alter the asterisk config so that it called the scripts as part of the connect\/disconnect process.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I found the <strong><em>connpgm<\/em><\/strong> and <strong><em>discpgm<\/em><\/strong> entries in \/<strong><em>etc\/asterisk\/rpt.conf <\/em><\/strong>and changed them as shown below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>connpgm = \/etc\/asterisk\/myscripts\/connectlog.sh\n\ndiscpgm = \/etc\/asterisk\/myscripts\/disconnectlog.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Next I disabled the temporary filesystems that are used by default for the apache and asterisk logging as it&#8217;s useful to keep the apache logs for debugging and I needed the asterisk logs for the Node-Red dashboard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Disabling the temporary file system is very easy to do, just edit the <strong><em>\/etc\/fstab<\/em><\/strong> and comment out the two lines as shown below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Comment out the next line for persistent Apache logs\n#tmpfs  \/var\/log\/apache2        tmpfs   defaults,noatime,nosuid,nodev,noexec,mode=0775,size=32M 0 0\n\n# Comment out the next line for persistent Asterisk logs\n#tmpfs  \/var\/log\/asterisk       tmpfs   defaults,noatime,nosuid,nodev,noexec,mode=0775,size=32M,uid=102,gid=106 0 0 \n\n# Note: These lines are wrapped, should be on 1 line in the \/etc\/fstab<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Once the entries in the <strong><em>\/etc\/fstab <\/em><\/strong>were commented out I rebooted the Pi4 to get persistent filesystems.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The final thing that had to be done was to allow user <strong><em>repeater<\/em><\/strong> to use <strong><em>sudo<\/em><\/strong> without a password so that it could be used to perform reboot\/shutdown\/process restart as user root from within the dashboard.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \/etc\/sudoers\n\n# Allow repeater sudo without password\nrepeater ALL=(ALL) NOPASSWD: ALL<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Once this was all done I imported the Node-Red flow, configured the SSH nodes with login credentials for the Pi4 (important to use the user <strong><em>repeater<\/em><\/strong> for SSH), clicked <strong><em>deploy<\/em><\/strong> and the dashboard was ready for use.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2026\/06\/Node-Red-AllStarLink3-Control-Dashboard-Flow.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1537\" height=\"1594\" src=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2026\/06\/Node-Red-AllStarLink3-Control-Dashboard-Flow.png\" alt=\"Node Red AllStarLink3 Control Dashboard Flow\" class=\"wp-image-4966\" srcset=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2026\/06\/Node-Red-AllStarLink3-Control-Dashboard-Flow.png 1537w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2026\/06\/Node-Red-AllStarLink3-Control-Dashboard-Flow-289x300.png 289w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2026\/06\/Node-Red-AllStarLink3-Control-Dashboard-Flow-768x796.png 768w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2026\/06\/Node-Red-AllStarLink3-Control-Dashboard-Flow-1481x1536.png 1481w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><figcaption class=\"wp-element-caption\">Node Red AllStarLink3 Control Dashboard Flow<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;ve been using the dashboard for a few weeks now and it&#8217;s running perfectly, without error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to build your own Node-Red Control Dashboard for your AllStarLink 3 node then, just download the flow using the button below and import it into your flow editor.<\/p>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-cad4ed6c-6bce-41c6-886b-4c1aabb7bcf2\" href=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2026\/06\/M0AWS-ASL3-Control-Dashboard.zip\">M0AWS ASL3 Control Dashboard<\/a><a href=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2026\/06\/M0AWS-ASL3-Control-Dashboard.zip\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-cad4ed6c-6bce-41c6-886b-4c1aabb7bcf2\">Download<\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><br>More soon &#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve recently built a new AllStarLink (ASL) node for my MB7IBW gateway that I have recently brought up on air on the 2m band. AllStarLink 3 has a lot of changes in it when compared to the previous version and this of course impacts my Node-Red Control Dashboard that I&#8217;ve been using to manage my &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/m0aws.co.uk\/?p=4893\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Node-Red Control Dashboard for AllStarLink 3&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[332,595,356,39,36,512,287,180,132,329,561,334,189,184,4,65,413,327,38,41,40,135,439,37,326,336,122,412,351,553,152,419,354,133,372],"tags":[],"class_list":["post-4893","post","type-post","status-publish","format-standard","hentry","category-allstarlink","category-asl3","category-asterisk","category-bash","category-code","category-coding","category-commandline","category-dashboard","category-debian","category-digitalvoice","category-download","category-dv","category-floweditor","category-flows","category-ham-radio","category-home-brew","category-imager","category-imagination","category-linux","category-logging","category-logs","category-opensource","category-pi4","category-programming","category-radio","category-radioham","category-raspberrypi","category-raspberrypios","category-raspbian","category-remotecontrol","category-repeater","category-sbc","category-sdcard","category-ssh","category-storage"],"_links":{"self":[{"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/4893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4893"}],"version-history":[{"count":23,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/4893\/revisions"}],"predecessor-version":[{"id":4982,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/4893\/revisions\/4982"}],"wp:attachment":[{"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4893"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}