Git Product home page Git Product logo

janvda / balena-node-red-mqtt-nginx-tig-stack Goto Github PK

View Code? Open in Web Editor NEW
58.0 10.0 43.0 767 KB

Composite docker application with "8" containers (2x Node-RED, 2x MQTT broker, Telegraf, InfluxDb, Grafana, Nginx) for deployment on Raspberry Pi through Balena.

License: Eclipse Public License 2.0

Dockerfile 9.95% Shell 2.34% JavaScript 87.71%
balena node-red balenacloud raspberry-pi mqtt-broker telegraf influxdb grafana-dashboards tig

balena-node-red-mqtt-nginx-tig-stack's People

Contributors

janvda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

balena-node-red-mqtt-nginx-tig-stack's Issues

Node-RED readonly

When I want to change backlight of RPi display, it trhrows:
Error: EROFS: read-only file system, open '/sys/class/backlight/rpi_backlight/bl_power

Is there a way to do this on readonly FS or how do I change the FS to writable?

Thank you in advance.

mounting USB memory stick in influxdb container didn't work.

Using the command df``in the influxdb container I have noticed that the USB drive is not mounted. I tried to manually mount it using the command mount \mnt\usbdrivebut it reported following error:root@98d476aa8909:/# mount /mnt/usbdrive
mount: /dev/sda1 is already mounted or /mnt/usbdrive busy
root@98d476aa8909:/#`

The problem is most likely caused due to the fact that same device (/dev/sda1 = my USB memory stick) is already mounted in the telegraf container and apparently you can not mount the same device twice.

Influxdb stuck in start loop

The symptoms are similar to what @janvda experienced here however, the ports are in the right order.

I've followed the steps to the point, I'm not using a USB drive and I'm running it on a RPi3

I've experienced the same issues with other builds involving influxdb. I have no idea where to start, as I'm really new to balena and have very limited experience with influxdb.

Amonst the errors presented, I found these as somewhat noteworthy;

May 22 10:47:57 3fc71e2 balenad[795]: /usr/bin/entry.sh: line 29: /etc/hostname: Permission denied
May 22 10:47:57 3fc71e2 balenad[795]: /usr/bin/entry.sh: line 30: /etc/hosts: Permission denied
May 22 10:47:57 3fc71e2 balenad[795]: hostname: you must be root to change the host name
May 22 10:47:57 3fc71e2 balenad[795]: mount: only root can use "--types" option
May 22 10:47:57 3fc71e2 balenad[795]: mount: only root can use "--move" option
May 22 10:47:57 3fc71e2 balenad[795]: mount: only root can use "--move" option
May 22 10:47:57 3fc71e2 balenad[795]: mount: only root can use "--move" option
May 22 10:47:57 3fc71e2 balenad[795]: time="2019-05-22T10:47:57.174124190Z" level=warning msg="unknown container" container=49c6f30a0d49f00bbe9546ce4b64194fe5c4828165174431a22721f33cb55699 module=libcontainerd namespace=plugins.moby
May 22 10:47:57 3fc71e2 balenad[795]: mount: only root can use "--move" option
May 22 10:47:57 3fc71e2 balenad[795]: umount: /dev: umount failed: Operation not permitted
May 22 10:47:57 3fc71e2 balenad[795]: mount: only root can use "--move" option
May 22 10:47:57 3fc71e2 balenad[795]: ln: cannot remove ‘/dev/ptmx’: Permission denied
May 22 10:47:57 3fc71e2 balenad[795]: mount: only root can use "--types" option
May 22 10:47:57 3fc71e2 balenad[795]: /sbin/udevd
May 22 10:47:57 3fc71e2 balenad[795]: mount: can't find LABEL=influxdb
May 22 10:47:57 3fc71e2 balenad[795]: Event: Service started {"service":{"appId":1465407,"serviceId":263421,"serviceName":"node-red","releaseId":929996}}
May 22 10:47:57 3fc71e2 balenad[795]: Event: Service started {"service":{"appId":1465407,"serviceId":262989,"serviceName":"influxdb","releaseId":929996}}
May 22 10:47:58 3fc71e2 balenad[795]: Warning: Ignoring unsupported or unknown compose fields: containerName

problems when redeploying node-red services with latest docker image.

There is currently an issue with latest nodered/node-red-docker:rpi-v8 docker image which might give problems.

This problem typically appears when you have recently redeployed this application because the balena build machine will detect that there is new build version available and build against that version.

Moreover when going back to previous version = nodered/node-red-docker:0.20.7-rpi-v8 you might encounter issues when using latest node-red-dashboard version.
For more information see https://discourse.nodered.org/t/node-red-dashboard-ui-button-syntaxerror-unexpected-token/15844 (it also mentions a solution).

docker container dashboard shows the same container with different container_names

The problem is that when a container becomes restarted it gets each a container_name (in fact the suffix of the container is different).
FYI an example of the container_name of the influxdb container influxdb_643150_676670

This is a problem for the docker containers grafana dashboard as it is based on the container_name which means that it considers a restarted container or redeployed container as a new container.

One solution would be to assure that the container_name doesn't change during restarts, but I have tried using the container_name field in the docker compose yaml without success.

system metrics dashboard reports an average user CPU usage of 35%

When checking the CPU usage in the system metrics dashboard, you can see that it reports an average user CPU usage of 35% is reported although besides the telegraf monitoring there is not much running.

This problem got introduced at 2018-11-23 somewhere between 22:26 and 22:31.
Most likely this is the period when we enabled docker monitoring.

node-red install error: sudo: no tty present and no askpass program specified

I am receiving the following errors from node-red and node-red-test installation scripts

[node-red-test]  sudo: no tty present and no askpass program specified
[mqtt]           [=========================================================] 100[node-red-test]
[mqtt]           [=========================================================] 100[node-red]       Removing intermediate container c3783464b4e2
[mqtt]           [=========================================================] 100[node-red]       The command '/bin/sh -c sudo npm install -g --unsafe-perm node-red-admin' returned a non-zero code: 1
[mqtt]           [=========================================================] 100[node-red-test]  Removing intermediate container 5dd7c9e2425b
[mqtt]           [=========================================================] 100[node-red-test]  The command '/bin/sh -c sudo npm install -g --unsafe-perm node-red-admin' returned a non-zero code: 1

make location where influxdb data is stored configurable.

Currently the composite docker application assumes that a USB memory stick with label influxdb in ext4 format is connected to the raspberry pi.

The idea is to make this more configurable so that it also works when we don't have a USB memory stick.
The objective is still that the data should not be lost when restarting the influxdb container.

Missing "$" in telegraf.conf

I believe that there is a missing "$" in the telegraf.conf file on line 53.

flush_interval = "flush_interval"

It seems it should be
flush_interval = "$flush_interval"

I discovered this when I had been using a fork from your project and then pulled in your changes. The build no longer started Telegraf properly. I added the $ and it started working perfectly again.

BTW - this is incredibly amazing!!!!!

Not able to secure node-red editors - node-red-admin module not installed

Tried to secure both node-red UIs but so far no luck. Looking at node-red website instructions and using their suggestion to use:
node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" your-password-here, but that didn't work (password apparently is not updated).
Attempted to use node-red-admin module, but found out that it is not installed. I am investigating this issue, will report back findings. BTW, great work! I am planning to use this in a project I am working on, thanks!

move the influxdb data to an external drive (connected via USB)

Currently all the influxdb data is written to a "named volume". This means that we have the advantage that the data is not lost when the application becomes redeployed but it also means that the data is still written to the SD card. I don't think it is a good practice to do a lot of writing to an SD card. This increases the risk that the SD card got corrupted. So instead of writing the influxdb data to an SD card, I think it is better to write this to an external drive that is connected to the USB port of the raspberry pi.

"502 Bad Gateway" or "Cannot GET /node-red-test/"

Sometimes we can no longer access the Grafana user interface or the Node-RED editor through the public device URL after a deployment (git push resin master). In that case we get a 502 Bad Gateway or Cannot GET /node-red-test/

Note that in most cases this error can be fixed by restarting the nginx container !

how do you send data to the two mosquitto broker ??

hello
i have a web server that have nginx and 2 docker-compose that have each 1mqqt 1 grafana 1 node red
i want to know how did you manage mqtt sub and hub i cant send data to any mqtt broker from the outside any idea

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.