The Script

The Script

Page 2 – the Pre-2019 Script

The easiest way to get the pre-2019 script – as ROOT user, in your ROOT directory is:

wget –no-check-certificate  https://bitbucket.org/api/2.0/snippets/scargill/ekon6o/master/files/script.sh

This can now be run easily: bash script.sh – run as user root, it will start up, copy itself into PI user area, creating that if it does not exist then will give instructions.

Before I begin… no, we’re not a support shop – you may or may not end up having to tweak things for your system but please don’t write in to say “I tried this on a Mac and it doesn’t work”.

The level of interaction after the beginning is now almost zero thanks to a new menu-driven approach and many improvements. We continue to add/modify features as appropriate.

The Virtual Machine (historical information)

Let’s take a look at what we did to get this running on a VM – you can of course duplicate all of this as you go along. We used the excellent VMware of VirtualBox on Windows PCs. This explanation covers VMware.

So – first things first – as I’ve done a video of the VirtualBox installation complete with sample use of Node-Red, here we’ll discuss the VMWARE version.  Both of these were done as test mechanisms before using the script on real devices such as the Orange Pi Zero, Raspberry Pi, Odroid and other devices discussed at length in the blog.

We loaded up a copy of VMware (I used VirtualBox but the procedure is similar – VMware player is free of you can use the full commercial workstation) and made sure it works. That much is up to you. There is a wizard for creating new virtual machines –  we chose a CUSTOM machine. Steps from that point on were:

NEXT - NEXT – “I will install the operating system later” – NEXT
Linux / Ubuntu 64-bit – NEXT – d:\test  - NEXT
Number of processors – 1  - number of cores – 1 – NEXT
Memory for this machine – 1024MB – NEXT
Use Bridged Connection - NEXT
I/O Controller type LSI Logic - NEXT
Disk Type SCSI - NEXT
Create a new virtual Disk - NEXT
12GB (I used 16GB – 8GB would have done) – Store virtual disk as a single file - NEXT
At this point we gave the file a name – in our case d:\test\Ubuntu 640bit.vmdk -  NEXT – FINISH

Under settings – hardware – CD/DVD we ticked “Use ISO image file” and selected the file we loaded from the Ubuntu website – “Ubuntu-16.04.1-server-amd64.iso” – OK.

At this point you’ll note reference to AMD64 – that had me as well but it works a treat on INTEL hardware.

Start off the VM – you get asked which language to use (ENGLISH) and various options will come up – the first being “Install Ubuntu Server” – that’s the one.

Once again you’ll get a language question – English. Location – in my case “United Kingdom” – if you don’t fit into the rules use “Other”.

Time Zone in my case – EUROPE  and then country. Locale – in my case United Kingdom.

Hostname – we went with the default “Ubuntu” – but call it whatever you want.

At this point you get asked to create a user – it is important you make a user “pi”. Enter password also (though the new script will create user PI if it does not exist).

tmp6049Home encryption – we said no. When asked if the time zone was correct we said yes.

Partitioning – “use entire disk” (remember this is a virtual disk – not your real disk). You are then asked to confirm erasing disk – go with that. You then get asked to confirm AGAIN. YES.

HTTP Proxy just leave blank – CONTINUE.

Install security updates automatically.

Add OpenSSH server and CONTINUE (important for remote access)

Install GRUB bootloader – YES.

Installation is complete – CONTINUE. Let it run.

And voilà – one working copy of Ubuntu.

When run, the script will generate a Pi user if it does not exist – will make that user part of the correct groups and will ask you to restart the script as user Pi.

The BASH Script

This part is about running the script and the easiest way is to start in a terminal as user ROOT in the root directory (in non-Raspberry Pi installations).

Do the WGET shown above and you will end up with a script file called “script.sh” in the root directory.

At this point BACK EVERYTHING UP to avoid disappointment – no, REALLY.

Execute as:

bash script.sh

The script will if necessary create the Pi user but either way will now ask you to log in as user pi and repeat the procedure in the /home/pi directory – i.e. bash script.sh.

The point of this is to avoid another way which would be to create a file, load in the script contents ensuring you’re using Linux LF only format – then run the script after setting up permissions – this way you don’t have to do any of that.

In the end you will see a menu which will vary slightly depending on which system you are using – you won’t be asked about GPIO on a Raspberry Pi for example.

tmpE673

For the VM we left everything as you see here and tabbed to OK.

At this point you will be asked for a USER and ADMIN names (which can be user and admin if you like) and corresponding passwords. From there on – everything should happen with no user interaction.

After maybe 15 minutes to an hour – or a LOT longer on a Raspberry Pi Zero WIFI   – you’ll see an invite to REBOOT – so REBOOT. When the board/VM boots up you will find hopefully a working system.

Assuming you’ve installed everything:

  • Node-Red runs at port 1880
  • Webmin at port 10000 (Webmin needs Pi or ROOT username and pass until we figure out how to add in the ADMIN user).
  • Apache runs at port 80
  • HA-BRIDGE will run at port 82 – It seems that Amazon Echo is quite happy with this but the Google product wants port 80!

Node-Red should include MQTT which will need admin username and password as will Node-Red itself. USER name and password is used by Node-Red Dashboard.

There is also the excellent MC – a file manager and editor.

MC and MC EDIT

I hope this brief introduction sets you off in the right direction and of course no doubt there will be discussing in the notes below.

Update 05 Jan 2017

At the time of writing I’m having issues with PIXEL in VirtualBox and DEBIAN on VirtualBox in terms of Apache not loading.. I’m sure we’ll sort that – meantime some useful links.   Debian may not come with SUDO depending on which installation – here’s a fix link that worked for me in my VirtualBox image.. If SSH setup won’t allow remote access using passwords, here’s a link that helped me.  Pixel of course will run in VirtualBox but by default it runs of a virtual DVD which is about as much use as an ashtray on a motorbike as nothing gets saved. Once running however it is a breeze to move over to the Virtual hard disk – you’ll find that part way down the comments in this link.  So right now I have VirtualBox running Xenial, Pixel and Debian and the only issues I have are with Pixel and Debian – Apache – watch this space.  I’ve also improved the input for user and admin.

Important: Whatever you are using should have the SUDO command built in – it may not be obvious but Debian often does NOT have this installed by default – sort this FIRST. You should also make sure you have Pi user with SUDO group privilege – PI already has this of course and you may have added a user Pi – if not..

wget https://bitbucket.org/api/2.0/snippets/scargill/E5rG7/master/files/makepi
su -c “bash makepi”

Or, Here’s a useful link – takes seconds and is easy…  basically – as root you can do – apt-get install –y sudo….. and you should make sure that your PI user is part of the sudo group.

The script works with both NanoPi NEO2 and the NanoPi M1+ and features temperature monitoring and other improvements.

If doing this as a non-Pi user – i.e. ROOT on a machine with no Pi user – follow instructions above OR a slightly easier way…

Having uploaded the script and given permissions… as ROOT

./script.sh

as before – but when it has completed and wants you to log in as PI – stay where you are and:

su – pi -c /home/pi/script.sh

That might save you a little hassle.

Facebooktwitterpinterestlinkedin

1,001 thoughts on “The Script

  1. Peter, i/m stuck. I’m using your fantastic IoTstack on my RB Pi. The issue i can’t walk around is that i need to install some additional nodes in Node Red which is running in container and i can’t access internet from inside of the docker container. Is there and trick for that without the need of rebuilnding the whole thing? Thank you and keep doing your great work! Appreciate it.

  2. Thanks for such great work!
    Since I’m using docker engine to run some of the script apps, wondering if it would be also more convenient and flexible way to use as part of the original script:
    install docker engine
    install the script apps suitable to run on docker
    install docker management agent (like portainer)

    this will allow users to start and stop services (like web min – to get more secure environment)
    install additional containers without affecting the original base image structure

  3. Now that I postetd a comment I find out… dow

    With
    pi@timbuktu:~ $ sudo testparm -s
    Load smb config files from /etc/samba/smb.conf
    handle_name_resolve_order: WARNING: Ignoring invalid list value ‘hosts’ for parameter ‘name resolve order’
    Error loading services.

    I get this and after commenting the the line
    #name resolve order = hosts wins bcast

    all services start correctly… might be something to ajust in the script? I don’t know…

  4. Hi Peter

    Great job with the script! I’ve been using it for a couple of years. Now I’d like to migrate to a new raspi4 with M2 SSD and therefore installed new from scratch with the latest script. Install went smooth but left the system with 3 services not working. They are nmbd, smbd and winbind.

    09:07 Failed to start Samba NMB Daemon.
    09:07 nmbd.service: Failed with result ‘exit-code’.
    09:07 nmbd.service: Main process exited, code=exited, status=1/FAILURE
    09:07 Starting Samba NMB Daemon…

    unfortuantely I was not able to find out what caused the issue with those services. I would be grateful for any hints what could resolve the issues.

    Many thanks
    Roger

    1. Thanks for the feedback. The user Pi in Raspbian is always in the SUDO group – and on other systems, the script when creating user pi should make them part of the sudo grou- but we’ve not tested systems other than RPI and Raspbian for some time now. At the start of the script you can see what systems it has been tested with.

  5. Well congratulations !!
    I’ve been running my-off grid system for the past 4 years, using a pi and your excellent script.
    4 years and never had to re-boot….
    I decided to update the pi, so I installed Bullseye, ran your script, and I’m back up and running.

    Thank you and all your supporters for a GREAT, STABLE and EXCELLENT script…
    DennisB

  6. Me neither – I’ve not used Apache for a couple of years now (at least) and never had compatibility issues using NGINX. Still it seems that Mike has a way around it for those who want to use Apache.

  7. Hi Pete – have just run the 19 Feb updated script on a brand new instance of Bullseye on a RPi4 in an Argon case with a M2 SATA SSD. I prefer Apache rather than Nginx (personal preference) and I ‘checked’ it (and unchecked Nginx) accordingly in setup. Trouble is, it didn’t load! Other web based items did – Grafana, Webmin, Node Red etc, but NOT Apache. I can’t say I saw any error messages – there may have been but they slipped past! I’ve loaded it manually (sudo apt install apache2 -y) and it has created a www directory in /var which wasn’t there before. Of course, your ‘default’ index file isn’t showing; just the Apache default, and I need to investigate that. I thought you might want to know – is this a Bullseye error? Thanks again for everything.

      1. Thanks Pete. I can understand the wish to leave the UK winter. Mind you, weeks of 35 plus in Perth is just as tiresome!! After loading Apache manually, I ran script again and it now seems to be OK. Your index file is there and shows as default. Really weird but all’s well that ends well!

      1. Me neither – I’ve not used Apache for a couple of years now (at least) and never had compatibility issues using NGINX. Still it seems that Mike has a way around it for thoe who want to use Apache.

      2. I understand your rationale. I personally find nginx more confusing than Apache and the latter suits my personal requirements. If it “needn’t” be used, perhaps the best solution is to remove it as an option from the Script? After all, if it doesn’t work as designed, and there’s no plan to support it, why not just leave nginx as the only option? Just my two-pennyworth…….

        1. not a point, it’s just that i’ve not so much time and to test that i need an rpi4, mine is now at my home while now i’m at my parents, so i need Pete to give me access via ssh to one of his… we’ll fix it once he settles in warmy rural spain 🙂

        2. Thanks Mike

          Once I get to Spain (departing UK in 2.5 hours – arrive late Saturday or Sunday) and I’m unpacked/settled, I believe Antonio will take alook at making it compatible with the latest Pi OS variant and I’ll check on a fresh RPi4.

          P.

  8. ‘The script runs in ‘raspiOS bullseye of 2022-01-28’ with a lot errors and warnings.’
    The script is not broken, so don’t fix it.
    There is obviously a problem with bullseye, so do a separate script and fix the issues cumulatively. Don’t risk compromising something that works and has taken a lot of effort to develop.

    1. Not a bad idea Acme – and thank you – I will leave the script as is – and add a second one as soon as I get more feedback as to what’s actually wrong and how to fix it – all feedback welcome, folks.

  9. Being a complete RPI noob, I have tried following directions and using the script. As such, I installed RPI 11 bullseye, not realizing the script was only updated for buster. I found it worked, mostly, but left out Influxdb and Grafana. So I added this line, and reran the script with only the Grafana option.
    1246 test $VERSION_ID = “11” && echo “deb https://repos.influxdata.com/debian bullseye stable” | sudo tee /etc/apt/sources.list.d/influxdb.list
    This seemed to work and the only problem I see right now is that I have doubled the entries in sources.list.d.

    1. John, sorry to be slow – what’s that “1246 test” bit? How do I change the script to accomodate? I’ve also found an error at line 861 but I suspect it isn’t important? See the new entry which covers this – I spent the entire night on this – new OS – ran the script etc, documented…

      https://tech.scargill.net/script-end-of-days-or-just-a-hiccup/

      If we can sort this so it remains backward compatible – that new entry can go….

      Also – NR runs – but I can’t seem to get past the admin password…

      Hmm, the default web page at port 80 also seems not to be functioning – missed that entirely.

      1. I’ll get back to you asap. Line 1246 was the change, though (buster script). Getting hospital discharge today.

      2. Peter,

        Firstly, thankyou so much for this great script! What a huge boon for use newbies!

        The change as to add one line after existing line number 1245, which is the first line here (the second line is my addition):
        test $VERSION_ID = “10” && echo “deb https://repos.influxdata.com/debian buster stable” | sudo tee /etc/apt/sources.list.d/influxdb.list
        test $VERSION_ID = “11” && echo “deb https://repos.influxdata.com/debian bullseye stable” | sudo tee /etc/apt/sources.list.d/influxdb.list

        1. Thanks John, I think we beat you to it – script is upgraded to be backward compatible while working with Pi OS 11 now. we also checked some other items and I improved the text in the script file. Enjoy.

  10. On the latest Raspberry Pi image I used update/upgrade etc and run your script a few times, uninstall nodered and npm, but the following error keeps popping up:

    “npm does not support node.js v10.24.0 raspberry”,

    Many errors to follow, this is on 27 Dec 2021. Thus the script fails. Running on a Pi3B.

    1. Hi Gerrie

      For issues with Node-Red and NPM you will need to chat to the Node-Red guys on Discord. The last time I used the script was a matter of weeks ago on an RPi4, to do a fresh install on the latest Pi Operating system (i.e. Raspbian) – for Node-Red, the script merely calls the official Node-Red/NPM install/upgrade script so if there is an issue the problem will be there.

      Regards

      Pete

  11. Hi Peter,like many others, I have made use of “The Script” many times to greatly speed up the task of building an IOT App Stack on a RPi…but recently I’ve encountered problems installing Influxdb and Grafana (a single selection) under the Main Menu as you know. From what I can see by the screen reports, the repository key for Influxdb is depricated, probably because Influxdata have moved to a 64-Bit build…and I need my App stack on a RPi 4 now running Bulleye. Is there any easy way round this ?…

    1. Yes, there is an issue of Influx focussing on 64 bit. Erm, but I recently had to use the script to reinstall an RPI after one went inexplicably dead (not something that has ever happened before) and Grafana and Influx went in without issue – if you spot anything in the script that needs changing now, please do let me know.

  12. Hi everyone!!
    I used lot of times this wonderfull script to test several devices, as I’m an IoT entusiast. Thanks for this excellent work!
    My only concerns is the missing uninstall option. Or at least, I couldnt find it. My workflow in these cases is simply reinstall whole OS, but sometimes I wan’t uninstall some of the features. Using apt remove do somethimes work, but leaving traces everywhere.
    Are there a best way to remove some of the features?
    Lot of thanks!
    Bruno.

  13. O.k.
    So I started again, first I loaded a full version on Rasbian OS latest desktop. then I set the Password and SSH.

    Did update and upgrade
    Downloaded your bitbucket of “The Script”.
    Found I had to sudo chmod +x Script.sh
    Then tried the script sudo ./script.sh
    Came up with this?
    ./script.sh:173 ./script.sh: function: not found
    ./script.sh:174 local: not in a function

    Not I used Kate to find line I think it is this?
    function user_input {
    local VARIABLE_NAME=${1}
    Anyone help please.
    Raspberry pi 4

    1. Raspberry Pi 4… install as user PI – NOT root – and you should have only to do the install as documented in the script itself. What’s Kate? I used the script only a short while ago on a new RPi4.

      1. Kate is KDE like Nano, but with more GUI stuff mate. Will try again. I did set the sudo password first, before doing the script mate. Hope the holiday is going good.

  14. Hi Peter,
    I just installed three days ago , “The Script”, the latest one. I am having a problem with Node-red, and I am not the only one. Node-red asks for a user and password. No I have used a common password, but t doesn’t work. I have looked at both the Settings.Js file for Node-Red and turn on the

    adminAuth: {
           type: "credentials",
           users: [{
            username: "admin",
              password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
              permissions: "*"
            }]
        },
    

    Plus even change the password for both no joy with it. I used the Bcrypt hashed for the password too.
    I need help mate, first time I have used this in three or four years.

    All the best to you and Mr Sharky.
    Stay safe, hopefully we can work this out please.

      1. No Peter,
        It didn’t mate, anyway have a good holiday. I have time to work it out in lockdown here in Victoria Australia. May start again. By the way the rpi clone does not cp or rm the files. Got around it by putting card in Linux machine and sudo Nano the two files to right place.

  15. I tried to run the script today on a Raspberry Pi 3B+ with the “Raspberry Pi OS with desktop” I downloaded and installed today from raspberrypi.org. The script cannot install influxdb or grafana. I don’t think the influxdb link is good anymore and I don’t know what I should do now.

    == Installing Grafana and Influxdb
    == Total: 00h:47m:09s Cores: 4 Temperature: 53’c
    ==

    Selecting previously unselected package apt-transport-https.
    (Reading database … 127790 files and directories currently installed.)
    Preparing to unpack …/apt-transport-https_1.8.2.3_all.deb …
    Unpacking apt-transport-https (1.8.2.3) …
    Setting up apt-transport-https (1.8.2.3) …
    OK
    deb https://repos.influxdata.com/debian buster stable
    gpg: no valid OpenPGP data found.
    OK
    deb https://packages.grafana.com/oss/deb stable main
    E: Unable to locate package grafana-data
    E: Failed to fetch https://packages.grafana.com/oss/deb/dists/stable/main/binary-armhf/Packages.bz2 File has unexpected size (27537 != 27465). Mirror sync in progress? [IP: 151.101.198.217 443]
    Hashes of expected file:
    – Filesize:27465 [weak]
    – SHA512:dc94d4fbb856ff2d5441416f27024b0ca263f9cbc91edc3f1e44517843e\
    2217d8114062cd6039a2ef95f3ffa736ac4e0413add503e1756f9679f4157b2fc5f62
    – SHA256:4a44601f7e28d7fb6fd9f6886953a9d69972f6e91baeb0f0612d686c938e3957
    – SHA1:e5c908c673466a462156d7b5aeed0fb8bdb0e824 [weak]
    – MD5Sum:b97a895ffdea473d6141ecbfad4a58a9 [weak]
    Release file created at: Thu, 29 Jul 2021 10:11:04 +0000
    E: Some index files failed to download. They have been ignored, or old ones used instead.
    E: Package ‘grafana’ has no installation candidate
    Failed to enable unit: Unit file influxdb.service does not exist.
    Failed to start influxdb.service: Unit influxdb.service not found.
    Failed to enable unit: Unit file grafana-server.service does not exist.
    Failed to start grafana-server.service: Unit grafana-server.service not found.
    Failed to enable unit: Unit file chronograf.service does not exist.
    Failed to start chronograf.service: Unit chronograf.service not found.
    Detected platform: linux-arm

    1. Hi

      A real email would be nice if you want to ask questions… anyway it seems that the InfluxDB people are no longer interested in 32-bits – so it’s out of my hands. I’ve already seen comments about no plans to make Influxdb2 available for 32-bit (ie most) Raspberry Pis. I might be able to upgrade the script to the new location (nice of them) for the repo for Grafana – but I’m in the same boat for new installs as I’ve no wish to go through the hassle of upgrading the RPI to the 64 bit version, cost me endless hours a while ago in a failed upgrade.

        1. i don’t know what he’s using, but that line he mentioned is triggered only if detected architecture is armv6, which is the one of rpi1/0/0w… time to move to more advanced devices 🙂
          i can’t even image to wait half a day to having everything “working” on such low power devices…

    1. The script merely installs Node Red, it does not control what Node Red does.Also not tested the script on M2+, indeed in the last year or so I’m only aware of testing on Rpi3 and RPi4.

      Regards

      Pete

  16. When running the script, it fails….
    The message I receive is:
    !!!! No internet connection available, aborting !

    The internet connection shows to be OK via the web browser.
    The demos of the end result in use looks great, videos by Andreas..
    Please advise.
    Thanks!

  17. Dear all,

    I was using Peter’s script for several months. Node RED, Mosquitto, SQLite, etc. everything was running fine. Then I thought I want to try IOTstack. I used another SD card. I tried to use MariaDB with Adminer as a replacement of a good combo SQLite/phpLiteAdmin. I failed so I run Peter’s script to get SQLite/phpLiteAdmin. I moved my old iot.db file into ~IOTstack/volumes/nodered/data folder. in phpLiteAdmin I see the content of my database but I get the information that the file is not writable. Could anyone advise how to fix the problem?

  18. Hi Everyone,

    I remember reading one article about a script to install HASS, node-red, mqtt broker and everything else needed for home automation, but for some reason I can’t find it anymore.
    I think it was something similar to “The Script”, but it used docker containers instead.
    Can you please let me know?

    Thanks in advance.

        1. My prefered route is Node-Red, Mosquitto, NR Dashboard, Grafana… I’m playing with HASS in Docker but I’m half convinced its putting a heavy load on my 2GB Pi4 (with SSD).

  19. Me again with new information. It appears there was a change between my older version of the system installed with “The Script” from a year or so ago and the new current one. If I supply a username and password I can publish and subscribe. The old system was allowing anonymous connections. I have a dozen or so Wemos D1′ that are not able to publish and would be hard to reconfigure. How can change mosquitto to allow anonymous connection and not use passwords? I tried a couple online tutorials and they failed. I must be missing something.

      1. Thanks much for The Script. Went through the exercise of setting up node-red, influx and grafana manually some time ago and recently found your script with lots of nice extras so thought I’d do another install using your script. Went awesome on a new pi4 but encountered the same problem as Rich above.

        Since I have a lot of IOT sensors built without sending authentication to an MQTT broker, didn’t want to recode them all so discovered all you have to do is go to the /etc/mosquitto folder and edit the mosquitto.conf file to include allow_anonymous true. My network is closed and locked down from the outside world so not too worried about security of my iot devices. My goal is to keep everything off the cloud as I VPN in to all my home automation stuff.

        I’m impressed with Cockpit….a very nice utility. Appreciate all your great work consolidating installation of all these great applications.

        Would be nice to see PiVPN on here too but right now it’s beyond my 74 year old mind and skill set to make that happen and happy to keep it on a separate pi0w

        Warm regards
        Bill

        1. Honestly I thought VPN setup was beyond me but PIVPN really IS easy. You are told to set up a certificate – but you don’t actually need to understand what it is. The PIVPN install does it all for you – and at the other end – maybe your phone – you run the free OPENVPN and simply have to transfer the .ovpn file created by the PIVPN installer to OPENVPN on the phone. Once I got over THAT fear I’ve since tackled other VPN setups….

  20. I think I am missing something. I did the rpi-clone from a 32Gig uSD card in the PI to a 32Gig uSD card in a USB to uSD adapter. I was under the impression that if I did the “sudo rpi-clone -f -U sda” operation I could remove the uSD card and put it in a Pi and it would run as it was when cloned.

    1. It should. I use Sandisk and Samsung uSDs and they work. Looks to me like you did it exactly right. Assuming you have enough room on the destination you can also use a larger, same size or smaller destination disk normally without issue. I do this all the tim (but since discovering SSDs I’ve been doing the same with those – same but sometimes more power sensitive – uSDs generally just work).

      1. After trying another fresh clone uSD both were same size as original and SanDisk brand. Would not boot in new Pi. I installed NEW Pi image and ran the script. Once it completed I created a couple nodes and could not get connected to MqTT. Tried command line mosquitto_sub -t test -v and I get connection refused. mosquitto is running, I checked to make sure. I am now lost!

  21. Hi Peter I appreciate ‘The Script’ the most, discovered it thanks to Andreas Spiess. A big THANK YOU for that!! I installed a new RPi4 and it didn’t go further on the blue config screen… waited for hours… until I discovered to handle it correctly with tab&Space… thanks to the hint of one of the last comments. So, please, for non-English natives the sequence might be not that clear. Maybe you could modify the instruction line on that screen or detail it at least in the ‘newbies section’ above. Best regards, Stephan

  22. Hello,
    my apologies, tried to execute “The Script” on a Raspberry Pi 2B with
    DietPi v6.31.2 HW_MODEL:1 HW_ARCH:1 DISTRO 5 (Raspberry PI OS (32-bit) Lite)

    Trying to install SSH after complete Execution of “The Script”
    showed an ERROR:
    GPG error: http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY C2518248EEA14886
    E: The repository ‘http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease’ is not signed.
    Tried mitigation measure listed under this c2518248EEA14886 in the thread, but did not work.

    Thanks& Regards
    Michael

    C2518248EEA14886

  23. Hi
    I’ve installed the latest version of the Script (14/5/2020) on top of a fresh install of Raspberry Pi OS (27/05/2020) on my RPi 3B. Nearly everything works except for Mosquitto MQTT broker does not start.

    In the boot up screen I get this error: Failed to start Mosquitto MQTT v3.1/v3.1.1 Broker. The output from “systemctl status mosquitto.service” is as follows:

    systemctl status mosquitto.service
    ● mosquitto.service – Mosquitto MQTT v3.1/v3.1.1 Broker
    Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Mon 2020-07-13 12:07:42 BST; 59min ago
    Docs: man:mosquitto.conf(5)
    man:mosquitto(8)
    Main PID: 2298 (code=exited, status=3)

    Jul 13 12:07:42 HomeServer systemd[1]: mosquitto.service: Service RestartSec=100ms expired, scheduling rest
    Jul 13 12:07:42 HomeServer systemd[1]: mosquitto.service: Scheduled restart job, restart counter is at 8.
    Jul 13 12:07:42 HomeServer systemd[1]: Stopped Mosquitto MQTT v3.1/v3.1.1 Broker.
    Jul 13 12:07:42 HomeServer systemd[1]: mosquitto.service: Start request repeated too quickly.
    Jul 13 12:07:42 HomeServer systemd[1]: mosquitto.service: Failed with result ‘exit-code’.
    Jul 13 12:07:42 HomeServer systemd[1]: Failed to start Mosquitto MQTT v3.1/v3.1.1 Broker.

    1. Hi Kim

      Sorry to hear you had issues installing MQTT. In the process of moving for the summer, I’ve made a brand new installation with the script and updated several others…all to the latest Raspbian as I need SSD booting (blogged). I’ve certainly had no issues with Mosquitto so I’ve no idea why you have. On the other hand I just sold my last RPi3 in favour of RPi4 (for the fast USB boot) so slightly different scenario but of all the things to go wrong, Mosquitto is the last one I’d expect to give grief.

      1. Thanks for your response. I’ve fixed it now. It was a combination of a permissions issue and using the include mechanism in the mosquitto.conf file which ended up with me having multiple password files. Trouble is, there’s so many conflicting tutorials on setting up mosquitto, it’s very confusing for a Linux newbie like me.

        I’m using my RPi3 as it was spare after upgrading my NAS to a RPi4. It seems capable enough to run my DIY home automation system.

        1. WELL, I’m very pleased you resolved the issue – great… and yes, much of the time even the old RPi2 is good enough for home automation. If only they’d included USB3 in the RPi3, we might not have needed the RPi4 but to make real use of an SSD drive, you really do need USB3, hence my logic for moving to the RPi4.

          Thanks for the feedback, much appreciated.

  24. Hi, all
    I am new in unix and still playing with ioBroker on RasperryPi 4B. As I was unable to install MQTT due to issues about dependencies I tried The script but was not successful as it did not install anything. Assumin it may be the previous broken installs. Today I started with a new system. The script started until the screen where to select the options. I only deselected quiet then Tab for OK or Cancel but then nothing. I expected to be asked for somthing, but no
    The Log shows the following:
    ############################################################
    Welcome to ‘The Script’
    Vormals nicht ausgewähltes Paket libncurses5:armhf wird gewählt.
    (Lese Datenbank …
    (Lese Datenbank … 5%
    (Lese Datenbank … 10%
    (Lese Datenbank … 15%
    (Lese Datenbank … 20%
    (Lese Datenbank … 25%
    (Lese Datenbank … 30%
    (Lese Datenbank … 35%
    (Lese Datenbank … 40%
    (Lese Datenbank … 45%
    (Lese Datenbank … 50%
    (Lese Datenbank … 55%
    (Lese Datenbank … 60%
    (Lese Datenbank … 65%
    (Lese Datenbank … 70%
    (Lese Datenbank … 75%
    (Lese Datenbank … 80%
    (Lese Datenbank … 85%
    (Lese Datenbank … 90%
    (Lese Datenbank … 95%
    (Lese Datenbank … 100%
    (Lese Datenbank … 46057 Dateien und Verzeichnisse sind derzeit installiert.)
    Vorbereitung zum Entpacken von …/libncurses5_6.1+20181013-2+deb10u2_armhf.deb …
    Entpacken von libncurses5:armhf (6.1+20181013-2+deb10u2) …
    Vormals nicht ausgewähltes Paket ccze wird gewählt.
    Vorbereitung zum Entpacken von …/ccze_0.2.1-4_armhf.deb …
    Entpacken von ccze (0.2.1-4) …
    libncurses5:armhf (6.1+20181013-2+deb10u2) wird eingerichtet …
    ccze (0.2.1-4) wird eingerichtet …
    Trigger für man-db (2.8.5-2) werden verarbeitet …
    Trigger für libc-bin (2.28-10+rpi1) werden verarbeitet …
    OPSYS: RASPBIAN
    ############################################################
    Grabbing some preliminaries…
    DISTRO: 10
    CHECK64: armv7l
    USER: pi
    ############################################################
    Stopping IPV6 access
    ############################################################
    Allow remote root login and speed up SSH
    Restarting ssh (via systemctl): ssh.service.
    update-alternatives: Fehler: keine Alternativen für newt-palette
    Paketlisten werden gelesen…
    Abhängigkeitsbaum wird aufgebaut….
    Statusinformationen werden eingelesen….
    avahi-daemon ist schon die neueste Version (0.7-4+b1).
    Das folgende Paket wurde automatisch installiert und wird nicht mehr benötigt:
    rpi-eeprom-images
    Verwenden Sie »sudo apt autoremove«, um es zu entfernen.
    Die folgenden NEUEN Pakete werden installiert:
    avahi-utils
    0 aktualisiert, 1 neu installiert, 0 zu entfernen und 6 nicht aktualisiert.
    Es müssen 54,6 kB an Archiven heruntergeladen werden.
    Nach dieser Operation werden 128 kB Plattenplatz zusätzlich benutzt.
    Holen:1 http://ftp.cica.es/mirrors/Linux/raspbian/raspbian buster/main armhf avahi-utils armhf 0.7-4+b1 [54,6 kB]
    Es wurden 54,6 kB in 1 s geholt (79,5 kB/s).
    Vormals nicht ausgewähltes Paket avahi-utils wird gewählt.
    (Lese Datenbank …
    (Lese Datenbank … 5%
    (Lese Datenbank … 10%
    (Lese Datenbank … 15%
    (Lese Datenbank … 20%
    (Lese Datenbank … 25%
    (Lese Datenbank … 30%
    (Lese Datenbank … 35%
    (Lese Datenbank … 40%
    (Lese Datenbank … 45%
    (Lese Datenbank … 50%
    (Lese Datenbank … 55%
    (Lese Datenbank … 60%
    (Lese Datenbank … 65%
    (Lese Datenbank … 70%
    (Lese Datenbank … 75%
    (Lese Datenbank … 80%
    (Lese Datenbank … 85%
    (Lese Datenbank … 90%
    (Lese Datenbank … 95%
    (Lese Datenbank … 100%
    (Lese Datenbank … 46102 Dateien und Verzeichnisse sind derzeit installiert.)
    Vorbereitung zum Entpacken von …/avahi-utils_0.7-4+b1_armhf.deb …
    Entpacken von avahi-utils (0.7-4+b1) …
    avahi-utils (0.7-4+b1) wird eingerichtet …
    Trigger für man-db (2.8.5-2) werden verarbeitet …
    After waiting for more than one hour still same blue screen in console. Am I too unpatient?
    Regards Gerhard

    1. Anyone any ideas? I don’t speak German which doesn’t help. “Stopping IPV6” is right as that is turned off in the script – but from there… an hour is excessive – even with quiet turned on, some of the 3rd party scripts called by “the script” are noisy and may show warnings only (lots of them in once case) – I would not expect silence for more than a few minutes at any time during the install. But then it is stated somewhere on the blog that this should be installed on a clean device, and NOT the NOOBS version of Raspbian – not a machine with previous broken installs on it, in which case it could be anything. I suggest Raspbian Lite straight from the Raspberry Pi store. I just installed the latest script version on two such machines (I’d already installed rpi-clone as well but that won’t do any harm). The script pulls in all necessary dependencies first so MQTT should install just fine.

      1. Hi Peter,
        thankyou for your quick respond.
        Obviously I was too impatient. After several hours later as this blue sceen still not changed and I was sure that the installation failed again, I pressed Tab and got asked about these passwords. Then everything went until to the end. I rebooted and can see in FTP client that installation sucseeded. The only drawback is I cannot open the ioBroker on port 8081 on Port 80 I see your default Webpage. process iobroker is running. Any idea what is wrong.
        Regards Gerhard

        1. I cannot comment on Iobroker – on their website it says (righly) that the English instructions are for JESSIE and out of date – it then recommends we go to the German instructions and as I don’t speak German that’s not easy for me to progress. Even running TRANSLATE on the recommended link, they refer to an outdated version of Raspbian called STRETCH so it seems that keeping up to date with Raspbian is not a priority. Until recently the Pi operating system was referred to as BUSTER (the underlying Debian version BUSTER which appeared mid-2019 and will be supported iunti 2024) and now referred to as “Raspberry Pi OS”
          IOBroker looks to be very popular but mainly in Germany and that is where the developers are. I suggest aasking them questions on their GitHub pages (which appear to be in English and have been updated recently). https://github.com/ioBroker/ioBroker/issues unless someone in here steps in.

          Pete

          1. Hi Peter,
            As ioBroker was fine in Buster before I ran The Script I guessed that something was changed during this process. If you think this is not the case I shall try to reinstall iObroker over the existing installation. I shall keep you informed.
            As The Script is concerned I wonder if it may be possible to implement a message indicating to the user to be patient until the process will continue at least to include this information into the manual. Otherwise it appears, especially for non english people, that the process has stopped after pressing Tab for the first time when expecting a immediate confirmation OK/Esc as written in the first line in the blue.
            window. Or change the text of this line into something like “Press Tab to continue and wait for pressing Tab again for continue or Esc for exit”
            Regards Gerhard

            1. Hi

              The delays in the script are caused by third party scripts and installation programs, the content of which is out of control of the script itself. There is no manual for the script, it is self-documenting. In the blog entry “the script” I have now added a paragraph to suggest expecting periods of no output.

  25. Hi Peter,

    Firstly, thanks to you and team for producing the script. It’s taken me a long time to get here. but I’m trying it for the first time today.

    Installing (3 attempts to eliminate user error) on a Raspberry 3 with fresh Buster Lite (2020-02-13-raspbian-buster-lite.img) I was getting the following errors:

    [snip snip]
    avahi-utils is already the newest version (0.7-4+b1).
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    Box options:
    –msgbox
    –yesno
    –infobox
    –inputbox [init]
    –passwordbox [init]
    –textbox
    –menu [tag item] …
    –checklist [tag item status]…
    –radiolist [tag item status]…
    –gauge
    Options: (depend on box-option)
    [snip snip]

    I’ve narrowed down the problem to extraneous two tabs at the end of line 494

    “cockpit” “Install Cockpit” ON \[tab][tab]

    removing these cleared the problem.

    Forgive me if this is my error or a known problem.

    Regards,

    Dominic

    1. Hi there Dominic – the “team” is largely Antonio (Mr Shark) and I with helpful folk like yourself occasionally pointing out issues and providing solutions.

      Assuming you are right – and I’m pretty sure you are – but feel free to test – I’ve already put out an update with those two tabs removed.

      That’s what I get for putting out “trivial” changes without testing. I won’t do that again in a hurry – but we had so much on this weekend…

      Anyway thanks for your input – I’ve noted it in the updates section in “The Script”. Busy working on ESP32 today… and some new solar lights from Bangggood – and… bored, me? Never.

      Of course you have to wonder – who would design a scripting language that cared about extra tabs!!! Maybe the same folk who make languages case-sensitive. When I say in English “Hi there” – it means EXACTLY the same as “HI THERE”…. 🙂

      1. the backslash is used in bash to ESCAPE next char’s special meaning… put at the end of a line, REMOVES the special “carriage return” meaning of it, and makes next line like it’s the continuation of the previous one… this just to allow you to have a better formatting instead of a looooooooong single line… it’s then evident that adding something AFTER the final backslash will escape THAT character and NOT the EOL, causing the error the commenter had 🙂
        and that’s why every good text editor allows hidden chars to be shown someway, like spaces, tabs, eol, etc 🙂
        it’s like pretending C composed statements not to be enclosed in curly brackets, or python ones not be perfectly indented 🙂

  26. Hello Peter, I downloaded the script and installed it, just great! 🙂
    Now I’ve been working on rode ned for a long time and it makes me very happy. I have already carried out some projects that worked great.
    Since I am unfortunately not a programmer and I am not so familiar with the subject, I would have had 2 suggestions for the script. I have built an alarm message for my grandma that if you have problems I will receive an email message. The problem is that you always need internet. What would be really nice would be a kind of SMS server on the Raspberry Pi, which sends an alarm SMS to several recipients via Node Red. This could possibly be implemented using a Shield Sim800L gsm or similar. If you would like to be in a mood, you could add something so that the SMS server is simple and local, but is also addressed directly with Node Red. Greetings from the Black Forest, Bernd

    1. Hello Peter, I downloaded the script and installed it, just great! 🙂
      Now I’ve been working on rode ned for a long time and it makes me very happy. I have already carried out some projects that worked great.
      Since I am unfortunately not a programmer and I am not so familiar with the subject, I would have had 2 suggestions for the script. I have built an alarm message for my grandma that if you have problems I will receive an email message. The problem is that you always need internet. What would be really nice would be a kind of SMS server on the Raspberry Pi, which sends an alarm SMS to several recipients via Node Red. This could possibly be implemented using a Shield Sim800L gsm or similar. If you would like to be in a mood, you could add something so that the SMS server is simple and local, but is also addressed directly with Node Red. Greetings from the Black Forest, Bernd

  27. Hi all
    I have a pi3b connected connected via rj45 to my local lan.
    I have uSD loaded with the busterlite all updated per the blog.
    When I attempt to load rpi-clone using a pasted copy as per the github site I get an error message command does not exist.
    Any advice greatly appreciated.

      1. If I use the full ver of Buster it works ok!
        Each time it is a new download of either the full ver or the lite ver just plug the sd in power up run the apt update then upgrade then try the rpi-clone github site this is when it fails with the lite ver.

        I am happy using the full version just puzzled.
        thanks

        1. Well, personally I use the full version but with the default set to terminal as against desktop – as I have no need for the graphical environment. Mr Shark however (see his many comments) tends to use th elite version Lite as downloaded here – and in one installaation I have used that too – and had no problem running up rpi-clone – so I’m not sure what to say..

  28. Hi Pete.
    Newbie to linux, thanks again for the script, it’s an easy way to install the programs.
    Is it possible to group all the data and config files from Node-Red, InfluxDB, Grafana,… in a unique folder for an easier backup?

    1. Hi

      It is probably possible – but then time travel is probably possible:) – if you need that for backup, I suggest you may be doing backup the hard way. The totaal effort in the way I do backup is to type “clone” and wait a few minutes. All described in the blog.

    2. that’s why i moved to docker, which allows to keep all you data in some dedicated volumes, you just need to backup them and that’s it 🙂

      in my case i use home assistant with its addons, which makes life even easier, as you can just create a snapshot of your system and restore on a completely different system: i moved my setup from an rpi3+ to an x86 pc with no issues… all my data trasferred 🙂

  29. Hi Pete, Got a surprise when I saw “micro installed” at the end of the installation log today. Yes, I have been running “the script” a number of times on a RPi 3B over the last few days. Then I read your blog and it was clear.
    Okay, here’s the bug I think you have introduced:
    The lines added to include micro are after the attempt to change the hostname. I actually did change the hostname and the sudo commands fail after the script makes the hostname change viz
    Micro has been downloaded to the current directory. You can run it with:^M
    ^M
    ./micro^M
    ^M
    ^M
    sudo: unable to resolve host raspberrypi: Name or service not known^M

    So the hostname change must be the very last thing done!
    BTW the hostname change commands run a not existing file and it goes unnoticed because of the re-directions:
    sudo /etc/init.d/hostname.sh > /dev/null 2>&1

    I do appreciate the work that has gone into this script. Thanks.

    1. Hi there NigelTwo

      I’ve updated the script again and put the “micro” entry slighty further up. However, there remains a message as there has for some time, about “hostname not known” – this persists until the reboot only – if you or anyone can think what I got wrong there and let me know, I’ll fix this minor but annoying item – still – better to get it right.. yes, do let me know what I got wrong there. That would be helpful.

      1. The relocated “micro” entry looks (and runs) okay to me (RPi 3B Raspbian Buster Lite and changing the hostname). But while I have the microscope out… about those 3 lines you added.
        1. The first command is cd – did you mean “pwd” or “cd $HOME”? Probably you were just re-assuring yourself that the install was going into the current user’s homedir. That’s good, and on my install the script is still in $HOME at this point.
        2. The third command (apt) doesn’t seem to be acting on the -qq option. At quiet level 2 it is supposed to suppress the Y/n user confirmation. The man pages show apt-get has this option, but I am no expert in apt versus apt-get. Get more advice and proceed with caution here.

        Regarding the “hostname not known” messages. A Linux/Unix that cannot “find itself” is a worrying beast. After this script alters the two hostname related files, there are two sudo commands:
        1. The first has an error that is re-directed and is lost (on Raspbian Buster Lite there is no such /etc/init.d/hostname.sh file, and on Ubuntu the command file expects a stop|start parameter and therefore just prints a help message). I note that raspi-config wants to reboot after it changes the files. Desktop Ubuntu seems to able to survive with the help of hostname.sh.
        2. The second sudo is at the very, very end and this is probably the message you are seeing. Maybe print a message to the log that it is an expected response if the hostname has been changed, or use the effective redirection that suppressed the first sudo warning. I do agree this is minor as we don’t work for a bank or the military.

        All the above can wait until you next do some maintenance (you know, that maintenance team developing this script, winks), or you can send it all to /dev/null. Testing is time consuming, I know.
        Cheers for now, Nigel

        1. cd on its own is just fine – it takes you to your home directory. Always best to be sure. that qq option does not seem to be working. I hwill be putting up a new script.sh soon – minor issue to sort out and check first.. apt-get to my knowledge is no longer required – I simply use apt and have done for some time. Hostname not found – solved. Will update the live script file soon. I love it “”the team”….. 🙂

  30. Hi Mike, really pleased you got it working. I have learnt a couple of things too from your’s and Peter’s comments. Thanks Peter too, I might update my 3 year old version of the ‘script’ to the new version.

    1. Please do and let me know if you spot any mistakes or anything out of date. There’s nothing worse than out of date material on the web (apart from Covid that is).

    2. Yes Bob lots of things have changed – on the other hand if it works and you are happy – fair enough. But I do not have a maintenance team so don’t ask me about early versions 🙂 Antonio and I don’t even now HAVE some of the kit we tested 3 years ago.

  31. OK, well despite my reservations on Mother’s Day!! I have managed to do a quick rebuild with 32GB sd card; Rasbian Buster lite; Etcher etc and followed your instructions to the letter, Pete. Couple of minor exceptions – I didn’t change the pi password, and I ‘unchecked’ the quiet option on the menu (like to see what’s going on!). But I do have a mea culpa! I’ve been using ./script.sh as the command to run the script. So, today I did exactly as you suggest (bash script.sh) from the pi account and – hooray!! – everything worked!!! 🙂 Apache is running (checking via a networked win10 machine browser – I have the MAC address of the Pi locked to a specific IP address in my DHCP server so I know exactly where to look) and even the “The Script” index page looks good! Node-Red and Grafana both work as expected; sysinfo page is good….in short, exactly as you have said. And if all my problems have been caused by running the script in a slightly different way – well, deepest apologies, and maybe this, too, needs to be emphasised. And, yes – the sun is out here, too! But I guess for Perth that’s hardly news……. 🙂

    1. Whee. tell EVERYONE – the more the merrier. Obviously things improve as time goes on yet I constantly get people using old versiond of software and wondering why they don’t get success. I’ve yet to find a flaw in the last script update (I did some more tidying up on May 8) but it is always possible I could be using newer, better links.

      For now, I’m glad you got it running.

    2. Hi Mike

      You left another nice comment entry here which I’d managed to lose in the blog queue so I’ll paste in here from my email screen. You were slightly out in that the install procedure was not only buried in comments – it was also just a few paragraphs down – but it is now right at the TOP thanks to your prompt.

      I’m still hanging on waiting for the RPi guys to give us true USB3 boot. Here’s you last comment entry minus the now defunct section on finding the install info:

      Well, even better news! I believe I mentioned that my ultimate intention was to have the root f/s on a (spare 240GB) USB3 SSD, leaving the boot partition on the – somewhat smaller! – SD card. This is, as I understand it, the recommended way to have the system essentially running from a larger drive on a RPi4 – and believe me, a USB3 SSD is considerably quicker than a SD card!

      I hadn’t had a lot of success running the script with this configuration, and hence some of my earlier comments. However, after the success yesterday with a ‘vanilla’ SD configuration, I decided to try again this morning.

      This time, I used the ‘mid-sized’ Raspbian image. There’s a certain amount of configuration to be done – the latest versions of Raspbian set the Partition UUID identifier to the same value every time! This means an obligatory change of PUUID on the SSD to differentiate it from the SD card in the FStable. But we got there, and after it was all running successfully – and updated as per Pete’s comments – I crossed fingers and ran the script.

      Oh, one issue – the ‘unwanted’ partitions on the SD card (rootfs) and the SSD (/boot) seem to mount automatically when the device boots, so I first unmount them to make sure there’s no confusion by the script as to what f/s is to be changed. (To run via USB, you first flash both SSD and SD card with the same Rasbian version). And it worked!! Again!! It MUST be that stupidly small error of not using ‘bash script.sh’ that has been causing all my heartache! Everything is installed just as I’d expect – and as I have always found in the past.

      Thanks again – and onwards and upwards….. Oh, and stay safe!

  32. Thanks, Peter and Bob for your very informative and helpful replies. It’s early morning (and a sunny Mother’s Day!) here in Perth, so I probably won’t get a chance to retry today. One comment – the Pi4 uses an ‘official’ Pi4 power supply, so I don’t think current draw is a problem. Bob, I will say that on my early efforts, I had let the initial boot-up process run to full completion, upgrading locale, time, date, passwords, files, setting ssh, wifi connection (I normally connect through ethernet) etc etc and it was because of the spectacular failures with that option that I tried without going through any of that process to make sure that one of those changes wasn’t causing my problem. And Peter – yes, the script most certainly was the most recently modified (07 May) version. I double-checked that before running it! Two things that I didn’t do that you recommend. I didn’t (obviously) run an update / upgrade sequence after booting. I also didn’t create the ssh file. I normally do, but as I wanted to run this entirely on an attached local console monitor, it didn’t seem necessary. Also, of course, I chose a few more options than you appeared to do. I will try again – I’m lucky as this is a brand-new Pi4 that doesn’t have any information on it, so I’m not in any fear of losing anything. In fact, I was attempting to – very successfully – operate it from a combined sd card / USB3-SSD combination (boot on sd and rootfs / on ssd) for speed and storage capabilities, but have reverted to just a sd for script test purposes after the early failures. Small steps first – and I’ll certainly report my observations.

  33. Mike, I do not have either Peter’s or Antonio’s expertise on the script but reading your post I wondered if you should maybe let the full set up run on the Pi before trying to install the script. The set up after the initial successful install of ‘Buster’. I installed ‘Buster’ on 3 Pi’s recently a 3B+, 3b and 4 with 4 Mb. I was surprised how my files were updated given I used the latest ‘Buster’ release. Just a thought or two!

    1. Hi Bob – I’ve now hopefully made it abundantly clear in this blog entry that Buster install should be followed by adding the blank ssh file for remote access, sudo apt update and sudo apt upgrade as well as installing rpi-clone (even though it is added in the script) to avoid un-necessary heartache if a mistake is made and backtracking is required at any point. I learned these steps the HARD way.

      Anyone else reading this – don’t take any or changes or shortcuts… e all think we have a better way.

      To avoid confusion, if I messed anything up today in the blog entry, please contact me directly by the contact form and I’ll fix – there may be a gap as the sun is out and my garden is waiting. Antonio woulds normally be passing me private comments by now but this is not a good time for him.

      Regards

      Pete

  34. Thanks Pete for checking. I really must be doing something terribly wrong at this end? Perhaps the script doesn’t like running upside down….. 🙂 Yesterday, I flashed a brand new 32GB sd card with the latest Rasbian Buster full version and booted my RPi 4 with 4GB RAM. I cancelled – immediately – any form of set-up and ran the latest modified script. And, I’m sorry to say, it was a disaster. Nothing seemed to work after rebooting and testing. So, in view of your comments about Rasbian Light, I did the same again. Reflashed the sd card with the latest Lite version, and ran (via wget etc) the script immediately after a successful boot. No mods at all – straight into the script. And the output doesn’t look good. Node-red is running, but that’s about all. After rebooting, the info tells me mosquitto can’t run; I know Apache isn’t running as I cannot connect (“192.168.100.155 refused to connect.” and I can see that it refuses to start); Grafana is ‘stopped’ etc etc. So something is really amiss. Is it the version of Rasbian? (My full version is dated 10 Jul 2019 and Lite is 13 Feb 2020). Is it the Pi model itself – we know the model 4 has some significant changes from earlier models? And as I say, this has been run on an absolutely ‘raw’ version of the OS in both cases. As the script has been so successful and useful in the past on other model RPi, it seems to a great pity that I’m having such spectacular un-sucess now! Any comments gratefully received!!

    1. Hi Mike there is probably something we’re not seeing in your message above – or you are running the qrong script – because I took the latest Raspbian Buster Lite from the web, put it on a brand new (several weeks old) Raspberry Pi 4 using BalenaEtcher on my Windows 10 64 bit PC,adding the empty text file “ssh” which the uSD was still on the PC, took the uSD and plugged it into the Pi (remember you need a supply able to deliver 3 amps max).

      At that point I turned on the Pi while plugged into my RJ4 network at which point I logged onto it from my PC, using the default password with MobaxTerm on the PC.

      Before installing the script I keyed in:

      sudo apt update
      sudo apt upgrade

      wget https://bitbucket.org/api/2.0/snippets/scargill/kAR5qG/master/files/script.sh

      See script update of May 7, 2020 – that’s where that link came from. P unnched that into the Pi and then typed:

      bash script.sh

      into the Pi – at which point I was asked if I wished to update passwords etc which I did – and selected the first Node-Red option as well as adding in Grafana from the menu (I did not slect Webmin as that takes ages)…. a while later, as instructed, I rebooted the Pi (sudo reboot) and a minute later – a working Pi.

      I’m going to further improve the blog this afternoon to make all of that crystal clear. If you did anything DIFFERENT to that, start utterly from scratch, don;t try and bodge it.

      Now, having backed up the original Raspbian (with on addition necessary to back it up), I have one uSD with only Raspbian and rpi-clone on it – and another with a fully functioning Node-Red + MQTT + Grafana to experiment with.

      Look for blog updates I just completed (UK lunchtime May 9, 2020). Just FORGET the idea that the RPI4 being different or Buster being different is causing your problem as I hope I’ve just demonstrated.

      Good luck.

  35. I’ve just had a couple of spectacularly unsuccessful attempts to run the script on a 4GB RaspberryPi4 with latest Rasbian Buster desktop version. In the first, the script ran but nothing, apart from Webmin, appeared to work – for example, I could not connect to the webserver locally or via my local network. I uninstalled apache2 and reinstalled it and then I could see the ‘Pete’s Utilities’ (index) page. However, NO css – and I find that if I attempt to look at ‘typecast.com’, it immediately relocates to ‘monotype.com’. However, even without the bells and whistles of the css file, I can still now click on the links. Except nothing appears to work. Both Node Red links are ‘Unable to Connect’. Same with Grafana and SQLite. So, in the spirit of ‘what have I done wrong?’, I started from scratch. Reinstalled Raspbain Buster again, and went through a complete start-up process. Used wget to get script via ‘sudo wget https://bitbucket.org/api/2.0/snippets/scargill/kAR5qG/files/script.sh‘ and ran it again. And exactly the same! Again, reinstalled apache2 and, again can only see the index file details without the associated css. And, again, nothing works except Webmin. Now, like many here, I have run this script many – many! – times on older (RaspPi3) with hardly any problems at all, and I’m eternally grateful for the work you have put into it. But now, it just seems to be a disaster! So, any advice will be very useful! Is it something to do with Buster? The RaspPi model 4? Looks like I’d better reinstall Rasbian – again! – to get a ‘clean system, and then will wait this time for any helpful comments…..

    1. Seeing no reference to typecast in the script – – without pulling it apart the reference must be inside some third party script used by the script. Node-Red – well, that uses the official upgrade/install script for Node-Red and I know that works better now than ever before. Get the updated script as of this morning, I simply changed references to https://tech.scargill.net/iot/…. into https://tech.scargill.net/iot/…. as that might help with your css.

      1. it’s used in your css file to download the fonts, i think, the site is now gone, if you search in comments someone said it could help in changing that, but don’t know how it went after those comments…

        for script, please try using raspbian-lite, not desktop, see if that helps, i can’t test anything right now as all my stuff is at my home and i’m at my parents for 3 months now, locked out…

        1. I am currently outfitting an /RPI4 with Raspbian Lite after doing the full update and upgrade – howevever if it all works, I WILL remove the DARK SKY node as it is now defunct and replace it with an alternative. I see the SQLITE script hasn’t improved any in recent months – still throwing out a sheload of un-necessary warnings – If I knew more about it I’d write my own version. I’m also taking out th CSS JS in the sample web page as clearly the relevant site is now dead. I need an alternative to make the sample page look pretty.

          1. no, YOU can! 😀
            really, flash a raspbian lite and run the script, it’s been a while we don’t test it completely, and in case of problems send me the logs you’ll get… for css, it’s up to you, change that file to something else not using online fonts, or just using google ones, always available…

            1. Well guys I have just spent the afternoon running the Script on a Raspberry Pi 4 using a brand new “Raspbian Lite” – the only thing wrong was that dead external website for the basic web page includes – I have now GUTTED that page so it no longer relies on external resources – I’ve updated the script accordingly – also removed the DARK SKIES node and in general it all just WORKS. I’ve tested Node-Red, Mosquitto, Grafana SQLite Admin and SysInfo to ensure they all come up without issue. All looks fine to me. Over the weekend I’ll likely go through the script looking for other potential updates. For now, all is well.

  36. I have zigbee2mqtt running on a separate RPi to the one I use for the Script (excellent – thanks).
    I tried today to combine the Script installation (a fresh one) with zigbee2mqtt. I had node-red and Mosquitto mqtt running before I attempted to add zigbee2mqtt. The flashed dongle was found OK. I got stuck with installing –
    sudo apt-get install -y nodejs git make g++ gcc
    When I tested the node –version there was no response.
    I got a positive result with npm –version
    I woud be interested to know how you get on.

    1. All of those are already preinstalled by the script, so you can just go on with zigbee2mqtt install, skipping that command…

      from official install: https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html

      You can just go to the “Clone zigbee2mqtt repository” part of point 2… you already have nodejs 10 I think, I haven’t run the script for the last few months but v10 was there for sure, maybe now is even v12 (we just run the official nodered install script from inside Pete’s script, which takes care of downloading the latest nodejs version)…

      I think that running that 1st command could have broken something, maybe going to overwrite the node version preinstalled by the script… restart fresh, and do as I said, it should work 🙂

      1. Result (nearly). I have managed to install zigbee2mqtt along side the Script installations (node-red, mqtt, +=).
        I followed your instructions and it was straight forward. Getting some cross-talk between RF signals and tasmota devices but that may be due to the reinstall of flows. S now running a single RPI to do all the work.
        Thanks again.

  37. Really helpful install script.
    Can I ask if you think zigbee2mqtt could install and run along side the script installations.

  38. Hey Peter,
    Thanks for your response. I managed to solve the issue by: installing Buster, and changing “wget –no-check-certificate https://bitbucket.org/api/2.0/snippets/scargill/ekon6o/master/files/script.sh” to “wget –no-check-certificate https://bitbucket.org/api/2.0/snippets/scargill/kAR5qG/master/files/script.sh“. Now I’ve run into another issue which I don’t understand how to fix.
    Running the most updated version of Buster on a 3B+ now. It seems to choke on the Node.js LTS Install, then doesn’t install node-red after that failure.
    Drops a lot of the following error codes:
    script.sh: line 823: cd: /home/pi/.node-red/: No such file or directory
    script.sh: line 1278: npm: command not found
    This was based off a the Raspbian Buster for Desktop, I will try again with Buster with Desktop and Recommended Software, but don’t expect this to fix it… Any ideas? Thanks again for taking the time to help

    1. That wget issue was probably caused by copying the wget line from the blog – not from the scdipt itself. If you point me to the relevnt blog andline I’ll fix that…. node – that;s for the node people to fix…. install exactly as recommended.

      1. I got the working wget line from “The Script” from https://bitbucket.org/snippets/scargill/kAR5qG/the-script on line 46. On this blog you have /ekon6o/ instead of above. This blog post also requires a fix, as it also says /ekon6o/. https://tech.scargill.net/the-script-and-esp8266-code-for-beginners/.
        I managed to fix the problem: Turns out my issue was in using the plain Desktop version of Raspbian Buster. When I used the Raspbian Buster with Desktop and Recommended Software, it worked out!
        Big thank you to Peter for putting this awesome package together and providing it to the public. Excited to get using it now

  39. Hi All,
    I’m relatively new to using the RPi, and am trying to install the script without success. I’ve installed Stretch on my Pi 3+, updated and upgraded it, yet when I try to run the wget, I get the error in the image. I’ve tried Googling but can’t seem to find an answer to my issue. I’d really appreciate some help if possible. Please forgive my lack of knowledge around these things, I’m learning…
    Don’t know if this helps, but this is the guide I’ve been following to install everything. https://www.youtube.com/watch?v=2gvRVaHxhW4&feature=youtu.be

    1. The current version of Raspbian is BUSTER, not STRETCH… and no hanges o the script have been made in the last couple of months that would affect the wget or the instructions in thw script itself. Much as I’m grateful to the writer of the video you sent for mentioning my work I cannot comment on the advice of others. The two people who know the most about using that script would be myself and Mr Shark and we keep the script updated as best as possible in the face of changes elsewhere. I suggest loading a clean BUSTER and you should set everything up as user PI, not ROOT.

  40. Thanks for all the work on the Script. It’s my goto for easily setting up a new Pi with most of the stuff I want. This week I used the Pi foundation’s new imager to flash an SD card with their latest version of Raspbian and then went through the steps to install the script. Has anyone else noticed that the CSS, reset.css, no longer works correctly on the Apache home screen?? I think I traced the failure to the call being made to typecast.com which is now redirected to another website. When I get some time this week I’ll slip in some of my own CSS to see if this is the culprit.

    1. Tom, if you manage a fix, please DO comment back – I’ll fix script… I’ve not used for a while as I keep successfully cloning Pis.

  41. Hi All,
    What is the best way to remove all the apps that the script has installed, or to revert the script process all together.

  42. Dear Pete,

    I am now trying to get a Buster system up and running on a rpi3+.
    I took a copy from the image and ran The Script. copied all my flows and databases to it and no big problems.
    I now found out that you did not copy the setup script of rpi-clone to usr/local/sbin! So with the script you cannot use -s option. Is this done with a reason?
    I have major problems running rpi-clone on this fresh Buster system, but I must dig in a bit deeper to find out what is going on. Lots of fault system crashes grrrrrrr….

        1. I use rpi-clone separately to script. You should copy rpi-clone and the setup file to your pc. I am in the USA on holiday so cannot get to my installation to take a look.

  43. I would love to thank you for your script. It has helped me immensly in the past. However now on the latest Buster the package selection tool doesn’t pop up after the initial Bash command. I’ve tried twice on new installs and the same thing.
    pi@N-red:~ $ bash script.sh

    ==
    == Welcome to THE SCRIPT!
    == Total: 00h:00m:00s Cores: 4 Temperature: 46’c
    ==

    Selecting previously unselected package libncurses5:armhf.
    (Reading database … 39968 files and directories currently installed.)
    Preparing to unpack …/libncurses5_6.1+20181013-2+deb10u2_armhf.deb …
    Unpacking libncurses5:armhf (6.1+20181013-2+deb10u2) …
    Selecting previously unselected package ccze.
    Preparing to unpack …/ccze_0.2.1-4_armhf.deb …
    Unpacking ccze (0.2.1-4) …
    Setting up libncurses5:armhf (6.1+20181013-2+deb10u2) …
    Setting up ccze (0.2.1-4) …
    Processing triggers for man-db (2.8.5-2) …
    Processing triggers for libc-bin (2.28-10+rpi1) …

    ==
    == Grabbing some preliminaries…
    == Total: 00h:00m:25s Cores: 4 Temperature: 47’c
    ==

    !!!!pi@N-red:~ $

    Am I doing something wrong?

    1. I don’t see what went wrong here but then you’ve not provided any clues as to what hardware and software you are using this on – I’m no even sure you are on the latest script – maybe I need to put the last update date on that title. I can tell you that the current script (which has not seen any mods in weeks) works with Buster on RPI3 and 4 (not tried RPI2 recently but I’ve no reason to doubt it will still work).. only this week I installed the script on Debian – not even on a Pi but on a PC running the Windows Linux SubSystem – the script was fine apart from some Apache issues – but after getting nearly everyging going I abandoned the lot because it turns out that the Windows Linux subsystem (WSL) and the Windows “store” “Debian” (Buster) are not a direction worth pursuing – can’t do this, can’t do that, however, by the time I came to that conclusion the script had run through from one end to the other – and as I say, that is on a PC, not a Pi. On Pi3/4 with Buster it is fine. Just for confirmation: when I refer to Buster on the Pi I’m generally referring to the non-Noobs version, either with or without the graphical desktop.
      While I’m here griping about Windows – I also had a go at installing Debian in a virtual PC on my Windows 10 PC. It ran like a DOG – at the end of the day I got more speed out of a Raspberry Pi 4 than any of the attempts to emulate it. You have to ask, given the cost of an RPI3 2GB+PSU, is it even worth trying to emulate… better to get a small monitor (I have an HD 10″ on the way) and just stick the Pi + PSU on the back of it, perhaps.

      1. I apologise for not giving more info, i got ahead of myself.
        I’m using RPi3 on Buster lite.(no NOOBS)
        Im using the script with version of “This version of “The Script” October 26 2019″.
        I shall give it a few more goes. maybe the SD card is corrupt. Thank for a quick respons

  44. Since both of you agreed upon that the RPi Zero is under-powered I went out and got me some toys.
    Bought an RPi4, and two cheap compatibles – just to try and learn.
    – The RPi4 is easy enough
    – Banana Pi M2+ – it was available and cheap enough
    – Orange Pi zero – so outrageously cheap, i could not say no.
    Installed Armbian Buster on the BPiM2+ and “the script” just breezed thru, no problems that I could see, and a working system, with the basics, MQTT, Nodered, Webmin. Performance just as good as the RPi3B+ with quick boot thanks to the onboard 8GB emmc.
    The OPi0 was more of a challenge, only because the Armbian Buster Image seems broken, wasted hours getting it to boot – but nothing.
    With an Armbian Bionic Image it booted up and your script also went thru without notable problems.
    Amazing, what kind of performance is available from these little SBCs.
    The RPi4 is overkill for my home automation so it is now running LibreElec with the latest version of Kodi. Good picture quality, great sound.

    1. Excellent Mike – glad it all worked for you. As for RPI4 being overkill – maybe now but wait until you get more ambitious later – it should have plenty of reserve – and when the RPI guys get their act together, there should soon be USB 3 boot for it which will make it even better 🙂

      Pete

  45. Hi Peter
    I have been experimenting Chromebook’s Linux beta and it is very exiting environment to run Node-red and etc. I tried to run the script without success. Got following:

    ==
    == Leaving script as you are neither PI nor ROOT user.
    == Total: 00h:00m:22s Cores: 4 Temperature: Unknown
    ==

    Regards,
    Jaakko from Finland

    1. Hi there Jaakko
      I don;t think anyone ha ever suggested this would work on a Chromebook… certainly if you are not on a Raspberry Pi you need to start off as user “root” and that is available on every Linux machine I’ve tried.

      Regards

      Pete

  46. Okay, tried this cockpit – looks nice – BUT:
    After installing it my Zero started acting up, every reboot yielded a new IP address, and my router showed it with ever changing mac addresses.:-(
    Took me a while to figure out, that the cockpit installation also installed a “network-manager”.
    “sudo apt-get remove network-manager” fixed that annoying “feature”.
    Cockpit still works without it.

  47. First a big THANK You !
    Great work that is really appreciated.
    Andreas Spiess got an old fart (60+) started in home automation with your script and now a year later I am still learning and still awed at the amount of work you guys put into this and the perfection level archived.
    I have my “productive environment” on a pi 3B+ and until now no test & deployment environment – so today I just tried a new install on a RPI0W: Buster lite and your script –> It just plain works!
    Just the basics Mosquitto, Nodered and Webmin – no problems and even performance is more than acceptable.

    Thanks!
    Mike in Germany

    1. Hi Mike – thanks for the kind words – and while I’m here, I don’t use Webmin these days but it is there for anyone who wants it… check this out… it’s LOVELY…

      sudo apt install cockpit
      sudo systemctl enable cockpit.socket

      Then go into a browser and look at your Pi on port 9090 (user name and password can be pi and your own password.. tick the little box underneath). I have this installed on two machines (one Pi4, one AcePC) and can view them both from either.. hope that’s interesting, I should add it to the script. Oh and 60+ is not old – I’m 65 and it took a stroke in December 2017 to slow me down but I’m picking up where I left off… hence the recent interest in WLED, Tasmota and similar – oh and Antonio may have me interested in RpiEasy – looking at that tomorrow to see if the port can be shifted from 80 as I use that with Node-Red Alexa nodes (81 would be nice as it is sitting doing nothing)… but I digress (how unusual).

    2. Good! but on a such a low memory device (and single core cpu…), i suggest pulling down Webmin, leaving it installed but not auto-started, and starting it just when you really need it… you can use Webmin itself to do its “harakiri” 😀

  48. Well,

    I have it running on my new Raspberry pi4, 4GB.
    Installed the lastest buster from raspi website, installed pihole (with their curl script), the script.
    Installed the latest mosquitto according to https://mosquitto.org/blog/2013/01/mosquitto-debian-repository/
    with sudo wget http://repo.mosquitto.org/debian/mosquitto-buster.list

    Then I updated nodejs after watching https://www.youtube.com/watch?v=z9a_ztJqaII
    Please do the rebuild in the .nodered subdirectory

    starting node-red:
    Welcome to Node-RED
    ===================
    27 Oct 12:10:58 – [info] Node-RED version: v1.0.2
    27 Oct 12:10:58 – [info] Node.js version: v12.13.0
    27 Oct 12:10:58 – [info] Linux 4.19.80-v7l+ arm LE
    27 Oct 12:10:58 – [info] Loading palette nodes
    27 Oct 12:11:02 – [info] Worldmap version 2.1.4
    27 Oct 12:11:02 – [info] Dashboard version 2.17.1 started at /ui
    27 Oct 12:11:02 – [info] Settings file : /home/pi/.node-red/settings.js
    27 Oct 12:11:02 – [info] HTTP Static : /home/pi/.node-red/public
    27 Oct 12:11:02 – [info] Context store : ‘default’ [module=memory]
    27 Oct 12:11:02 – [info] User directory : /home/pi/.node-red
    27 Oct 12:11:02 – [warn] Projects disabled : editorTheme.projects.enabled=false
    27 Oct 12:11:02 – [info] Flows file : /home/pi/.node-red/flows.json
    27 Oct 12:11:02 – [info] Server now running at http://127.0.0.1:1880/
    27 Oct 12:11:02 – [warn]

    versions:
    mosquitto version 1.6.7

    Hope this helps someone.

    1. Hi Squirrel

      I guess I’m a little jealous as my RPi4s are only 2G (not that I NEED more than that).. yes, “the Script” – been updating that over the last couple of days and will soon add in the optional switcheover to NGINX instead of Apache. Not used Apache in a year and no missed it.. Also I have some bits I put into /etc/bash.bashrc – some aliases and functions – will add them in as iptions as I find them invaluable along with my CLS command though that DOES make some assumptions – it clears the screen and shows among other things processor temperature. How you do the latter varies wildly for different boards…
      Here for example is my CLS (cls.py and an alias in /etc/bash.bashrc) on my newly re-hashed ACEPC T9, set up using the script.

  49. Guessing not quite ready for ubuntu 19.10 aarch64 on pi4 yet…
    For anyone not yet attempted 19.10 aarch64, my experience thus far was painless. HTOP shows the 2 megs of memory on my 2meg pi4.

    Pete (and his supporters), I do love all your hard work and reviews!!

    1. Personally I’m very happy with Buster… thanks for the kind words and continuing to look in and comment on the blog – it all helps…

      Pete

  50. I use a Raspberry pi4 4GB as a PI-Hole.
    After running the script I found out that there are some things missing:

    Mosquito repository not correct. It installs a version of more than a year ago.

    I have no idea where all my http ports are. Is there a central file with that information? Pihole can be accessed by going to http://192.168.1.7/admin/index.php but not to http://192.168.1.7.

    Is is possible to enhance the script to include pihole?

    Cheers,

    1. Are you using the latest script? Msquitto worked fine last time I tried – sure, jst send the instructions for PiHoe and PiVPN and I’ll add them in as options…

  51. hello Pete

    just some info

    Trying a little experiment to add my own nodes in your script. All loaded ok, but!! at the moment bcrypt version is 404 anyone with problem on rollback and fallout of script IT IS NOT A SCRIPT PROBLEM

    FROM NODE_RED INSTALL LOG
    > bcrypt@3.0.6 install /usr/lib/node_modules/node-red/node_modules/bcrypt
    > node-pre-gyp install –fallback-to-build

    node-pre-gyp WARN Using request for node-pre-gyp https download
    node-pre-gyp WARN Tried to download(404): https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.6/bcrypt_lib-v3.0.6-node-v64-linux-arm-glibc.tar.gz
    node-pre-gyp WARN Pre-built binaries not found for bcrypt@3.0.6 and node@10.16.3 (node-v64 ABI, glibc) (falling back to source compile with node-gyp)

    SCRIPT LOG last 2 entries then stops

    ############################################################
    Installing node “node-red-node-sqlite”
    + node-red-node-sqlite@0.4.0
    updated 1 package and audited 13221 packages in 12.761s
    found 1 high severity vulnerability
    run `npm audit fix` to fix them, or `npm audit` for details
    ############################################################
    Installing node “bcryptjs”
    + bcryptjs@2.4.3
    updated 1 package and audited 13221 packages in 11.983s
    found 1 high severity vulnerability
    run `npm audit fix` to fix them, or `npm audit` for details

    regards Brian

  52. Hi

    I think the new version of nodered has caused issues with some of the package.
    The following packages fail completely on my system:
    node-red-node-sqlite
    node-red-contrib-sqldbs
    node-red-contrib-graphs
    node-red-node-arduino
    node-red-contrib-chatbot

    I get a few warnings on some other packages but nothing serious

    1. Nowhere NEAR enough info – your system being? Hardware? Full upgrade or starting from scratch etc ? You’ll need to check with the Node-Red guys…
      from scratch they should work, but upgrading causes issues with some packages, I’ve blogged the issues I had.

      1. I had tried on an old install and had the issues, could have been due to messed up rights and permissions.

        I redid the install on a fresh Raspberry PI 3B last night and got different results.
        “Linux raspberrypi 4.19.75-v7+ #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l GNU/Linux” “Raspbian GNU/Linux 10”

        node-red-node-sqlite (with a lot of error/warning in the output) and node-red-node-arduino installed. I have not validated their function, and I’m not going to.

        however node-red-contrib-sqldbs,node-red-contrib-graphs and node-red-contrib-chatbot were missing from the palette after install. A manual install from inside nodered passes on node-red-contrib-graphs and node-red-contrib-chatbot but fails on node-red-contrib-sqldbs

        I don’t know why the script would be skipping packages. Thats all

          1. maybe npm reaches some or other limit (ram/swap/log level) and decides its had enough. I think node-red-contrib-sqldbs depends and sqlite, could contribute to the issue. If i get the time i will have a look on the nodered forums to see if there are compatibility issues worth interest

            1. the nodes Pete decided to include in his script are not A MUST… you can add other yourself, or remove other not used… if some causes issues, remove them, especially if you don’t even use them… you can always readd them in the future, if needed… sqlite is a f…ing mess, always, it takes LOT of the script install time…

  53. Hey, just a quick question, I installed Grafana with the script some time ago, and when I connect via ip it ask for a username and a password.
    I dont remember setting special password and username and normal ones dont work. Any ideas?

    1. you should watch on grafana website for info on default credentials AND how to recover a lost one… AFAIK, we never set up a password for grafana, it’s on my todolist but forgot about that, so never implemented in script AT ALL…

      1. Thanks, I found the credentials and looks like It was my first login, so it asked to set a password after the login.
        Great script so many thanks to both!

  54. Hi Pete – Just a minor point that might assist others who are getting strange results! If you ‘wget’ the Script and use the URL in your 3 Sep note (above), it will fail because of the ‘!’ in front of the ‘api’ component. However, if you put single quotes around the entire URL, it works perfectly! That is:

    wget ‘https://bitbucket.org/!api/2.0/snippets/scargill/kAR5qG/files/script.sh’

    OK, the Linux gurus probably knew this – but if you don’t, it’s a pain to keep getting a fail! Thanks, as always, for everything…..

  55. Thanks Pete. That 23 Aug script worked exactly as I’d expect. I can access the ‘Pete’s Utilities’ web page and Webmin is working. Running the script still threw a few warnings – the npm warnings specifically. I note that it said ‘run npm audit fix’ to correct these, but after rebooting and trying this, I get an error ‘No package.json found: Cannot audit a project without a package.json’. Should I be concerned – or is it one of those things that can be safely ignored? I also noticed a warning about ‘Python 2.7 reaching end of life on 1 Jan 2020’. Again, something to consider, or wait for a while to try and fix? Please accept that these are in no way a criticism of the invaluable work you do and the advice you so generously give. I think I speak for many, many people around the world when I say how much we all appreciate your zeal! If I may offer a small piece of advice myself – could you make the various dates at the top of this page into clickable links to the specific script? I’m sure that would help those of us that find it a bit difficult to determine exactly what script should be run – and, more importantly, where it is located. Your text says “..here is the script..” but the first link is some way down the page under the February 2019 date. You appear to have to go a long way down into the comments to find a link to a later script! Anyway, again, all appears to be well and, as I have in the past, I’ll look forward to using the various tools with the newest version of Rasbian. Thanks again!

    1. Python: DON’T remove 2.7, it’s VITAL…

      npm: they’re useless junk we could not get rid of, even after asking nodejs people…

      package.json: did you run your commands from inside the .node-red folder, right? I think not…

    2. The warnings are not from the script itsself but from installations within the sciprt and hence out of control of the script. The NPM Audit FIX is just a suggestion – I ignore it, I’ve never had that “no package.json notice – I can only imagine you ran some node install(s) outside of the NR filder as MrShark suggests. And yes, do not remove Python 2.7

  56. Hi Pete – Looks like the Script is increasingly broken on Buster RPi3B+ rev 1.3. I’ve had great success in the past, but trying to run the latest script (well, I assume the latest – can I gently say that you don’t make it easy to get the ‘latest’. You really do have to search for it!) is giving heaps of errors. For example, Node-Red constantly tells me that there is a ‘npm WARN’ and ‘no repository field’ nor ‘no licence field’. Sqlite has so many warnings and errors that they are too many to document. Then, at the end, I get messages that it is ‘unable to locate chronograf’ amongst others. After rebooting, and trying my Pi IP address in a browser, it tells me it ‘refuses to connect’ although looking at the same address with port 10000, Webmin works prefectly. Webmin actually tells me Apache is ‘unused’ – and I’m pretty certain there’s no nginx server there? Now, all this is very quick – I haven’t done any real research yet, although I can say I have tried the script three times now, re-flashing a new OS each time, and always the same issues. Buster?? Any comments gratefully received!! Thanks for all your efforts

    1. Hi

      Wrong- The script latest version is called “the script” – and is currently 28/08/2019 and is the highest on in my list of scripts at BitBucket. Just used it recently. Once you make sure you are using the right one (and on Raspbian Buster preferably) do some back with any mistakes.

      Thanks to Mr Shark for the correction, I originally said 28/02.

      Pete

      1. Thanks for the reply, Pete. However, I believe you mean 23/08/2019? The one that starts with “This version of “The Script” August 21 2019 includes changes to handle Raspbian Buster, RPi4 and other recent changes”? I can’t see anything later. But, apologies – I was downloading the ‘The Script Early July 2019’ because it is clearly headed “Created by Peter Scargill last modified 2019-08-21”. I can now see where the later version is (although I still believe the dating leads to some confusion, as I said before). What a difference 2 days makes! Haven’t had an opportunity to try it yet – I’ll need to start from scratch and it’s late at night here in Oz. I will, though, and report back how it runs.

        1. Let me know how you get on Mike, I do try to keep the entries in order but don’t always get it perfect. This is not my job, I do it for my own entertainment in the hope that others may benefit.

  57. Great script Peter,
    but on the July 2019 Edition, once I see the select items to install screen, how is it possible to select or deselect an item?
    If I go with arrow keys over the item, it is not possible to select and deselect it.
    If I just hit enter over an item, it starts with the process without letting me selecting the items. So I choose abort.
    Thank you very much for your help.
    Best regards

  58. I’m another happy successful user of the Script. You may want to beware of Webmin. A backdoor was discovered in the App which has been there for a year.. Version 1.930 is the fix to shut down the backdoor.

  59. Thanks folks, I had to do a re-install today because I broke something yesterday, ermmmm!
    Anyway I think I spotted a bug during install – either grafana or influx, I think it was influx. It appeared like a typo in a repo list; “infux” instead of “influx” which threw an error like “no file” or “no path” exists…

    Can these be manually added with apt-get if it is the case that one didn’t install?

    Thanks

    G

    1. i see “infux” indeed, but not in the apt part, it’s in the node list (twice in script) that will be installed… Pete, please correct, and Garry please share the log files you have in your home folder

      1. I just checked the last couple of updates to the script on Bitbucket – can’t get past FIND “infu” – doesn’t exist apparently

      2. So I am not an IT wiz… and I am in the office all day today.
        I will see what sort of install log I can find and report back. The “apt” question was to ask; can I retrospectively add uninstalled components which failed due to the typo with the apt-get utility just to avoid running the script again?
        Thx, G

        1. sure you can, but again, the only errors i’ve found for your report is in the nodes install section, 2 occurrances of “node-red-contrib-infuxdb” instead of “node-red-contrib-influxdb” (“L” missing), nothing else… to install any missing piece, use npm if they’re nodes, or apt if they’re packages, no problem in this…

          log is in your /home/pi directory, named something like script+datetime.log

          1. Get you… thanks. Looks like I just manually search and install any missing Node-red nodes on my Pallette…

            Using my new VPN (thanks for this too Pete!) I can see the log on my Pi at home. Will see if I can SCP to my phone or something, will email to Pete if I can.
            G

                1. look in there, search for “infu”, and then for “influ”… the former, you’ll see only the error about the node mispelled and therefore not installed, as already stated and corrected in today’s script thanks to your report; the latter, influxdb regularly installed by apt, and service activated…

                2. Not sure why the issues with locale settings – what did you install that on?
                  locale: Cannot set LC_CTYPE to default locale: No such file or directory
                  locale: Cannot set LC_MESSAGES to default locale: No such file or directory
                  locale: Cannot set LC_ALL to default locale: No such file or directory

                  Influx sorted…Sqlite always throws out that crap. The installation procedure for SQLITE is AWFUl, but works.

                  1. I think you can ignore that Pete, I am sure I broke and fixed that all on my own! I recall being asked to confirm default locale which I pointed to IE UTF8 etc but think it threw an error. Thanks for the follow up and sorry for the false alarm, my fault!

                    Locale is set, all OK, no more errors…

                    Thanks

                    G

            1. All the influx errors fixed along with unrelated spelling issues… and files renamed do that “The Script” is the current version (as it should be)- date reference (today) is inside the file itself.

  60. Loving the script… however a couple of fixes. wiringpi has been pulled from the github by the author very recently, see the explanation at their site. however it is currently available as a .deb package
    https://project-downloads.drogon.net/wiringpi-latest.deb
    that installs on most recent machines.

    and the sections for influxdb and grafana should probably not use tee -a for the apt sources, just tee like the mosquitto section does.

  61. I take it all back, fixed lists properly and it appears to have intalled fine.

    Clone of Pi model B from original production to Model 3B+ with Pete’s latest recommended additions working fine, I am toggling stuff with MQTT.

    Many thanks Pete and your supporters!

    G

  62. Are there issues with mosquitto at present? I have tried to manually fix package lists for to install mosquitto but having dependency issues:

    The following packages have unmet dependencies:
    mosquitto : Depends: libssl1.0.0 (>= 1.0.0) but it is not installable
    Depends: libwebsockets3 (>= 1.2) but it is not installable

    FYI it seems I managed to get Pi-Hole and PIVPN installed OK and cloned my NodeRed and the static IP to the new Pi, should drop in to replace the old one if I can get Mosquitto to run!

    Thx G

  63. Thanks again for the hard work chaps! I have had a “script-equipped” Pi running for some years, it is actually a Pi Model B from the original wait list batch from the product launch. It is physically embedded in my home alarm control box and takes 12Volts from the backup battery/charge circuit via a dc-dc converter and uses GPIO to monitor the alarm.
    I have used all the script goodies to build home automation including WiFi connectivity to deep sleeping ESP8266 sensors on my garden shed to sympathetically alarm the shed with my house alarm and of course lots more including intensive use of Bigtimer.
    Time is cruel however and (thanks Pete!) I am never one to leave well alone so I am now cooking up a spare Pi Model 3B (buster) with the script and will add PIVPN and PI-HOLE. I am hoping this is transparent to all the automation devices but in any case thanks for the help!

  64. Short update. Running on latest Buster light now and all works perfect! 😉
    Thanks for your help!

    @Peter: Light version of raspbian starts a lot faster than the full blown version and usually also runs more stable and with better performance. As long as you are running headless this is golden.

    1. You have me wondering what it is about the lite version that makes it run faster. I wonder if merely turning off the graphical desktop on the full blown version sould have similar results…

      1. it’s the exact same thing, if you disable gui… it’s faster just because you don’t have to wait for it to initialize and start the gui, nothing more… you can install gui on lite, or remove from the full one and have it lite

  65. Thomas – nothing I’ve done has ever claimed to work with the LITE version of Strech or any other variation. For all I know there could be important command line tools missing from Stretch Lite. Antonio, what do you think?

    1. lite version are fine, they’re just the headless/server editions, with no gui… i always use them as i’m not interested in ever connecting a monitor to my rpi, so no need to waste sdcard space or bandwidth when updating… that’s the only difference, the base is the same…

      of the gui variant, there are 2 editions: with basic tools (a browser and no much more), and full blown (with office, graphic apps, scratch and all the other stuff)…

      i prefer lite editions, as said… of course, whatever you choose, select Buster as the base, no more stretch… whatever tool we need is added by script in the requirements stage (i added wget and ssh recently, for example)…

  66. Thanks for this awesome script!
    However I cant install any additional nodes (neither via Node-RED GUI, nor via CLI npm install …). Regardless what node I try to install I always get this error message (see screenshot)
    I completely reinstalled multiple times already to no avail. Setup is RPi3 with latest Stretch

    1. You’re not using NOOBS are you? Also, if you are starting from scratch you might want to look at recent items in here, stretch is now old.. BUSTER is the current version of Raspbian.

      1. Unless you have existing setup there really is little point in NOT using Buster… however, read the discussions in here surrounding the BUSTER entry. I’ve now succeeded in totally upgrading old installations to Buster. JUST upgraded the last of my SDs to the larger Buster BOOT size. I had to use GPARTED to make a fresh SD with Buster-compatible partitioning and my original Stretch-or-earlier-created code and programs – then used that as the master for subsequent clones, which require a boot and clone with -f mode the first time they are used – subsequently simple cloning as normal.

      2. Thanks for the timely reply. I already tried the “chown” trick and indeed I can install a new node after that using the GUI. But bad things happen: Once the new node is installed all other nodes are all gone after a reboot and Nodered GUI won’t even start anymore! The directory /.node-red/node_modules/ is literally empty after that.

        @Peter: I did not start from NOOBS, never used it. I downloaded the last version of “stretch lite” from the raspbian repo. Everything else is really working like a charm. I think this is not a linux distribution or kernel issue. Seems to be something is wrong about file permissions about bcrypt.

        Thank you very much! Your help is much appreciated.
        Cheers!

    1. Hope you’re ok, Brian, been there myself today – EEG tests. Knew nothing about the subject this morning, do now. Checked out methods and kit…

      I like to understand things so when we got back from Granada I checked what they did to me – looked for abnormal brain patterns under severe/varied strobe lighting compared to none. Seems I’m good. Not sure why the guys in local area couldn’t do that. Countless thousands of Euros? Not necessarily, it would seem.

      Apply probes and gel electrodes etc, ensure all working properly Repeat same tests with and without strobes. All over in half an hour. Not complaining,, a nice day out – just wondering. Tech types might find this marginally interesting. https://shop.openbci.com/collections/frontpage. Kit can be cheap, open-source software free, specialists expensive I guess.

  67. Hay can someone help me i am trying to follow this and install it on my Pi 3 but i got this error while installing “iptables-persistent”:

    IPv4: Unable to save (table filter isn’t available or module not loadable)
    ip6tables/1.8.2 Failed to initialize nft: Protocol not supported
    IPv6: Unable to save (table filter isn’t available or module not loadable)

    so i carried on with this command
    sudo iptables -I INPUT 1 -p tcp –dport 80 -j ACCEPT

    and now i get this error
    iptables/1.8.2 Failed to initialize nft: Protocol not supported

    I am using Buster on a Raspberry Pi3

  68. Gents,
    Firstly, thank you for all your hard work. The install went flawlessly on my Rpi 2.
    With Buster now being the latest release, PLEASE put the link to the Buster install up first on the page. I tried and failed to install with the link on the front page over the period of a full day. I almost walked away until I dug through this thread.
    However, nice work and it is at 100% now.

  69. test script for buster here: https://pastebin.com/DmnMtcEE
    all important stuff tested and working, what’s still out:

    samba: it asks in early stages for a dhcp mod, just press enter when asked, leaving its defaults… have to see how to bypass this as it blocks full unattended install

    java: even using official info, it says java not found or the likes… BUT, as it’s needed only for habridge, and nowadays who cares about habridge, i’ll remove it alltogether… oh, and java is attempted to install even if no habridge selected…

    for Pete: add grafana to your index html page, and i’ll remove that OPI Monitor, as its same 8888 port is used by chronograf, installed if you select grafana, which brings back influxdb, too, of course…

    p.s.: tested webmin, too… for me, 95% of the work is done, only minimal tweaks needed… not bad for 3 hours i’ve finally found to work on this…

    1. latest script: https://pastebin.com/6eWvbJan
      all working (nodered, mosquitto, grafana, influx, chronograf, apache+php, phpliteadmin, phpsysinfo, habridge)

      changes:
      -using openjdk for buster, as oracle package is broken (it tries to download a file which points now to a 404 error page)

      -latest phpliteadmin as previous one does not work on php 7.3, which is default in buster

      -java is not installed by default anymore, you need to check it explicitely, but it’s used only for habridge right now… you may need it for blynk local server, if you use it…

      -removed opi-monitor to avoid conflict with chronograf tcp port 8888 (installed by grafana)

      known bugs: samba asks for that dhcp question, i don’t know how to avoid it… the package causing it is SAMBA-COMMON, feel free to find a solution…

      i’ve an ftp server installed on port 21 by default, don’t know why (pure-ftp) of if it’s default on buster…

      for me, work done…

      Pete: modify your index page to:
      remove opi monitor
      add grafana on port 3000
      add chronograf on port 8888
      add habridge on port 82

  70. Dear Sir, I am 72 years old retired Telecom engineer and my hobby is IoT. I am really fascinated by your script and my hearty thanks for sharing this.
    My node-red works fine, but the Drop down list of “tts voice” is empty and hence no audio output.
    Please suggest me any tips to resolve this issue.
    With very Great Regards.

    1. I don’t do anything with TTS voice so I’m afraid I can be of no help here. My Node-Red is talking to Amazon via an EXEC node and another to talk to the MP3 player which handles Amazon Amy output, and another EXEC node handles the MP3player. All of this works a treat.

  71. So i am triying to install the script on a raspberry PI Zero W and ive run into some problems, if i leave the defaults setting and add influxdb and grafana, it will only install the node-red but not the mosquitto, or influxdb or grafana, also the web browser doesnt work i am using the raspbian buster lite any suggestions of what i could do different to make it work?

    1. simple: change distro and board, as none of them is supported by script (well, we didn’t test RPi0W in 2 years, now, i think, because it has only 1cpu and 512kb ram, sure you can’t run all that stuff on this board… web browser? You installed a gui, too? Really?)

        1. oh, nice video! Pete, you should add it to article, i think 🙂

          yes, of course it’s MB and not KB, but simply RPi0W is not powerful enough to do anything good using the script, sure not all the stuff you selected… last time i ran the script, it took about 6 hours to complete… just madness, there are better options…

          1. So just if you are interested I was able to install the script on stretch which took over 2 hours apparently everything is working as you can see in the picture, so i am using the RPI0W because thats all I have at the moment and its hard to get them in Mexico for a good price, besides this is for testing my home automation with MQTT and ESP32, do you have any other advice for me or link to manuals or tutorials that might be useful for me it would be great, you guys are awesome and do a great job, also i did the same several times with the RPI0W and Buster and the script doesn’t work have you tested on RPI3B+? or what hardware do you advice to use? thanks again for your time

            1. understood, good! The worst part of when we tried last time was sqlite and webmin, which both brought install time to 6 hours…

              forget buster for now, nowhere is advertises as it working, Pete did some testing UPGRADING from stretch and this seems to work, while fresh install from buster will not…

              i don’t understand this rush to jump on the running train… stretch works? yes… script on stretch works? yes… period! What services of buster do you REALLY need? None…

              use what’s suggested, or contribute patches to help it works on unsupported hw or sw platforms… i don’t have time right now to work on this, nor it’s a need, for anybody…

              what you all use are nodered, sqlite, mosquitto, which are the same if running on stretch or on buster, so, cool down everybody, i need my holidays as anybody else…

              1. Thank you so much, I don’t have a need to use buster is just that I am really new to raspberries and I get confused a lot, as I used the links provided in the video I thought I was using the same version but later found my mistake, I didn’t install webmin as in my previous tests I found it crashes the PI0W, even with the installed software my PI0W only has like 32 MB free of ram, so yeah I’m gonna take out the unnecessary software, and then get a 3B+.

                1. I would not dream of installing Webmin on the PI0W, the latter being too under powered. Indeed I don’t install Webmin at all these days but left it there for others who might want it.

                2. With the 4 being the current model (looks like mine was dead on arrival unfortunately, not sure what to do about that at this moment) the 3B+ will no doubt soon come down in price. Even the 2 is fine really… but the lack of speed and RAM on the PI0W is why Antonio and I stopped work on it, I sold mine off. See my comments clarifying Pi3B+ as it’s clock speed is definitely higher than the original model 3. 1400Mhz as against 1200Mhz… but of course if you want to use USB for a drive, the 4 is a good idea as USB on the PI3 is slow.

            2. Marvellous, nice to see the script is working for you using Stretch and RPI0W, personally now I use RPI2 as a minimum though given the relative cost of 2 and 3, it seems to make more sense to go for the latter and thinking about it I closed down the last RPI2 a matter of months ago for no other reason than “need for speed” – I COULD have stayed where I was of course. I STILL can’t comment on RPI4 as mine has still not turned up from the UK, posted to me last Monday. I tried RPI3 B+ and a clean Buster install and the Script (or rather some of the dependancies as used in the script) failed, so I went back to my fully working Stretch setup and upgraded THAT to Buster (3 liner) – and THAT works a treat. Hopefully at some point as clearly all the programs DO work in Buster, we’ll get to the bottom of why the difference between an upgrade and a clean install. Since the upgrade I’ve done further minor updates and they TOO work perfectly.

  72. if running script on buster you get stopped while running prelimeries
    at !!!!pi@raspberrypi4

    try updating if you cant you could be on the trial repository

    Buster is now stable

    run once!! apt-get update –allow-releaseinfo-change

    this worked for me
    giving N: Respository ‘http://raspian.raspberrypi.org/raspian buster InRelease’ changed its ‘Suite’ value from ‘testing to ‘stable’

    1. Very useful, thanks for that Brian. I upgraded my existing setup to Buster so no issues but that might be useful to other readers.

    2. Thanks Brian, good tip.
      as i am installing the script on new install of Debian buster under VM, so i didn’t got this problem.

  73. HI,
    i tried to update the script on Debian buster under a VM, but its showing few problems, especially

    E: Unable to locate package grafana
    E: Unable to locate package grafana-data
    E: Unable to locate package chronograf

    and mosquitto,

    with mosquitto its showing

    “E: Unable to correct problems, you have held broken packages.”

    i can live without grafana, as i use separate VM for that, but mosquitto is a real issue. even log don’t show much information.

    but here is the log file link

    https://pastebin.com/qtazAey7

    any idea?

    1. As I’ve only updated my script based system on a Pi 3 to Buster I can’t be of much help at this time. The update worked without a single hitch. Elsewhere I have detailed most of the packages and exactly what I did (very little) to update/upgrade.

    2. ideas? Just don’t do that… personally never tested script on buster, too new, nor i plan to do it this summer as i’ve other plans and things to do, eventually it’s stuff for september and going on… if you have a working setup, keep it or try the adventure at your own risk, as it was never advertised that script can be used to update anything, nor that it works on a fresh install of buster… want to try? Do as Peter did, coming from a previous Stretch install…

      1. Thanks
        and i understand, script is for raspberry pi, I just wanted to try new things and perhaps help a bit with testing.

        I spend few hours and the script is working now, and here are the changes I made.

        * I am not a expert or skilled programmer, and I know you guys can write it much better.

        For mosquito.
        debain buster by default come with 1.5.7.1 (20190213) the latest version at mosquitto.org is 1.6.3 (20190618), so I option to go with buster default.

        Original Code:

        if [[ $OPSYS == *”UBUNTU”* ]]; then
        sudo apt-get $AQUIET -y install mosquitto mosquitto-clients 2>&1 | tee -a $LOGFILE
        [ $? -eq 0 ] && mosquitto=1 # mosquitto installed

        New Code:

        if [[ $OPSYS == *”DEBIAN”* ]] && [[ $DISTRO == *”10″* ]]; then
        sudo apt-get $AQUIET -y install mosquitto mosquitto-clients 2>&1 | tee -a $LOGFILE
        [ $? -eq 0 ] && mosquitto=1 # mosquitto installed

        import thing was $DISTRO == *”10″* must be “10” and not “10.”

        note: I also try to add the mosquito repo for Debian buster, but its gpg key is not signed and failing

        PHP:

        In debian buster php7.3 is the default version of php, and php7.0 is not recommended as per security reasons, so I tweak the code like this

        Original Code:

        if [[ $OPSYS != *”UBUNTU”* ]]; then
        if [[ $OPSYS == *”BIAN”* ]] && [[ $DISTRO == *”9.”* ]]; then
        sudo apt-get $AQUIET -y install apache2 libapache2-mod-php7.0 sqlite3 php-sqlite3 php-xml php-mbstring 2>&1 | tee -a $LOGFILE
        else
        sudo apt-get $AQUIET -y install apache2 libapache2-mod-php5 sqlite3 php5-sqlite 2>&1 | tee -a $LOGFILE
        fi
        [ $? -eq 0 ] && apache=1 # apache installed
        else
        sudo apt-get $AQUIET -y install apache2 libapache2-mod-php7.0 sqlite3 php-sqlite3 php-xml php-mbstring 2>&1 | tee -a $LOGFILE
        [ $? -eq 0 ] && apache=1 # apache installed
        fi

        New Code:

        if [[ $OPSYS != *”UBUNTU”* ]]; then
        if [[ $OPSYS == *”BIAN”* ]] && [[ $DISTRO == *”9.”* ]]; then
        sudo apt-get $AQUIET -y install apache2 libapache2-mod-php7.0 sqlite3 php-sqlite3 php-xml php-mbstring 2>&1 | tee -a $LOGFILE
        else
        sudo apt-get $AQUIET -y install apache2 libapache2-mod-php7.3 sqlite3 php7.3-sqlite php7.3-xml php7.3-mbstring 2>&1 | tee -a $LOGFILE
        fi
        [ $? -eq 0 ] && apache=1 # apache installed
        else
        sudo apt-get $AQUIET -y install apache2 libapache2-mod-php7.0 sqlite3 php-sqlite3 php-xml php-mbstring 2>&1 | tee -a $LOGFILE
        [ $? -eq 0 ] && apache=1 # apache installed
        fi

        Here when [[ $OPSYS == *”BIAN”* ]] && [[ $DISTRO == *”9.”* ]] is failed, and loop goes to else statement , I assume that now we are in Debian 10 and change the php5 to php7.3.

        As I said, it may not be the beautiful way to do.

        For Influxdb:
        it was the easy one, I added the new repo for Debian buster

        test $VERSION_ID = “10” && echo “deb https://repos.influxdata.com/debian buster stable” | sudo tee -a /etc/apt/sources.list.d/influxdb.list

        I don’t use Webmin or have any experience with it, so there I am not sure if its working or not.

        I hope this will help someone.

    3. Hi there!
      Fist up: Thx for the great script.
      Got to know about it through Andreas Spiess.

      Here a small heads up:

      Got the same error message as Azee on a Pi Zero W
      running “Raspbian Buster with desktop and recommended software”:
      script log: https://pastebin.com/09bRsCvQ

      During install also java 8 was not able to install.

      Found that the new Raspian “Buster” (2019-06-20) does not support java 8:
      http://downloads.raspberrypi.org/raspbian/release_notes.txt
      * Oracle Java 7 and 8 replaced with OpenJDK 11

      So retried with Raspian “Strech Light” (2019-04-08) which did work.
      script log: https://pastebin.com/J6jmznsE
      node-red install log: https://pastebin.com/Mn34rRRc

      The installation ran through far cleaner.
      On first glance everything seems to work.
      There were some hickups though:
      – There seems to be an vulnerability issue with “node-red-node-google”.
      – “node-red-node-sqlite” popped up multiple issues.
      – java showed up following error:
      E: Package ‘oracle-java8-installer’ has no installation candidate

      Greetings,
      Jonathan

      1. You are right Jonathan, Java 8 is no longer supported in Buster. I didn’t Select the Java update in the menu, so i missed that.
        and Debian Buster comes with Open JDK 11, so easiest way will be to install that, but it will install complete JDK and not just JRE (at least that what i am aware of).
        On the other hand its good to go away from Oracle JRE/JDK, as recently Oracle changes it License agreement, and its no longer free ( free is a broad word, simply you must be on some Oracle agreement ).

        i will try to install Open JDK 11 tomorrow and let you know how it went.

  74. Used The Script on a RPi3 and everything worked great.

    I would like to install on a Rock64 as well. Any tips?

    Which OS to start with?
    Will everything work the same as with RPi?

    Thanks

  75. What credentials do you mean? I entered a new password for pi, for root, and for node-red user and admin. I didn’t do anything (that I know of) about mosquitto.

    (some time later)

    I did a search about passwords on mosquitto, then found the password file. There was an entry with the administrator name I entered for Node Red. There was no indication that this would also be used for mosquitto.

    Thank you for pointing me in the right direction.

    1. every service installed by the script (except grafana…) share the same user and password you put in on script run, in case of mosquitto it’s the admin user and password… use that, or search the net on how to remove the password or change it…

  76. I just did a new install onto a Pi3 with Raspbian lite. I am trying to test mosquitto but I am not having much success. I am very green when it comes to Linux.

    I don’t know what to expect from this script. Should Mosquitto be configured to run as is or is there additional setup that I must do first? I tried an initial test with ssh with the following result. (and on the Pi with lower response)

    pi@Broker:~ $ sudo /etc/init.d/mosquitto start
    [ ok ] Starting mosquitto (via systemctl): mosquitto.service.
    pi@Broker:~ $ mosquitto_sub -d -t hello/world
    Client mosqsub/850-Broker sending CONNECT
    Client mosqsub/850-Broker received CONNACK
    Connection Refused: not authorised.
    (repeating)

    (on Pi)
    Client mosqsub/1153-Broker sending CONNECT
    Client mosqsub/1153-Broker received CONNACK
    Connection Refused: not authorised.

    1. I made Stretch Lite image on a new sd card. I did an install of Mosquitto and it works as I expected. I am able to use mosquitto_sub, mqtt-spy, and an ESP8266 board with mqtt running on it. All good. Unfortunately it does not give me all the programs your fantastic script provides. But the critical part I needed was the mqtt. I’m sure I will get the rest in time.

  77. **Thanks** indeed DrFragle… That got me going.

    The “Serial” input and output nodes were missing but unlike before I have been able to add them via the manage palette.

    I guess there is a minor bug due to some old i2c code which is currently problematic with the current script. I don’t need i2c so no worries.

    My previous inability to add the serial nodes was probably due to using an old script.

    I still have much to learn. Now for making an image of my SD Card. Life is too short.

  78. I seem to be the unlucky one. My previous installation with “the script” from a while ago had no serial node in node-red… the rest seemed OK.
    So today I rebuilt my HomePi from scratch – 3B.
    – New light Raspbian with desktop downloaded.
    – New Script with wget.
    – Ran perfectly I believe.
    – Reboot —
    – No NodeRed. Won’t start from VNC either. I get

    ———————
    pi@HomePi3:~ $ node-red-start

    Start Node-RED

    Once Node-RED has started, point a browser at http://192.168.1.21:1880
    On Pi Node-RED works better with the Firefox or Chrome browser

    Use node-red-stop to stop Node-RED
    Use node-red-start to start Node-RED again
    Use node-red-log to view the recent log output
    Use sudo systemctl enable nodered.service to autostart Node-RED at every boot
    Use sudo systemctl disable nodered.service to disable autostart on boot

    To find more nodes and example flows – go to http://flows.nodered.org

    Starting as a systemd service.
    Started Node-RED graphical event wiring tool.
    Error loading settings file: /home/pi/.node-red/settings.js
    Error: The module ‘/home/pi/.node-red/node_modules/i2c-bus/build/Release/i2c.node’

    ———————–

    Freaking me out! Any help would be appreciated.

  79. OMG! OMG! OMG! facepalm to me!
    For almost 2 days I have had trouble with getting the node-red dashboard to show up.
    The browser would only show the top row with the node-red logo in my chrome browser.
    In my rasbie it was running the nodes. Finally I found out what the issue was.
    F;ing ADBLOCKER blocked the login popup window. When I paused it for the page, the login window popped up and I could enter the admin and its password.
    I will eat humble pie for dessert.

  80. Hi Pete, Antonio,
    using Raspbian on a Rpi3B with a just downloaded copy of the script, the habridge installation fails because the java installation fails… because the gpg key C2518248EEA14886 is missing.
    I’ve not yet tried habridge, but java and habridge installation seems to work by manually installing the key.
    Thanks all,
    Piero

    1. never had issues with that… anyway, Peter, add this line to latest script after line 1152:

      sudo apt-key adv –keyserver hkp://pgpkeys.mit.edu:80 –recv-keys C2518248EEA14886 2>&1 | tee -a $LOGFILE

      and now that i see that, the full block about java (1145-1157) should go BEFORE the habridge one, otherwise this one will not find java when installing…

  81. Hello Pete and Antonio

    So last update on pi zero with The Script OS raspian lite.
    From LOG
    /home/pi/.node-gyp/10.15.1/include/node/v8config.h:324:3: note: in definition of macro ‘V8_DEPRECATED’
    declarator __attribute__((deprecated(message)))
    ^~~~~~~~~~
    CXX(target) Release/obj.target/bindings/src/serialport_unix.o
    CXX(target) Release/obj.target/bindings/src/poller.o
    CXX(target) Release/obj.target/bindings/src/serialport_linux.o
    SOLINK_MODULE(target) Release/obj.target/bindings.node
    COPY Release/bindings.node
    make: Leaving directory ‘/home/pi/.node-red/node_modules/@serialport/bindings/build’
    npm notice created a lockfile as package-lock.json. You should commit this file.
    npm WARN node-red-project@0.0.1 No repository field.
    npm WARN node-red-project@0.0.1 No license field.

    + node-red-node-serialport@0.7.0
    + node-red-contrib-ibm-watson-iot@0.2.8
    + node-red-contrib-play-audio@2.3.2
    + node-red-node-smooth@0.1.0
    + node-red-node-random@0.1.2
    + node-red-node-ping@0.0.16
    added 153 packages from 98 contributors and audited 492 packages in 191.389s
    found 0 vulnerabilities

    My Grandaughters (2 0ff) did vibration tests and generally behaved as hooligans in testing this unit I have never seen the ammount terror made on a unit in my living

    Eventually it became very sluggish in response to repeated rgb requests (started to loose contact then come back) presumably mosqitto got snowed under with msgs that I had to reboot

    So final verdict the script with raspian lite works on pi zero

    The pizero:-
    is suitable for small tasks 1 room and no children.

    Didnt try io ops only used mosquitto as a server.

    The competition at the price 10€ is far better : – ESP32

    and at 4€:- ESP8226

    end

    Regards

  82. Hello Pete

    pi zero with script

    further news sqlite works no problem. Have set up 20 favourites of rgb in the
    datbase with facility to change or add more records automatically from the colour at the moment for my grandaughter.

    As I didnt select grafana and influx can not report on these

  83. Hello Pete and Antonio

    I tried as you suggested to use raspian lite which is my normal os. instead of dietpi
    As the zero has no wired lan only wifi and I did not have a micro hdmi cable I had to go by the wifi route

    I normaly contact my os by ssh.

    So my procedure was this:

    1) Burn 8Gb sd with raspian lite useing etcher.

    2) MAKE an empty file and name it ssh with no extension (to enable ssh in raspian by boot). copy this file to boot partition in the sd card

    3) Make another file called wpa_supplicant.conf
    and enter my ssid and key for my wifi

    e.g

    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    network={
    ssid=”FRITZ!Box 7490″
    psk=”xxxxxxxxxxxxxxxx4611″
    key_mgmt=WPA-PSK
    }
    Copy this file to the boot partition on the sd card

    4) Put card in zero and power on

    when the zero connects to your wifi you can connect by winscp ssh as normal
    run get script run the script

    ABSOLUTELY NO PROBLEMS only time it took 2hrs 3mins

    ended at 0200hrs

    I have loaded flows (7) webmin updated 4 progs including mosquitto
    have darksky as per your way running.

    My grandaughter is over the moon with controlling it and the rgb ights in her room
    and it hasnt once lost contact.

    It is naturally slower than piB but not that you really notice. No doubt if you really load it their would be problems. I was surprised that webmin ran as it is quite a load for this.

    anyway the news is The script with raspian lite is usable on pizero W

    Regards

  84. Hello Pete and Antonio

    actually took 49mins 23secs on zeropi but failed to do most important
    part. No problem I only wanted it for grandaughters room to setup seperate
    small server for her room controls, thought Id save a 3B, but now Iv got the
    old (very old Pi ) working I will use that. The diet pi looks good especially the pre boot
    setup configs in dietpi.txt and wifi.txt. I didnt have cable to be able to connect, so did all through wifi.
    regards

    1. try raspbian lite on the pi0, as dietpi changed a lot recently and could be that, i don’t use anymore nor i’ve tested it recently… i prefer stock distros like debian or ubuntu… let us know 🙂

      1. I tend to agree with Antonio. If it works on the Zero, fine, but dont have any to test and wont have any doing forward. Sorry,

  85. Hello Pete
    Just used latest script on my sons old raspberry pi dated 2011.12 which he (at the age of 38) was throwing out. Script worked flawlessly including grafina and influx
    I did not use webmin. Used your new node-red + npm

    regards

  86. Hi Pete,

    first thanks for the great work, i am silent user of your work for a while now and now finally want to start my iot system at home. and here is my question(s)!

    first i install your script without “Grafana and Influxdb” and after seeing the Andreas Spiess video i decided to install the “Grafana and Influxdb”. while only checking the “Grafana and Influxdb” option ,it output


    E:Unable to locate package grafana
    Failed to start influxdb.service no such file or directory
    .
    .

    (more in attached screenshot)

    it seems bit strange to me, that it can’t find the package,where it clearly getting something from the repo.
    now as a last resort i am willing to start over but i saw another strange command (i might be wrong here 🙂 )
    in the script and at “Installing Grafana and Influxdb”

    for both debian 8 and 9 you are using same repo

    $VERSION_ID = “8” && echo “deb https://repos.influxdata.com/debian jessie stable”
    $VERSION_ID = “9” && echo “deb https://repos.influxdata.com/debian jessie stable”

    where influxdata have a specific repo for the debian stretch
    “deb https://repos.influxdata.com/debian stretch stable”

    so just to understand is there a specific need to use “jessie” for debian 9 as well?

    *i am using debian9.7 on a VM

    1. try this: https://pastebin.com/YmZLemxG

      modified lines 1192 (for influx stretch version) and added 1198 (for grafana stretch version)

      if you already run before, suggest removing these 2 files BEFORE running new script, as they will contain the old repository, duplicating it if running the script again:

      /etc/apt/sources.list.d/influxdb.list
      /etc/apt/sources.list.d/grafana.list

      1. HI,
        today i redo the complete installation with your new script, but i encounter the same problem.
        ——————————————————–
        Installing Grafana and Influxdb
        E: Unable to locate package grafana
        E: Unable to locate package grafana-data
        E: Unable to locate package grafana
        Failed to enable unit: File influxdb.service: No such file or directory
        Failed to start influxdb.service: Unit influxdb.service not found.
        Failed to enable unit: File grafana-server.service: No such file or directory
        Failed to start grafana-server.service: Unit grafana-server.service not found.
        Failed to enable unit: File chronograf.service: No such file or directory
        Failed to start chronograf.service: Unit chronograf.service not found.
        ——————————————————–
        here is the complete log

        https://pastebin.com/fvPYcaVw

        1. issues should be solved by this version, just sent to Peter, too: https://pastebin.com/MLmHQesS

          grafana now has an official repository, the one we used till now seems messy… now it and influx are both installed correctly, just tested on Stretch in vm…

          commented out “glances and bottle” because of python errors…

          added “net-tools” to standard requirements, as stock debian is now missing standard “ifconfig, netstat, etc”

  87. I did now a fresh install of standard Raspbian, updated it and started Peter’s script.
    Here is the log file: https://www.dropbox.com/s/gfu59je7c70qqa2/script.sh-2019-02-06_14h57m.log?dl=0
    and here the node-red logs (I found two in different directories, (maybe they are the same):
    https://www.dropbox.com/s/y4t9o7arpmx3m0c/nodered-install.log?dl=0
    https://www.dropbox.com/s/g77ucxchhj1omlw/nodered-install1.log?dl=0
    After that, I had to manually install Moment and after that, Node-Red, influxDB, and Grafana worked. Unfortunately, not all nodes were installed. So I had to install the node contrib-InfluxDB from the palette. Everything was done on a RPi3.
    Maybe this helps.

    1. could you (or anybody) please try this version?
      https://pastebin.com/terk37AA

      the ONLY change is that now nodes are installed 1 by 1 by this “for cycle”, instead of as before when ALL of them were installed in a single instruction… this way if 1 of them fails, well, 1) it’s reported explicitely in logs, and 2) cycle will just skip it and go to the next one…

      PLEASE, when testing TURN OFF quiet mode in initial script menu, so i can get FULL logs, thanks… It’s untested… i just run it commenting out the actual npm install line to see if the for cycle was ok, and it seems so…

      for addonnodes in moment node-red-contrib-config node-red-contrib-grove node-red-contrib-diode node-red-contrib-bigtimer \
      node-red-contrib-esplogin node-red-contrib-timeout node-red-node-openweathermap node-red-node-google node-red-contrib-advanced-ping node-red-node-sqlite node-red-node-emoncms node-red-node-geofence node-red-contrib-moment node-red-contrib-particle \
      node-red-contrib-web-worldmap node-red-contrib-sqldbs node-red-contrib-ramp-thermostat node-red-contrib-graphs \
      node-red-contrib-isonline node-red-node-ping node-red-node-random node-red-node-smooth node-red-contrib-npm node-red-node-arduino \
      node-red-contrib-file-function node-red-contrib-boolean-logic node-red-contrib-blynk-ws node-red-contrib-telegrambot \
      node-red-dashboard node-red-node-darksky node-red-contrib-owntracks node-red-contrib-alexa-local node-red-contrib-heater-controller ; do
      printstatus “Installing node \”${addonnodes}\””
      npm $NQUIET install –save ${addonnodes} 2>&1 | tee -a $LOGFILE
      done

        1. great! I think the problem was with one of the nodes failing install, so as the install line was a single one, this node caused ALL install failing… as it’s now, it will eventually fail the single node, who cares… i did not go into all log details to see which one is the bad guy, and the nodes installed is a list of common ones, mostly used by Peter himself or requested by others because useful… if Peter wants it’s easy to add influx node, too…

          Peter, you can publish this version of the script on bitbucket, then… as said, the only change is that the nodes now are installed 1 by 1 via a “for cycle” instead of a single instruction with all the nodes at once…

          well done (pat pat on my shoulder 🙂 )!

      1. I am busy constructing a script that installs only the extra nodes by taking pieces from THE SCRIPT.
        I notice that node-red-node-sqlite and node-red-contrib-sqldbs are still in the for loop. They should be installed separately?
        While installing sqlite nodes there is no option –save. Doesn’t it mean that it is not registered in the package.json?

        1. don’t know, honestly… because the nodes you install via packages.json are the ones with same permissions… of if you install one with unsafe-perm or installed globally, better to leave them out…

        2. You don’t need the save option any more and now if sqlite rails it not take the rest down. Incidentally I am using RPI 2 and 3 and ALL features work.. and have survived upgrades.

      2. So here are the results of the jury.
        0 votes to node-red-node-sqldbs. This one tries to install sqlite v3.1.3 and blocks or crashed(Pi was unreachale from the web). I had to pull the plug. But here is the log https://pastebin.com/FyvvH3WK.
        This is the script I used for this https://pastebin.com/Bu33dYuN
        I followed the information in the package.json and it seems this node is virtually not maintained anymore, 2 years of inactivity.
        There are also a number of nodes which are deprecated and the owners need to update the compatibility of newer versions.
        SQLite itself is not a problem as it installs a binary v4.0.6 which is compatible with v10 of NR.
        I suggest to leave out the sqldbs node from the standard extra nodes. Be aware that sqlite will be installed twice with the current SCRIPT. If it is necessary to install in the special way stays unclear.
        I am just wondering if it is possible to change the utf8 validation node to a higher version than referenced in a lot of nodes.
        It is not such a bad idea to split the installing of node modules from the main script!

        1. i think you’ve found the assassin! Peter, strip out that node, if you look in logs it tries to reinstall sqlite, too, i think the problem was there, now it came out as nodes are installed one by one… i think nobody uses it, too, and it’s 2 years old, as Leo said…

          about utf8 node, you’re free to update elseways, as in script there’s no version information so it should always be latest version…

            1. does it work? If yes, who cares 😀
              look in logs and see where it’s installed the second time… but in any case, it CANNOT be installed twice, you always get one, the second time in case is just reinstalled, harmless procedure… but if you tackle down what (re)installs that, we can fix it

              1. bcryptjs gave problems when trying to update from Package Manager, changed perms to pi.pi to solve. I suppose that is still a problem. I will try to generate the fault by resetting permissions to root.root.
                Otherwise set permissions to pi.pi after installing all extra nodes, as you do in your update script.

                  1. Sorry to say, but I had serious trouble both with PM and npm. I tried now with root.root and installed blockly without trouble. Probably another problem and a wrong fault message when I ran into trouble. In your update script bcryptjs is changed to pi.pi with all the others in node_modules and there are no problems with that.
                    BTW I will never install the extra nodes anymore other than the ones I need, there are to many deprecated nodes in this NR v10. The menu could have an extra choice for this.

                    1. all node-red setup is run as pi.pi, so setting it as root.root is just an error, we never said to do that… in case, just change owner before doing updates or installs:

                      sudo chown -R pi.pi ~/.node-red

                      that’s a tilde, not an hyphen… ALT 126 on keypad to do it

                    2. Just to clarify.!
                      By some reason the bcryptjs folder was owned by root.root when I got the problems. And there were more directories with it. No idea what went wrong, but that was with a system that would not update at all! That was a few weeks ago. Now things behave normally again.
                      The setting of bcryptjs to root.root was to try to force the error again, but no error happened. So I forget it, think it was a glitch somewhere in the setup.

  88. I would go in and separate out the NR code but I’m too busy sorting out BigTimer issues (moon) which I’m pretty convinced are down to the third party sunCalc – it’s almost enough to make me want to write my own suncalc.

      1. Suncalc actually works fine normally and no-one is stepping in re: the moon so I guess very few people are trying the moonup and moondown.

          1. I think the moon part was added in later.. and generally you don’t have the issue of the sun always being up or never being up. getHours and getMinutes don’t like invalid times and so the flags alwaysUp and AlwaysDown I use as a check.

            It’s all there in the Javascript.

            Pete

  89. I tried now at least 10 times to install the new script from scratch using several versions of the Raspbian image as well as the script options with no success.
    The last time I copied the script to the ~directory and started it with the bash command and the following options: https://www.dropbox.com/s/7hz1v4ay04rq2wz/04-02-_2019_10-56-08.jpg?dl=0

    It created the following log file: https://www.dropbox.com/s/s2c4rkyn3ibgkhq/script.sh-2019-02-04_10h55m.log?dl=0
    After reboot node-red does not start and if I press:
    pi@grafana:~ $ node-red-log

    I get:

    Started Node-RED graphical event wiring tool.
    Error loading settings file: /home/pi/.node-red/settings.js
    Error: Cannot find module ‘moment’
    Started Node-RED graphical event wiring tool.
    Error loading settings file: /home/pi/.node-red/settings.js
    Error: Cannot find module ‘moment’

    I am not very familiar with Linux, so maybe I made a simple mistake.

    1. Hi Andreas, try this:

      cd .node-red
      npm install moment

      or comment out the moment line in settings.js if you don’t use it

      Peter, seems this damn “moment” node is causing various problems… is it needed? can we just strip it out from script, and who wants it will install himself?

      or you can even leave it there, but remove or comment out the relative line in https://tech.scargill.net/iot/settings.txt which is the template used by script to create a proper settings.js file

      1. Hi Antonio, thank you for your help. I installed moment according to your instructions and now it works and I was able to get influxdb connected to node-red and Grafana to influxdb.
        I am working on a video using your script. This time for InfluxDB and Grafana…

        1. it’s Peter’s script… i’m just a humble contributor 🙂

          btw, strange “moment” that was not installed during setup, as it’s there in script… and you’re not the 1st one complaining about this node… in the past we had issues with sqlite (WTH it takes so long to install and its developers can’t release a binary package???), and with serialport and even with i2c nodes… never with moment, till recently…

      2. IMHO moment is not the problem! During the running of the script all additional nodes are removed!!! , including moment js.
        I am going to install a fresh system again to see where we are at the moment….

        1. at the MOMENT i’m working and not able to fix…
          everybody feel free in any MOMENT do provide proper patch to Peter…
          y’all have the script and can modify and report back with a solution…
          thanks

          1. don’t know, as nr script is run before installing nodes, and after that we just install a bunch of nodes, so if we’re INSTALLING, what should REMOVE those nodes… don’t know, honestly i need others testing script and reporting back… who have a spare rpi, or just a spare sdcard, try it, please… without loosing time testing grafana or apache or others, i don’t care about those, just install basic requirements+nodered, that’s the problem right now…

        2. Additional info.
          Andreas has the same problems I have. It throws away 514 nodes in the end of the node installing process. I suspect this is because of the nodes that deprecated and npm cannot cope with all the faults happening.
          See my log:
          https://drive.google.com/file/d/1ues9Y2J8p7MCdZ-2ECCFcZ22M1n5zkYy/view?usp=sharing
          You most probably can restore all the nodes by installing again after the Script is ready, but I did something wrong somehow and I got lost in permission problems.

          1. Here’s a thought. Miss NR out of the script install – and use the recommended NR install/upgrade script – I’m not sure how we got landed with NR install issues.

            1. Peter, that’s exactly what your script does right now, look at line 797: https://bitbucket.org/snippets/scargill/qexexb/the-script-2019#script.sh-797
              it will JUST download and run official script… JUST that…
              then it will JUST install your usual bunch of nodes… JUST that…

              tomorrow i’ll separate these nodes install in smaller groups with addons log writes, so we can address better WTH is going on…

              p.s.: i moved definitely to HASS.IO with nodered addon… 0 headaches, it JUST works… just updated to last version which adds a simple flag to turn on/off the dark theme, and updates usual nodes (bigtimer is now at v2.1.4)…

              1. and when hass.io doesn’t work are we back to a heavy backup session? You are braver than me, HASS.IO installation for me was not trivial and didn;t work properly so I wiped it.

                For now I’m happy with RPI normwl – I’d be happier if the Node-Red guys could make this NODE update scenario more reliable and hassle-free then people wouldn’t pin this on the script.

                1. Well all I know is that over a year ago, I downloaded the script, and ran it on a RP3. After that I copied the SD card, and duplicated it for a few other Pi’s
                  I’ve never seen the need to update anything, and it all just works. The only thing I do differently is get rid of the psuedo sudo security and change the pi user to user 0 and group 0,
                  In other words Pi is now root. If anyone thinks that prepending every command with sudo somehow makes a system more secure, well if a user named Pi exists, then the chances are it has sudo access with no password.
                  BTW, this also eleviates the need to chamod on every file and system resource.
                  I know I’ll get backlash for suggesting such an insecure installation, but given the Pi was built for hardware hackers and learners, why the hell make it harder than it needs to be

                2. backup in hassio are GOOD… you create a snapshot, and download it, or you can have them automatically uploaded on google drive or dropbox… you can use the SAME snapshot to move your setup from a raspberry to a linux vm or what else can run hassio… the only drawback it’s that you’ll have “home assistant”, too, and in case you don’t use it it’s just there doing nothing more than wasting (few) resources…

                  you had issues with home assitant itself as far as i remember, but that needs a little study as it’s a HUGE world… i’m just starting scratching its surface, right now…

          2. i can’t see errors in there, aside that damn sqlite which takes 50% of the full logs with its own crap…
            please share the other log you have in your home folder, the nodered-install.log one, as that part being a separate script now, has it’s own logs…

            1. Search for “514” and you will see the error. And since we have v10 there are those nodes which are deprecated and can’t be build without errors Sorry but I erased that log when lost in permissions, only saved the scriptlog.

                1. If I could give a clear picture what it is happening!
                  If I look on the Internet there are 3 package managers npm, pnpm and yar. Lot of people mention the f..up of the lock file of npm under certain unknown circumstances.
                  All 3 use package.json, but the differences are also annoying. I decided, after a few tries, not to mix them in one install. So I am sticking to npm.

              1. that line means nothing to me… there are few f..ing lines:
                797 installs nodered via ITS OWN setup script:
                https://bitbucket.org/snippets/scargill/qexexb/the-script-2019#script.sh-797

                line 798 copy THAT script nodered (the one you deleted) and changes its permissions in your home folder…

                line 800 installs a bunch of nodes, nothing fancy…

                line 807 install that damn sqlite, and your error is related to that part of the install… well, that’s the way NR guys told Peter to install that damn sqlite… so, remove it and live happy, or go complaining with sqlite guys for doing a shitty job in packaging their on software and not being able to provide a binary npm package…

                i’ve enough of all this mess not related to script but to other people scripts or install procedures…

                1. It was not a line reference. The disaster happens on line 2858, suddenly 514 items are removed.
                  I am now doing an install with the NR method(nodenew) with installing the extra nodes including no sqlite. The extra Pi nodes are installed via this NR script.
                  We have to find a way to get a flawless install!

                2. Made an install without all those fancy extra nodes. 20 minutes and done! Copied in my flows and installing missing nodes by Palette manager no problem. SQLite needed an NR stop/start cycle. Copied my databases.
                  Absolutely no problem!
                  We are obviously getting a wrong URL when done via npm install with all the rebuilding. Does Palette seem to know where the bin is?
                  So what Peter already said. Install things without the nodes. After that every user is responsible to load necessary nodes for his/her nodes to add.

  90. I found an issue using Antonio’s update script.
    Although it recognized that there is a new version of contrib-bigtimer it did not install. I did a stop-start of node-red!
    Why is the command to update made a comment?

    1. it happens from time to time
      that line is commented as i use the other method someone suggested on nodered forums: using “npm-check-updates” (ncu) to create the packages.json with latest versions, then running “npm install” which installs the missing ones and updates the installed ones… you can uncomment that line if you want, harmless AFAIK

      1. OK I suspected already that there were more roads that lead to Rome.
        I have been looking at the dependency tree and I am now very curious if there is not a better system to keep the same module in sync for all parents. Something like a normal linker will put only one object file into a program. What I see is a big number of modules in different versions because it is written so in the package.jsons.
        I did some Googling and found this https://www.npmjs.com/package/next-update. Am I on the right road to a better system just like any other linked program? This is a weird situation!

        1. you can one packages.json and change version numbers with just an asterisk, than it will download latest version

          a good practice is saving every *.json file in .node-red folder… after reinstalling nodered, you can just put there your old packages.json and run npm install, which is now the suggested way to install and it’s the way many docker containers do…

          there’s an other tool, alternative to npm, but we never used: yarn

            1. I installed it looked some videos and concluded it is better than npm, but it is not a revolution. It is more sophisticated in the ways you can update packages. It holds a .cache with all your installed packages locally, so it is faster. I just ran it over the system with Node-RED installed by the Script and it respected at least all those packages not installed by other means and in other occasions, it took newer versions. So in a list you see sometimes more than one version of the same package. It has been organized flat and sorted so it is easy to find out which packages are loaded.
              But if it is worth switching in the Script is doubtful.

    2. I have just updated bigtimer yesterday – it might have been going through the system – current version is 2.1.3 (fixes a moonlight bug introduced in 2.1.1).

      1. With Antonio’s script it was signalled there was an update, but because of the # sign it did not update automatically. In the palette manager it was also signalled. As Antonio said, it can be done automatically. You have written a blog about npm outdated and I used that for a while until I realised there were no updates anymore. Somehow my system went partially broke.

  91. OK just a little report on my next try to install a new system with the renewed SCRIPT
    I took the Raspbian without the recommended programs from the site.
    I tried the new node install procedure and removed the node sqlite from the normal install(no double instals anymore) and move sqldbs also to the separate install line with safe perm.
    The outcome was not perfect, but usable. SQL-nodes did not install, however Palette-Manager did install them!
    There are some fault messages from deprecated nodes I will most probably never use them. Look in the logs of the install to see which ones are deprecated in this NR version
    https://drive.google.com/file/d/1Txvvbi85twf3HzXHI3rwEHQh_YRVzrl-/view?usp=sharing
    https://drive.google.com/file/d/1KH_D5vCDZV6aSDBzbvHDhGujfr0zg2c0/view?usp=sharing
    The SCRIPT needs a small correction, in my opinion, to prevent double install of SQLite when using the NR script. May be we can convince the NR people not to include that question, by using a parameter like -u(unattended).
    These exercises at least gave me some confidence I could build a complete new system from scratch.
    BTW I tried the update script on an almost completely update system without any issues.( this one!: https://drive.google.com/file/d/1KH_D5vCDZV6aSDBzbvHDhGujfr0zg2c0/view?usp=sharing )
    This was more than enough for me now, pfff, going back to where I was working on a week ago.

  92. Hi guys, maybe this will help some people having some of the problems reported here. It may sound simple but SET CORRECT TIME on the raspberry pi just after starting up with the clean image. BEFORE you run the script. Some compilation actions go wrong and in a loop because of the time of the files and the current time of the Pi

    1. Thanks. Mostly, we get very few problems with the script, but those we do are often Node-Red and usually due to the SQL plug-in or the serial port on Raspberry Pi. I’m not sure who we got landed with Node-Red’s problems. However, just to say that everything I use was installed on Pi 3 using the script and I have the above and many more plug-ins working including a couple I added in not so long ago. If you follow any instructions the Node-Red guys come up with, NR should be fine.

  93. Unfortunately I struggle with linux. Am I supposed to be looking for a file called node-red-log? I’ve attempted to use the “find” command but have had no success.

    1. If I may suggest asking Node-Red questions in the Node-Red forums – the IBM guys who created Node-Red are in there. Neither Antonio nor I created or maintain Node-Red.

    1. check if it’s executable and where it is… remember that in linux the current dir is NOT part of the PATH variable, on the contrary of windows… so if you want to run a script in current folder, you have to prepend it with ./

      ./script.sh

      to make it executable:

      sudo chmod +x script.sh

      eventually move it to /usr/local/bin, so it’s in path

  94. I did an install of nodes by extracting from the SCRIPT and one I added myself.
    I left out sqldbs as I noticed this node was not missing. Already present in the base install of node-red modules?
    After copying in my databases everything(?) seems to be working.
    So leave out node-red-contrib-sqldbs in the SCRIPT and the script might have succesfull install.
    I will test that tomorrow, or if somebody else could do let it know here.

  95. SQLite seems to be the problem.
    After a very long time hanging there with many deprecated messages all my extra nodes thrown away (See line3161 of log). NR not starting because of moment not installed.
    https://drive.google.com/file/d/1m39QiO3ch6Hg4n_xqc1APz47SOE7nPYO/view?usp=sharing (NR log)
    https://drive.google.com/file/d/1v-t_qg4P6GyW6tw2oexbZLt51e9BchJi/view?usp=sharing (SCRIPT log)

    I will try to reinstall them all except sqlite3 node(which is separate in Script)
    Later more!

  96. So I did a fresh install and it failed!
    I miss lots of nodes. Looks almost the same problem as when installing or updating node. In node_modules folder there are more nodes left, but they don’t show up in the interface when NR has started
    Node-RED cannot be started because of the missing node moment. When I take that line out of settings.js then NR starts, but then I see a lot of missing nodes. However, I can install them from the Palette manager.
    This is serious because I cannot generate a new system from scratch by downloading Raspbian and the Script and use it as a backup and experimental system. I suppose nobody can get this done as I used a RPI3BP with the fresh downloaded Raspbian and the latest Script.
    If you need more info please ask me what to produce so I can help solving these problems. I am willing to invest quite a bit of time in this.

        1. Yes, it asked me whether I want to have v10 and I said yes! I used an image without the recommended programs so I see that NR is not found as I left the menu to the new Node and kept the 2 separate choices empty.
          I downloaded the Script with the link provided in Blog wget…
          I am now ready for a new attempt to run the script with the full version of Raspbian and I will throw away the Wolfram and LibreOffice including Webmin.
          Will take an hour to see the result

          1. just checked, raspbian is still at version i used, 2018-11-13: https://www.raspberrypi.org/downloads/raspbian/

            official nodered install script (used by Pete’s script from 2019 version and going on), is still the same, 4-12-2018: https://github.com/node-red/raspbian-deb-package/blob/master/resources/update-nodejs-and-nodered

            latest script using these specific version worked flawlessly less than a month ago, during tests…

            if even this fails, try running the above nodered script manually, but in script it’s used just as it is, in fact it halts Peter’s script just to do its stuff, before going on with nodes…

            and try NOT selecting hw support, maybe it’s that… but even that was tested…

  97. I have been trying to get the script to work in a VMWare VM. There appears to be a permission problem with the npm install (After ‘Installing Nodes’). I got a load of permission denied , mkdir ‘/home/pi/.npm/_cacache/index-v5/xxx.
    When I copied the npm install command from the script.sh (after cleaning) and ran it as sudo it installed (all-be-it with a few warnings and an error for serialport.
    I can now access Node-Red control panel from the Type on Screen page

  98. I am special,…. I know! It is always me to have this kind of problems…..
    I going to build a new system with the latest version of all and default settings as presented when the script begins, no change of options.
    B.t.w. when I try to install a new node I got the same trouble. I corrected that by copying back all my node_modules files from a backup disk. Had no problems after that with node-red, but I did not dare to update or add anything.
    The only thing I see happening in the log that there have been thrown away 1260 files!!!
    — removed 1260 packages and audited 166 packages in 47.676s, out of the blue.–

  99. All trouble started when I was trying to update BigTimer node. First I ran into bcryptjs permission problem and after chown to pi:pi it did update and throwed away all my nodes except the standard ones.
    I have some question about Mosquitto. Suddenly, after changing my SD card for a backup, I experienced some problems. Node-RED would not start and now Mosquitto is not starting automatically anymore. I am on Stretch and almost completely updated(only 3 packages still there).
    What to do to get Mosquitto start automatically again and how to check if this, other than a reboot, if the settings are OK?

    1. suggest installing webmin so you can visually see what’s enabled to start automatically on boot, check logs, etc… be prepared to a LONG install time, but after that, point your browser to port 10000 and go from there…

  100. Meanwhile I have made some progress. Using linked clone VMs is a blessing. Unfortunately I need to use this…

    Step 1. comment out the installation CD-Rom as source:
    sudo nano /etc/apt/sources.list
    Comment out (putting # in front) deb cdrom:[Ubuntu-Server 16.04 LTS _Xenial Xerus_ – Release amd64 (20160420.3)]/ xenial main restricted

    This fixed installing NodeJS, NPM and with that Node-RED.

    Step 2. Installing the moment module manually after the script ends: sudo npm install moment
    This resolves the issue that Node-RED does not start.

    Next issue to tackle is:
    Noticing that still a lot of nodes are missing (by reference Pete’s BIG TIMER) and no Dashboard…

    Although generated the en_US and en_GB locales the following error keeps nagging during script execution tests.

    perl: warning: Setting locale failed.
    perl: warning: Please check that your locale settings:
    LANGUAGE = “en_US:”,
    LC_ALL = (unset),
    LC_CTYPE = “UTF-8”,
    LANG = “en_US.UTF-8”
    are supported and installed on your system.
    perl: warning: Falling back to a fallback locale (“en_US.UTF-8”).

  101. Hi Peter,
    I am trying out your newest release of the script but it gives me some headaches. For whatever reason it will not install npm and with that no Node-RED is installed.
    Trying to install it upfront, the scripts removes it and stuck in same error loop.
    I am using Ubuntu 16.04 LTS.
    Any suggestions?

  102. Hi all,
    I think I have a similar problem as Tonyb. I’m using the 2019 “THE SCRIPT” on a dietpi and raspberry pi 3. My installation does not install mosquitto or apache and maybe other things too. Here is a snippet from my log file.

    ############################################################
    Installing Mosquitto with Websockets
    –2019-01-22 20:15:41– http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
    Resolving repo.mosquitto.org (repo.mosquitto.org)… 85.119.83.194, 2001:ba8:1f1:f271::2
    Connecting to repo.mosquitto.org (repo.mosquitto.org)|85.119.83.194|:80… connected.
    HTTP request sent, awaiting response… 200 OK
    Length: 3120 (3.0K) [application/octet-stream]
    Saving to: ‘STDOUT’

    0K … 100% 66.0M=0s

    2019-01-22 20:15:41 (66.0 MB/s) – written to stdout [3120/3120]

    E: Unable to correct problems, you have held broken packages.
    Failed to start mosquitto.service: Unit mosquitto.service not found.
    Failed to enable unit: File mosquitto.service: No such file or directory
    ############################################################
    Installing Apache/PHP and Sqlite
    E: Package ‘libapache2-mod-php5’ has no installation candidate
    E: Package ‘php5-sqlite’ has no installation candidate
    !!!! Apache+PHP+SQLITE+PHPLITEADMIN NOT INSTALLED! [0;97m

    ############################################################

    My log file is too long to insert here but I have tried to attach it as a file renamed as a .jpg to see if that would work.

    Any suggestions? Thanks!!

    1. I have found a solution to my problem. I believe that there were some dependencies for mosquitto that were not being installed with THE SCRIPT. (Maybe DietPi was too light?) I was able to install mosquitto using the DietPi utility dietpi-software to create a working installation of mosquitto then re-run THE SCRIPT. Hope this helps other people.

      1. don’t know why in those logs it’s trying to install php5… can’t stay on the changes dietpi does, it always worked, they sometimes change stuff and break things… just use raspbian, problem solved

    2. I can’t comment on diet-pi as I’ve not used it for some time. I use only the full Raspbian (usually the version without the extras).

  103. Hi again. re-ran the new script on the old 8gb sd card a new 16 gb sd card, same result everything loads but can’t open the web page ‘Site can’t be reached, refused to connect’. Everything else seems to work. I did notice that in the node red install list, I had ticks for most of the items but ‘-‘ for ‘Move global nodes to local’ and ‘NPM rebuild existing nodes’

    As far as I can tell, logs are the same for both installs. Here’s the last one:

    ***************************************

    Started : Mon 7 Jan 18:54:36 GMT 2019
    Running for user pi at /home/pi
    Failed to stop nodered.service: Unit nodered.service not loaded.
    Found global nodes: :
    Reading package lists…
    Building dependency tree…
    Reading state information…
    Package ‘nodered’ is not installed, so not removed
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    Reading package lists…
    Building dependency tree…
    Reading state information…
    Package ‘nodejs-legacy’ is not installed, so not removed
    Package ‘npm’ is not installed, so not removed
    Package ‘nodejs’ is not installed, so not removed
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    dpkg: warning: ignoring request to remove nodejs which isn’t installed
    dpkg: warning: ignoring request to remove node which isn’t installed
    Reading package lists…
    Building dependency tree…
    Reading state information…
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    Reading package lists…
    Building dependency tree…
    Reading state information…
    curl is already the newest version (7.52.1-5+deb9u8).
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

    ## Installing the NodeSource Node.js 10.x repo…

    ## Populating apt-get cache…

    + apt-get update
    Hit:1 http://raspbian.raspberrypi.org/raspbian stretch InRelease
    Hit:2 http://archive.raspberrypi.org/debian stretch InRelease
    Reading package lists…

    ## Confirming “stretch” is supported…

    + curl -sLf -o /dev/null ‘https://deb.nodesource.com/node_10.x/dists/stretch/Release’

    ## Adding the NodeSource signing key to your keyring…

    + curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add –
    Warning: apt-key output should not be parsed (stdout is not a terminal)
    OK

    ## Creating apt sources list file for the NodeSource Node.js 10.x repo…

    + echo ‘deb https://deb.nodesource.com/node_10.x stretch main’ > /etc/apt/sources.list.d/nodesource.list
    + echo ‘deb-src https://deb.nodesource.com/node_10.x stretch main’ >> /etc/apt/sources.list.d/nodesource.list

    ## Running `apt-get update` for you…

    + apt-get update
    Hit:1 http://raspbian.raspberrypi.org/raspbian stretch InRelease
    Hit:2 http://archive.raspberrypi.org/debian stretch InRelease
    Get:3 https://deb.nodesource.com/node_10.x stretch InRelease [4,612 B]
    Get:4 https://deb.nodesource.com/node_10.x stretch/main armhf Packages [765 B]
    Fetched 5,377 B in 2s (2,148 B/s)
    Reading package lists…

    ## Run `sudo apt-get install -y nodejs` to install Node.js 10.x and npm
    ## You may also need development tools to build native addons:
    sudo apt-get install gcc g++ make
    ## To install the Yarn package manager, run:
    curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add –
    echo “deb https://dl.yarnpkg.com/debian/ stable main” | sudo tee /etc/apt/sources.list.d/yarn.list
    sudo apt-get update && sudo apt-get install yarn

    Reading package lists…
    Building dependency tree…
    Reading state information…
    The following NEW packages will be installed:
    nodejs
    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 13.5 MB of archives.
    After this operation, 68.2 MB of additional disk space will be used.
    Get:1 https://deb.nodesource.com/node_10.x stretch/main armhf nodejs armhf 10.15.0-1nodesource1 [13.5 MB]
    Fetched 13.5 MB in 9s (1,418 kB/s)
    Selecting previously unselected package nodejs.
    (Reading database …
    (Reading database … 5%
    (Reading database … 10%
    (Reading database … 15%
    (Reading database … 20%
    (Reading database … 25%
    (Reading database … 30%
    (Reading database … 35%
    (Reading database … 40%
    (Reading database … 45%
    (Reading database … 50%
    (Reading database … 55%
    (Reading database … 60%
    (Reading database … 65%
    (Reading database … 70%
    (Reading database … 75%
    (Reading database … 80%
    (Reading database … 85%
    (Reading database … 90%
    (Reading database … 95%
    (Reading database … 100%
    (Reading database … 55602 files and directories currently installed.)
    Preparing to unpack …/nodejs_10.15.0-1nodesource1_armhf.deb …
    Unpacking nodejs (10.15.0-1nodesource1) …
    Setting up nodejs (10.15.0-1nodesource1) …
    Processing triggers for man-db (2.7.6.1-2) …
    /usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
    /usr/bin/npx -> /usr/lib/node_modules/npm/bin/npx-cli.js
    + npm@6.5.0
    added 2 packages from 1 contributor and updated 14 packages in 58.92s
    npm WARN deprecated mailparser@0.6.2: Mailparser versions older than v2.3.0 are deprecated
    npm WARN deprecated nodemailer@1.11.0: All versions below 4.0.1 of Nodemailer are deprecated. See https://nodemailer.com/status/
    npm WARN deprecated mimelib@0.3.1: This project is unmaintained
    npm WARN deprecated mailcomposer@2.1.0: This project is unmaintained
    npm WARN deprecated buildmail@2.0.0: This project is unmaintained
    /usr/bin/node-red -> /usr/lib/node_modules/node-red/red.js
    /usr/bin/node-red-pi -> /usr/lib/node_modules/node-red/bin/node-red-pi

    > bcrypt@2.0.1 install /usr/lib/node_modules/node-red/node_modules/bcrypt
    > node-pre-gyp install –fallback-to-build

    node-pre-gyp ERR! Tried to download(404): https://github.com/kelektiv/node.bcrypt.js/releases/download/v2.0.1/bcrypt_lib-v2.0.1-node-v64-linux-arm-glibc.tar.gz
    node-pre-gyp ERR! Pre-built binaries not found for bcrypt@2.0.1 and node@10.15.0 (node-v64 ABI, glibc) (falling back to source compile with node-gyp)
    make: Entering directory ‘/usr/lib/node_modules/node-red/node_modules/bcrypt/build’
    CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o
    CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o
    CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt_node.o
    ../src/bcrypt_node.cc: In function ‘char {anonymous}::ToCharVersion(v8::Local)’:
    ../src/bcrypt_node.cc:66:30: warning: ‘v8::String::Utf8Value::Utf8Value(v8::Local)’ is deprecated: Use Isolate version [-Wdeprecated-declarations]
    String::Utf8Value value(str);
    ^
    In file included from /root/.node-gyp/10.15.0/include/node/v8.h:26:0,
    from /root/.node-gyp/10.15.0/include/node/node.h:63,
    from ../../nan/nan.h:51,
    from ../src/bcrypt_node.cc:1:
    /root/.node-gyp/10.15.0/include/node/v8.h:2892:28: note: declared here
    explicit Utf8Value(Local obj));
    ^
    /root/.node-gyp/10.15.0/include/node/v8config.h:324:3: note: in definition of macro ‘V8_DEPRECATED’
    declarator __attribute__((deprecated(message)))
    ^~~~~~~~~~
    SOLINK_MODULE(target) Release/obj.target/bcrypt_lib.node
    COPY Release/bcrypt_lib.node
    COPY /usr/lib/node_modules/node-red/node_modules/bcrypt/lib/binding/bcrypt_lib.node
    TOUCH Release/obj.target/action_after_build.stamp
    make: Leaving directory ‘/usr/lib/node_modules/node-red/node_modules/bcrypt/build’
    + node-red@0.19.5
    added 396 packages from 341 contributors in 131.503s
    0.19.5
    Installing extra nodes: node-red-node-random node-red-contrib-ibm-watson-iot node-red-node-ping node-red-contrib-play-audio node-red-node-smooth node-red-node-serialport :

    > serialport@6.2.2 install /home/pi/.node-red/node_modules/serialport
    > prebuild-install || node-gyp rebuild

    prebuild-install WARN install No prebuilt binaries found (target=10.15.0 runtime=node arch=arm platform=linux)
    make: Entering directory ‘/home/pi/.node-red/node_modules/serialport/build’
    CXX(target) Release/obj.target/serialport/src/serialport.o
    ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Open(Nan::NAN_METHOD_ARGS_TYPE)’:
    ../src/serialport.cpp:41:49: warning: ‘v8::String::Utf8Value::Utf8Value(v8::Local)’ is deprecated: Use Isolate version [-Wdeprecated-declarations]
    v8::String::Utf8Value path(info[0]->ToString());
    ^
    In file included from /home/pi/.node-gyp/10.15.0/include/node/v8.h:26:0,
    from /home/pi/.node-gyp/10.15.0/include/node/node.h:63,
    from ../../nan/nan.h:53,
    from ../src/./serialport.h:6,
    from ../src/serialport.cpp:1:
    /home/pi/.node-gyp/10.15.0/include/node/v8.h:2892:28: note: declared here
    explicit Utf8Value(Local obj));
    ^
    /home/pi/.node-gyp/10.15.0/include/node/v8config.h:324:3: note: in definition of macro ‘V8_DEPRECATED’
    declarator __attribute__((deprecated(message)))
    ^~~~~~~~~~
    ../src/serialport.cpp:48:53: warning: ‘v8::Local v8::Value::ToObject() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
    v8::Local options = info[1]->ToObject();
    ^
    In file included from /home/pi/.node-gyp/10.15.0/include/node/node.h:63:0,
    from ../../nan/nan.h:53,
    from ../src/./serialport.h:6,
    from ../src/serialport.cpp:1:
    /home/pi/.node-gyp/10.15.0/include/node/v8.h:10046:15: note: declared here
    Local Value::ToObject() const {
    ^~~~~
    ../src/serialport.cpp: In function ‘void EIO_AfterOpen(uv_work_t*)’:
    ../src/serialport.cpp:95:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
    data->callback.Call(2, argv);
    ^
    In file included from ../src/./serialport.h:6:0,
    from ../src/serialport.cpp:1:
    ../../nan/nan.h:1674:3: note: declared here
    Call(int argc, v8::Local argv[]) const {
    ^~~~
    ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Update(Nan::NAN_METHOD_ARGS_TYPE)’:
    ../src/serialport.cpp:113:53: warning: ‘v8::Local v8::Value::ToObject() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
    v8::Local options = info[1]->ToObject();
    ^
    In file included from /home/pi/.node-gyp/10.15.0/include/node/node.h:63:0,
    from ../../nan/nan.h:53,
    from ../src/./serialport.h:6,
    from ../src/serialport.cpp:1:
    /home/pi/.node-gyp/10.15.0/include/node/v8.h:10046:15: note: declared here
    Local Value::ToObject() const {
    ^~~~~
    ../src/serialport.cpp: In function ‘void EIO_AfterUpdate(uv_work_t*)’:
    ../src/serialport.cpp:150:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
    data->callback.Call(1, argv);
    ^
    In file included from ../src/./serialport.h:6:0,
    from ../src/serialport.cpp:1:
    ../../nan/nan.h:1674:3: note: declared here
    Call(int argc, v8::Local argv[]) const {
    ^~~~
    ../src/serialport.cpp: In function ‘void EIO_AfterClose(uv_work_t*)’:
    ../src/serialport.cpp:188:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
    data->callback.Call(1, argv);
    ^
    In file included from ../src/./serialport.h:6:0,
    from ../src/serialport.cpp:1:
    ../../nan/nan.h:1674:3: note: declared here
    Call(int argc, v8::Local argv[]) const {
    ^~~~
    ../src/serialport.cpp: In function ‘void EIO_AfterFlush(uv_work_t*)’:
    ../src/serialport.cpp:231:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
    data->callback.Call(1, argv);
    ^
    In file included from ../src/./serialport.h:6:0,
    from ../src/serialport.cpp:1:
    ../../nan/nan.h:1674:3: note: declared here
    Call(int argc, v8::Local argv[]) const {
    ^~~~
    ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Set(Nan::NAN_METHOD_ARGS_TYPE)’:
    ../src/serialport.cpp:250:53: warning: ‘v8::Local v8::Value::ToObject() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
    v8::Local options = info[1]->ToObject();
    ^
    In file included from /home/pi/.node-gyp/10.15.0/include/node/node.h:63:0,
    from ../../nan/nan.h:53,
    from ../src/./serialport.h:6,
    from ../src/serialport.cpp:1:
    /home/pi/.node-gyp/10.15.0/include/node/v8.h:10046:15: note: declared here
    Local Value::ToObject() const {
    ^~~~~
    ../src/serialport.cpp: In function ‘void EIO_AfterSet(uv_work_t*)’:
    ../src/serialport.cpp:285:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
    data->callback.Call(1, argv);
    ^
    In file included from ../src/./serialport.h:6:0,
    from ../src/serialport.cpp:1:
    ../../nan/nan.h:1674:3: note: declared here
    Call(int argc, v8::Local argv[]) const {
    ^~~~
    ../src/serialport.cpp: In function ‘void EIO_AfterGet(uv_work_t*)’:
    ../src/serialport.cpp:336:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
    data->callback.Call(2, argv);
    ^
    In file included from ../src/./serialport.h:6:0,
    from ../src/serialport.cpp:1:
    ../../nan/nan.h:1674:3: note: declared here
    Call(int argc, v8::Local argv[]) const {
    ^~~~
    ../src/serialport.cpp: In function ‘void EIO_AfterGetBaudRate(uv_work_t*)’:
    ../src/serialport.cpp:383:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
    data->callback.Call(2, argv);
    ^
    In file included from ../src/./serialport.h:6:0,
    from ../src/serialport.cpp:1:
    ../../nan/nan.h:1674:3: note: declared here
    Call(int argc, v8::Local argv[]) const {
    ^~~~
    ../src/serialport.cpp: In function ‘void EIO_AfterDrain(uv_work_t*)’:
    ../src/serialport.cpp:424:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
    data->callback.Call(1, argv);
    ^
    In file included from ../src/./serialport.h:6:0,
    from ../src/serialport.cpp:1:
    ../../nan/nan.h:1674:3: note: declared here
    Call(int argc, v8::Local argv[]) const {
    ^~~~
    CXX(target) Release/obj.target/serialport/src/serialport_unix.o
    CXX(target) Release/obj.target/serialport/src/poller.o
    ../src/poller.cpp: In static member function ‘static void Poller::onData(uv_poll_t*, int, int)’:
    ../src/poller.cpp:69:29: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
    obj->callback.Call(2, argv);
    ^
    In file included from ../src/poller.cpp:1:0:
    ../../nan/nan.h:1674:3: note: declared here
    Call(int argc, v8::Local argv[]) const {
    ^~~~
    CXX(target) Release/obj.target/serialport/src/serialport_linux.o
    SOLINK_MODULE(target) Release/obj.target/serialport.node
    COPY Release/serialport.node
    make: Leaving directory ‘/home/pi/.node-red/node_modules/serialport/build’
    npm notice created a lockfile as package-lock.json. You should commit this file.
    npm WARN node-red-project@0.0.1 No repository field.
    npm WARN node-red-project@0.0.1 No license field.

    + node-red-contrib-ibm-watson-iot@0.2.8
    + node-red-node-ping@0.0.16
    + node-red-contrib-play-audio@2.3.2
    + node-red-node-smooth@0.1.0
    + node-red-node-random@0.1.2
    + node-red-node-serialport@0.6.8
    added 273 packages from 125 contributors and audited 857 packages in 104.422s
    found 0 vulnerabilities

    The user `pi’ is already a member of `gpio’.
    Finished : Mon 7 Jan 18:54:36 GMT 2019

  104. Hi!
    The new script worked great for me!
    Thank you very much!
    Let’s make home automation now!
    Best regards!

  105. Hi, tried the new script today to help with my node red problem. First time, looked to go ok although seemed to go around in circles on sqlite but when I logged on all the items on the log in page worked but couldn’t access node red. Apologies, newbie mistake but forgot to look at the error log file :(.

    Second time the pi hung for 40+ minutes halfway down the new list of node red, first time through cleared this with all ticks.

    Used the same script but selected old rather than new node red and that has worked ok.

    I’ll retry the new method for node red in the next couple of days with a different sd card and report back.

    1. well, if new version does not work, go complain with node-red guys, because it’s STRAIGHT their script, just downloaded and run by Peter’s one 🙂
      that’s the suggested way to install it, i just made that a menu option…
      after that, it installs the standard nodes using npm install, as ANYBODY would do manually… then installs that DAMN sqlite using the way Dave suggested to Peter to do, with –unsafe-perms…
      script does nothing more that avoid you to run same stuff line by line manually, so don’t know what to do anymore…

  106. WoW! You are so efficient! I didn’t expect a fastest solution. Thank you very much!
    I will trie it Sunday!
    I’m just wondering how do you store your sensors datas without sqlite?

    Have a nice weekend!

  107. Hi! Congratulations and thank you for all this work!
    I’d like to use this installation script on my raspberry pi 3B+, but I’ve seen the warning about Node Red.
    Does someone used it successfully recently?
    Is it useful to wait for a fix or do I have to find an other solution?

    Best regards.
    Jean.

      1. I’m decorating today so can’t help right now. However, putting the details of all nodes into a text file is a first step as you need to ensure that all nodes are in the package.json file, if not, they may be silently removed. Node 6 onwards incidentally does not need the –save option. Earlier versions did. Also I’m told that the SQLITE3 node needs npm -i –unsafe-perm node-red-node-sqlite3 and can take 20-30 minutes to compile. DaveCV is apparently looking at better-sqlite3 as a possible “upgrade.

        I’ve not had time to progress this – the script messed up Node-Red for me but I got around it by upgrading an earlier clone of my setup. Indeed I’ve made umpteen clones, all fully up to date and using npm version 6.4.1 and node version 8.14.0

    1. updated script sent to Peter, tested on a Raspberry Pi 3B+ using Raspbian Stretch Lite as base, no issues so far, EXCEPT sqlite…

      i left previous install menu options (“nodejs” and “nodered”) in script but put them OFF, while now it’s ON the new “nodenew” which installs both NodeJS and Nodered using official recommended script ( https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered )… DO NOT choose both setups: you MUST use OR the predefined nodenew option, OR the other 2… if you want hardware support, of course add the other menu option which enables addon nodes (i2c and some tweaks)…

      the new addon script itself will already install serialport and other RPI gpio related, if you answer yes when asked… YES, the script WILL HALT once reached the new official node script installer, which asks 2 questions (i didn’t want to alter it, it’s stock from nodered guys):
      Are you really sure you want to do this ? [y/N] ? y
      Would you like to install the Pi-specific nodes ? [y/N] ? y

      i’m starting to HATE sqlite: the fact the sqlite guys are not able to release a proper precompiled npm binary for it is unbelievable, and takes MUCH part of the script install time… nodes install failed because of it, so i had to make its install a line on its own… and even so, i get these errors:
      npm WARN node-red-project@0.0.1 No repository field.
      npm WARN node-red-project@0.0.1 No license field.
      npm WARN optional SKIPPING OPTIONAL DEPENDENCY: utf-8-validate@1.2.2 (node_modules/utf-8-validate):
      npm WARN optional SKIPPING OPTIONAL DEPENDENCY: utf-8-validate@1.2.2 install: `node-gyp rebuild`
      npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

      npm ERR! code ELIFECYCLE
      npm ERR! errno 1
      npm ERR! sqlite3@4.0.4 install: `node-pre-gyp install –fallback-to-build`
      npm ERR! Exit status 1
      npm ERR!
      npm ERR! Failed at the sqlite3@4.0.4 install script.
      npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

      npm ERR! A complete log of this run can be found in:
      npm ERR! /home/pi/.npm/_logs/2019-01-03T10_52_05_528Z-debug.log

      the nodered install script has its own log file (/var/log/nodered-install.log), which is copied in PI user home directory once install finishes…

      oh, for who was expecting to have Node v8, no, it’s now v10 in latest official install script… look at lines 180 and 200 of:
      https://github.com/node-red/raspbian-deb-package/blob/master/resources/update-nodejs-and-nodered
      line 180 points to this url/folder, which contains node v10: https://nodejs.org/download/release/latest-dubnium
      while line 200 explicitely downloads the v10 nodesetup script… who knows what’s in nodered guys: in last months we used script install v6 and we ended up with having v8 instead (which caused most of the sqlite/i2c/serial and update problems…)… now that the suggested version is v8, they install v10…

      well, it’s up to you now, i moved my setups to Home Assistant and use its docker containerized addon for NodeRed… no more this mess… using the script you have all working now, EXCEPT sqlite, and it’s NOT our fault, now we’re using the suggested setup path (and even before we just used STOCK nodesetup.sh)… i have nodered running using this script, for me it’s ok, as said EXCEPT sqlite…

      pi@raspberrypi:~ $ sudo systemctl status nodered.service
      ● nodered.service – Node-RED graphical event wiring tool
      Loaded: loaded (/lib/systemd/system/nodered.service; enabled; vendor preset: enabled)
      Active: active (running) since Thu 2019-01-03 10:59:33 GMT; 1min 21s ago
      Docs: http://nodered.org/docs/hardware/raspberrypi.html
      Main PID: 328 (node-red)
      CGroup: /system.slice/nodered.service
      └─328 node-red

      Jan 03 11:00:02 raspberrypi Node-RED[328]: If the system-generated key is lost for any reason, your credentials
      Jan 03 11:00:02 raspberrypi Node-RED[328]: file will not be recoverable, you will have to delete it and re-enter
      Jan 03 11:00:02 raspberrypi Node-RED[328]: your credentials.
      Jan 03 11:00:02 raspberrypi Node-RED[328]: You should set your own key using the ‘credentialSecret’ option in
      Jan 03 11:00:02 raspberrypi Node-RED[328]: your settings file. Node-RED will then re-encrypt your credentials
      Jan 03 11:00:02 raspberrypi Node-RED[328]: file using your chosen key the next time you deploy a change.
      Jan 03 11:00:02 raspberrypi Node-RED[328]: ———————————————————————
      Jan 03 11:00:02 raspberrypi Node-RED[328]: 3 Jan 11:00:02 – [info] Starting flows
      Jan 03 11:00:02 raspberrypi Node-RED[328]: 3 Jan 11:00:02 – [info] Started flows
      Jan 03 11:00:02 raspberrypi Node-RED[328]: 3 Jan 11:00:02 – [info] Server now running at http://127.0.0.1:1880/

  108. At the moment the only way to update modules is start from scratch and run the script, copying my flows and database do some renaming in setings.js. This is not such a big thing as it runs on my spare RPI3B+ on the side.
    There is an issue with updating which I cannot identify as you guys are not experiencing it. During running the Script it has problems with some serial and sqlite3.o nodes during node install where it is working for half an hour and finally comes through after a big delay and producing lots of output from the script. The only thing I have to try is a run with the same options selected with which you have made an updatable system. Now I leave out the hardware and GPIO and log2ram as well as deleting libreoffice and wolfram… Which options did you choose?

  109. So I did a complete run from nothing to using this node-red update script ( https://nodered.org/docs/hardware/raspberrypi )
    The outcome is not good. The update script ruined my node-red and will not start anymore . It did after applying the SCRIPT and copying my flow.
    Seems to be I need to give sudo node-red-start. Then it starts node-red
    This is the text I got in the Terminal:

    Starting as a systemd service.
    Started Node-RED graphical event wiring tool.
    Error loading settings file: /home/pi/.node-red/settings.js
    Error: Cannot find module ‘moment’

    That’s it for now. It is not reliable on my Pi3B+ Most probably more after Christmas. And I did dare to use Antonio’s update script, because this was even more destructive on this Pi a few days ago! First exchange with bu and make a new copy bu.

    1. we’ll take a look at script in these vacation days, but my update script will not do anything you shouldn’t do on your own, line by line, when updating a system… i use it for years now, on many system…

      but today i’m playing with home assistant, i like HASS.IO as it has all needed addons with just a few click away… i installed nodered, mqtt, sqlite web, tasmoadmin, and have all working in https with automatic letsencrypt renewal, nginx reverse proxy and dyndns without writing A SINGLE line of code in a terminal… enabled plugins, configured the few parameters via web in json format, restarted services, done…

      of course it’s not for who uses the script for a pure nodered setup, as home assistant was never in Peter’s plans, so using hass.io to have all the other stuff working is a bit like shooting at flies with a cannon… but how cool is the work that HA guys are doing… have both worlds talking together is the way to go for me now, as HA has a HUGE support, while creating automations in yaml is a bit “meh”… but as the 2 can interact very easily, who cares? 🙂

      https://www.youtube.com/watch?v=fqi_p15eI8A
      https://www.youtube.com/watch?v=Tzu-AaO71N0

      https://www.youtube.com/watch?v=SuoSXVqjyfc

      https://www.youtube.com/watch?v=o-vNCObJ4dM
      https://www.youtube.com/watch?v=d1m8ySGlRh8

  110. I set up my system with the script. Personally I’m using node 8. I lost nodes on an update… Thanks to Node Red.. and reinstalled simply using the node red nojejs upgrade script on the NR site and then used rpi-clone on that. I’ve used my clone as a starting point and have done so ever since. Everything works.. and I’ve since added pivpn and pihole. Before every significant change I use rpi-clone as a safety measure.

  111. I always keep 2 copies of a working system!
    I do my experiments on a spare RPI!
    It was a long time with no problems, but now I get more and more problems. We need to find the source of the troubles. However, my Homeserver is still functioning, although I cannot update it anymore. But as long as it works why updating! A new function on Big-timer?

  112. I have a major problem updating modules. there is 1 node_modules bcryptjs folder with root owner and root user permissions. All others(there are many) seem to be pi,pi.
    I am using a fresh system using the script and tried to update by using the Palette Manager. It failed and pointed to the error log in .npm/_logs

    Can anyone give a medicine against this error messagein the .npm log?:

    silly diff-trees filtering actions: includeDev false includeProd true includeOpt true
    28 warn checkPermissions Missing write access to /home/pi/.node-red/node_modules/bcryptjs
    29 timing stage:rollbackFailedOptional Completed in 3ms
    30 timing stage:runTopLevelLifecycles Completed in 108334ms
    31 silly saveTree node-red-project@0.0.1
    31 silly saveTree └─┬ node-red-contrib-bigtimer@2.0.7
    31 silly saveTree └── suncalc@1.8.0
    32 verbose stack Error: EACCES: permission denied, access ‘/home/pi/.node-red/node_modules/bcryptjs’
    33 verbose cwd /home/pi/.node-red
    34 verbose Linux 4.14.79-v7+
    35 verbose argv “/usr/bin/node” “/usr/local/bin/npm” “install” “–save” “–save-prefix=~” “–production” “node-red-contrib-bigtimer@2.0.7″
    36 verbose node v8.11.1
    37 verbose npm v6.4.1
    38 error path /home/pi/.node-red/node_modules/bcryptjs
    39 error code EACCES
    40 error errno -13
    41 error syscall access
    42 error Error: EACCES: permission denied, access ‘/home/pi/.node-red/node_modules/bcryptjs’
    42 error { Error: EACCES: permission denied, access ‘/home/pi/.node-red/node_modules/bcryptjs’
    42 error stack: ‘Error: EACCES: permission denied, access \’/home/pi/.node-red/node_modules/bcryptjs\”,
    42 error errno: -13,
    42 error code: ‘EACCES’,
    42 error syscall: ‘access’,
    42 error path: ‘/home/pi/.node-red/node_modules/bcryptjs’ }
    43 error The operation was rejected by your operating system.
    43 error It is likely you do not have the permissions to access this file as the current user
    43 error
    43 error If you believe this might be a permissions issue, please double-check the
    43 error permissions of the file and its containing directories, or try running
    43 error the command again as root/Administrator (though this is not recommended).
    44 verbose exit [ -13, true ]

    A lot of other things are not working too! npm outdated gives no modules to be updated. I installed npm-check_updates says that nothing needs to be updated. What is going on?

      1. Why is this not in the SCRIPT? (short explaining pls!)
        I am just a simple linux user and can you imagine those commands are absolutely witchcraft for me.
        I was already on that trail, but I did not had the courage to give the command.
        As you can see in the log bcryptjs is the first one which is wrong and I searched the blog for that phrase and draw a blank.
        I understand this should do the trick, but now I have a very strange phenomenon. When I reboot node-red is not starting. When I try to do it with node-red-start it gives an error loading settings.js. I have compared this settings.js file with a working version, it is there and I raised access to anyone but still not loading?

        1. because we never understood why this happens sometimes, and it’s something that is not useful while script is running: as script is meant to be run on freshly installed devices, the first time you run npm that folder is created and has already the right permissions… while updating some nodes, don’t know which one, the problem could appear… the bcryptjs package is one of the problematic one, especially on updating, if running on nodejs v8, that’s why we suggested to stay on node v6…

          i added that line to my update script a while ago, you can use it:
          https://gist.github.com/fragolinux/412aa50683eb32bb879a120c73110938

          1. Somehow my nodejs updated to v8.11. This must be a setting, because I did not take action as I read not to update it.
            Probably it is related to all the problems I have, but how to stay on v6???

          2. During my experiments I used the commands you use in the script and that did not work at all! That is all before you advised me the owner change. I was than not aware I am running on nodejs v8.11.

            1. as Peter said in his latest comment, you’re not the only one who lost his nodes, and we still didn’t realize what cause that… it’s NOT script related, for some reason npm update screws things up…

            1. my script is just for automating periodical updates… instead of doing a bunch of updates commands, i condensed them there… the last lines are for homeassistant, remove them if not needed… deborphan searches for DEB packages that are not needed (have no requirements as dependencies in other packages) in your system anymore, and can be removed… think if you do “sudo apt-get install apache2”, it will install that AND tons of others… if you remove apache2, and do apt-get autoremove, you get rid of majority of them, but not ALL… deborphan is the King Herod of them 😀

  113. I made a complete new install and accidentaly missed the webmin install star. Now I miss it.
    Can I use the piece of script in Script.sh and use it to install it afterwards?

  114. also, i sent this along to the node guys and they think its a problem in the script also:

    Just a quick question, the node-red-node-email node gets installed during the node-red installation as a default. There is a newer version available as the palette manager says there is an update, but it is not updatable from the palette manager as it is installed globally. It has to be uninstalled and reinstalled to work. Little bit of a pain.

  115. Instead of changing bcryptjs from root to pi, i left its owner as root but changed permisions then tried to install from command line:

    pi@NodeRed2:~/.node-red/node_modules $ sudo chmod 777 bcryptjs
    pi@NodeRed2:~/.node-red/node_modules $ cd $HOME/.node-red
    pi@NodeRed2:~/.node-red $ npm install node-red-contrib-combine
    + node-red-contrib-combine@1.6.2
    added 1 package from 1 contributor, removed 1326 packages and audited 1 package in 57.309s
    found 0 vulnerabilities
    REMOVED 1326 Packages!! BROKEN Again. I just don’t get why it removes all the other packages.
    Would it be possable to install new nodes into a different folder so they dont delete all the other stuff, like in the httpstatic path?

      1. Ok Pete,

        Did as you suggested and ended up with the following solution to the above problems:

        When node-red and npm are installed by the script, the errors occur. I’m not exactly sure why but it does. If I wipe my pi and reinstall stretch, then system updates, then npm, then node-red, then run the script omitting the npm and node-red install options, everything works perfectly. Solved Chris’s problem also. Great script and thank you for your help.
        John

        1. Good. Time to investigate further then
          When I get back off holiday and into the UK and in front of a PI, perhaps Antonio and I will do a little experimenting. Thank you for that.

  116. My Walk through of node red install with the script.(Headless).

    1. Wipe and format sd card. Ease partition master seems to work better than SD Formatter.
    2. Write raspbian image to card. Win32Disk Imager still works for me.
    3. Before putting card in raspberry open it up in windows explorer, and in the root directory make a new blank text document and save it as ‘ssh’ (without quotes). This will enable SSH on boot. No need for Keyboard & Monitor !!!
    4. Put card in Pi, connect wired network and power. Wait for it to boot.
    5. Check router to see what IP address is.
    6. SSH into it (I use Putty) Logon = pi, password = raspberry.
    7. Check file system (you used to have to expand it to use all the card, but recently seems to be already expanded. df –h
    8. sudo raspi-config and enable ssh, I2c and serial and disable serial console – others may have different requirements.
    9. sudo nano /etc/ssh/sshd_config and Change #PermitRootLogin prohibit-password to PermitRootLogin yes (uncomment!) save and exit.
    10. Restart sshd service using: /etc/init.d/ssh restart or sudo reboot
    11. Set a root password if there isn’t one already: sudo passwd root
    12. Now you can Log in as root.
    13. Get the script wget –no-check-certificatehttps://bitbucket.org/api/2.0/snippets/scargill/ekon6o/master/files/script.sh
    14. And then bash script.sh
    15. Script will start, and after a few seconds will ask you to log out as root and log in as pi, then bash script.sh Again.
    16. It will ask you to change user password, admin password then Pi password and root password.
    17. Then you get the options menu, select what you want then GO!………wait . (pi3 Model B with all options about 35 -40 mins).
    This method has always worked for me, but now i can’t load new nodes via pallet, got somthing to do with permissions of bcryptjs being root.

    1. Pretty much how I do it but once I got a working setup a while ago I started cloning from rpi-clone backups so I can’t comment on new bcrypt issues.

  117. Now reloading again, going to leave bcryptjs alone and try loading new nodes from command line in putty. also going mad!!!!!!!!!!! I have had the i2c-bus thing as well.

  118. Thanks peter, yes. I have installed a new copy of stretch on the pi, updated the system and ran the script – once as root as mentioned in the script which takes me in to the user pi than run the script again as pi. Also tried just running it again on a fresh system from the pi user and get same results. All goes well until I try and install the node-red-contrib-simple-gate node (which always fails) with the above messages. I am now reinstalling everything fresh again and will try the node install and report what happens.

    Actually, I have spent too much time on this and I cheated. I put the problem node installations in the script and ran it again and they installed ok.

    Node-red-node-email is a problem as it gets installed globally and cannot be updated from the palette, so needs to un-installed and reinstalled again. Have done this successfully before but with the new install I now get the following when I try and reinstall email node:

    npm i node-red-node-email
    npm WARN deprecated mimelib@0.3.1: This project is unmaintained
    npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/bcryptjs
    npm ERR! path /home/pi/.node-red/node_modules/bcryptjs
    npm ERR! code EACCES
    npm ERR! errno -13
    npm ERR! syscall access
    npm ERR! Error: EACCES: permission denied, access ‘/home/pi/.node-red/node_modules/bcryptjs’
    npm ERR! { Error: EACCES: permission denied, access ‘/home/pi/.node-red/node_modules/bcryptjs’
    npm ERR! stack: ‘Error: EACCES: permission denied, access \’/home/pi/.node-red/node_modules/bcryptjs\”,
    npm ERR! errno: -13,
    npm ERR! code: ‘EACCES’,
    npm ERR! syscall: ‘access’,
    npm ERR! path: ‘/home/pi/.node-red/node_modules/bcryptjs’ }
    npm ERR!
    npm ERR! The operation was rejected by your operating system.
    npm ERR! It is likely you do not have the permissions to access this file as the current user
    npm ERR!
    npm ERR! If you believe this might be a permissions issue, please double-check the
    npm ERR! permissions of the file and its containing directories, or try running
    npm ERR! the command again as root/Administrator (though this is not recommended)

    For some reasons after playing with all of this for the past month or so I always seem to get in to situations where there are permission problems installing or updating nodes. Tried running from sudo on occasion and that only created worse problems. Somewhat frustrated by it all although I do really like your script, and I dont know what the cause of these problems are.

    1. Have you tried with rasp jessie ? i have that on my main controller with node red v0.17. 7 and it has been running for over a year,maybe two, with no problems. Lately i have been experimenting a lot and i am scared of breaking my main node red pi, as another pi is a lot cheaper than a divorce, i am trying to get running the script for test purposes.

  119. All reloaded, node red running but bcryptjs is still root. tried mr sharks:- sudo chown -R pi.pi ~/.node-red/node_modules, installed nodes ok, reboot, Broken!
    re load try again tonight.

  120. I’m having similar problem. Pi3 model B. after running script all seem ok, until you try to install extra nodes. after looking at the log file it is a permission problem with file /home/pi/.node-red/node_modules/bcrypt. when you look at it in winSCP you can see that its owner is ‘root’, (all other stuff in there is ‘pi’. So using putty as user ‘pi’ as i cant get into root (access denied) i did a sudo chown on that file to pi. i then went back to node red and tried installing again. it worked!! i installed another brilliant!! feeling very pleased with myself i went off to bed. Came back to it this evening and all seemed ok, Until i rebooted. node red no longer starts! I thought no problem i will just change the permissions back to root, reboot and try something else. But All the files and folders have gone !! all that is in node_modules is the two nodes i added.
    P.S. when i run the script it says must be run as root the only way i can get to user root is sudo su. could this be relavent?
    Anyone Help ???
    many thanks Chris.

  121. I have installed the script a few times on different RPis and even with a new installation with just stretch installed and the script, i get errors when i try and install a node. Get file permission issues. Here;s an example trying to install node-red-contrib-simple-gate: (on a new installation on stretch and the script only).
    “Installation of module node-red-contrib-simple-gate failed:”
    npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/bcryptjs
    npm ERR! path /home/pi/.node-red/node_modules/bcryptjs
    npm ERR! code EACCES
    npm ERR! errno -13
    npm ERR! syscall access
    npm ERR! Error: EACCES: permission denied, access ‘/home/pi/.node-red/node_modules/bcryptjs’
    npm ERR! { Error: EACCES: permission denied, access ‘/home/pi/.node-red/node_modules/bcryptjs’
    npm ERR! stack: ‘Error: EACCES: permission denied, access \’/home/pi/.node-red/node_modules/bcryptjs\”,
    npm ERR! errno: -13,
    npm ERR! code: ‘EACCES’,
    npm ERR! syscall: ‘access’,
    npm ERR! path: ‘/home/pi/.node-red/node_modules/bcryptjs’ }
    npm ERR!
    npm ERR! The operation was rejected by your operating system.
    npm ERR! It is likely you do not have the permissions to access this file as the current user
    npm ERR!
    npm ERR! If you believe this might be a permissions issue, please double-check the
    npm ERR! permissions of the file and its containing directories, or try running
    npm ERR! the …

  122. Hi Nicolass, I had the same problem running ‘the script’ on a dual boot PC using ubuntu 16.04. I found some information on the net about the npm issue, unfortunately I didn’t make a note of the source. Basically I installed npm manually and then selectively ran just the part of the script to load the node-RED nodes. Well that’s as much as I recall. Once done all the other stuff ‘the script’ installs runs beautifully.
    Dr Fraggle and Mr Shark is the real expert on the Linux stuff and he may be able to provide far assistance than I can.

  123. The work here is awesome. Thank you so very much. It looks like the script will not install under an amd64/x86 distro of linux. I have tried ubuntu 16.04 (I have two machines running it now on ubuntu 16.04), mint linux, raspberry pi desktop, and a couple other debian variants. The issue I have is the npm does not get installed — claims missing dependencies. The script works fine on rpi with noobs/rasbian. Any advice?

    Thank you again

  124. Hi, 2 times i insalled the script bu node-red flow control page not showing right. It has kinda CSS or design error. Any advise?

  125. Hi All. I’ve been happily running my ubuntu 16.04 server that I loaded the script on for >18 months. Mosquitto/MQTT has been performing flawlessly. For a separate reason I happened to check the version of mosquitto broker and noticed mine is on version 1.4.8 but when checking the mosquitto.org changelog am seeing that its quite a few releases behind. I scanned this thread for any details about version and noticed a few comments but am not clear if I can upgrade to the newest version without creating some issues. I noticed some comments about websockets and also noticed that in the script the Debian repo is where mosquitto is installed from. Unfortunately i’m not as proficient in understanding all the nuances but do you think its risky to upgrade?

    Of course part of me is thinking, if it aint broke don’t fix it, but I would generally like to get to the latest version if it makes sense.

    Many thanks.

    1. I’ve not deliberately upgraded Mosquitto in a long time – it may be it gets upgraded in apt-get update/upgrades but I’m not sure. Just make sure you backup before experimenting.

      Actually I have v 1.4.10 build date fri 27th 2017 apparently. It works perfectly.

  126. just to inform you that some nodes started to REQUIRE node v8 to operate, so problems are on the horizon, as we never found that v8 is very reliable or easy installable on our SBCs…

    here the node that i had to remove from my flows, this morning… the EMAIL one… which for sure is NOT one of the less useful, so it’s a real problem…

    [node-red-node-email/email] Error : Requires nodejs version >= 8.

    if using Peter’s script, you’ll find these info in a prompt writing “nrlog”, just after a node update and following node-red restart

  127. Hi again.

    for your information:
    I installed a new VM in VBox using an Ubuntu Server 16.04.05 Xenial and ran script

    I got quite similar npm error.
    Current test environment is:
    VBox: 5.2.12
    Host OS: Win 8.1
    Guest OS: Ubuntu server 16.04.05
    uname-a: Linux prueba3 4.4.0-131-generic #157-Ubuntu SMP Thu Jul 12 15:51:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    Script version: None. Contains “..20/08/2018 Fixed Java ..”
    Source: wget –no-check-certificate https://bitbucket.org/api/2.0/snippets/scargill/ekon6o/master/files/script.sh

    BR

    1. i’m trying your same setup (only difference: in vmware instead of virtualbox, but this is ininfluent), and i’m having problems downloading packages from ubuntu repositories today (those errors 400 in following transcript)… so maybe is your same problem… retry in a few days, or try debian stretch instead… it’s a repository problem, not related to script…

      78 aggiornati, 4 installati, 0 da rimuovere e 0 non aggiornati.
      È necessario scaricare 16,0 MB/155 MB di archivi.
      Dopo quest’operazione, verranno occupati 304 MB di spazio su disco.
      Continuare? [S/n]
      Scaricamento di:1 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 bsdutils amd64 1:2.27.1-6ubuntu3.6 [51,2 kB]
      Err:2 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 mount amd64 2.27.1-6ubuntu3.6
      400 Bad Request [IP: 90.147.160.69 80]
      Scaricamento di:3 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libblkid1 amd64 2.27.1-6ubuntu3.6 [107 kB]
      Scaricamento di:4 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpam-systemd amd64 229-4ubuntu21.5 [115 kB]
      Scaricamento di:5 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 udev amd64 229-4ubuntu21.5 [993 kB]
      Scaricamento di:6 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 initramfs-tools-bin amd64 0.122ubuntu8.13 [9.742 B]
      Scaricamento di:7 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 systemd-sysv amd64 229-4ubuntu21.5 [11,7 kB]
      Scaricamento di:8 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libmount1 amd64 2.27.1-6ubuntu3.6 [114 kB]
      Scaricamento di:9 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 uuid-runtime amd64 2.27.1-6ubuntu3.6 [25,9 kB]
      Scaricamento di:10 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 open-iscsi amd64 2.0.873+git0.3b4b4500-14ubuntu3.6 [334 kB]
      Scaricamento di:11 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 ubuntu-core-launcher amd64 2.34.2 [1.560 B]
      Scaricamento di:12 http://it.archive.ubuntu.com/ubuntu xenial-updates/main amd64 snapd amd64 2.34.2 [14,2 MB]
      Recuperati 15,9 MB in 16s (953 kB/s)
      E: Impossibile recuperare http://it.archive.ubuntu.com/ubuntu/pool/main/u/util-linux/mount_2.27.1-6ubuntu3.6_amd64.deb 400 Bad Request [IP: 90.147.160.69 80]

      E: Impossibile scaricare alcuni pacchetti. Potrebbe essere utile eseguire “apt-get update” o provare l’opzione “–fix-missing”.

      1. Tante grazie for checking that.

        I m going to retry during weekend. Hope to get it working.
        Also, I am going to try to setup just one CPU instead of multiple as I am normally using.

        BR.

  128. Hi Pete & friends,

    I am having issues with the-script running it in a fresh DietPi copy in a new virtualBox VM (DietPi_VirtualBox-x86_64-Stretch).

    I got some messages that npm is not available such as:

    Installing Node-Red
    sudo: npm: command not found

    Quite strange because in same log I can read:

    /usr/lib
    └─┬ npm@6.4.1

    I found that there is an issue with /usr/bin/npm symbolic link.
    I could fixed it, but have to reinstall Nore-Red to get a “cleaner” installation.
    But I am not quite sure if installation is really finished.

    Have you got same issue with npm?

    such in case, full log is in: https://pastebin.com/bEd3EAvq

    BR,

    Sergio.

    1. use armbian, problem solved… i’m tired to fix other people weird choices… i’m not against you, to be clear, but unfortunately, dietpi people tend to do too much alterations from version to version, i’ve seen that from time to time they suggest to start fresh and not upgrade… that’s a big no-no for me… so, i use dietpi rarely recently, and go for straight armbian xenial or stretch… if you want to use dietpi, then better stick at their own package management…

      1. Hi,

        Many thanks for your answer, I did not know that DietPi was so untidy.

        in my case as DietPi VM was mentioned as a platform that has been tested sometime ago, I was sharing the issue, debugging and work-around done.

        DietPi VM gives me a light and quick start base environment to run this Script, which is great to keep complete installations in a totally controlled manner , allowing me to make some NR tunning/tests without touching production setup and even not being at home, but I am taking your suggestion for the Pi install 🙂

        Best regards,

        Sergio.

  129. Hi folks.

    I have been told to get my system as Peter’s so I can run his flows and see what they are like on MY machine.

    To do this I believe I have to run the script mentioned way up near the top of this.

    (for clarity)
    wget –no-check-certificate https://bitbucket.org/api/2.0/snippets/scargill/ekon6o/master/files/script.sh

    Ok.
    There are things in there about if it is running on a PI. Though I have a lot of Pi’s, for now I want to get it working on a bigger machine.
    (x86 NUC)

    So I have the script.
    Reading it…. yeah, ok. A bit above me.
    I am running/installing the stuff on a VM running Ubuntu. Not Raspbian, and there is no PI user.

    Reading in the script I see:
    IMPORTANT:-
    ## 1. Run ONLY as ROOT (or PI user on Raspberry Pi). If ROOT, PI user will be checked/created for you as the main
    ## script must be run as pi.
    ## User PI must be in the SUDO group. Other groups are added by the script.

    Then a few lines down I see:
    6. Do not access this script as SUDO.

    I’m lost.

    And if I am not installing it on a PI, I am at a loss how to do it.

    I am trying to get Peter’s “base line” of what he has installed, so I can see what the stuff looks like, but am just not “getting it” with the instructions as they are.

    Thanks in advance.

    1. when i use an ubuntu vm for this stuff, i always create a “pi” user just during setup, so it’s already there when i run the script… as script was originally meant for raspberry, default user “pi”, it works ONLY with that user, unfortunately…

      otherwise, do as such if you already installed and have a different user:

      sudo -s -H
      # give YOUR ACTUAL USER password at step above… after that, you ARE root

      # start from here running the usual setup
      cd && wget –no-check-certificate https://bitbucket.org/api/2.0/snippets/scargill/ekon6o/master/files/script.sh
      bash script.sh

      # after it created the user pi, logout and login with that user, or do:
      su – pi
      bash script.sh

      or just reinstall ubuntu creating a pi user during setup, as i said… DON’T use ubuntu 18.04, only 16.04 is supported…

      1. Thanks.

        16.04…………..

        Drats.

        I started with 17.01 when I got the NUC.

        I know it isn’t too difficult to get the older version.

        Ok, that is a whole new can of worms with which to deal.

        I don’t get why 18.04 isn’t “supported”? You mean for the build on which it is built?

        1. it isn’t supported by Peter’s script, as none of the sbc has something different from debian stretch or ubuntu xenial, so why adapting the script to something that very few will use?

          You can use it on newer ubuntu, but you’re on your own with all the problems you’ll find, don’t ask for help… i don’t plan to port it on 18.04 in the near future, or ever… because i see docker as the future of this…

          and when my docker setup will be usable, there will be no differences as containers ignore the underlying OS, so you’ll be able to run docker on 18.04, too…

  130. God that was quick, all working now

    thanks a lot.

    I have spent all day setting up and reading the comments etc
    for latest script- This was the only problem I encountered by installation

    regards from sunny Germa