Node RED works but when I added revpi nodes (https://flows.nodered.org/node/node-red-contrib-revpi-nodes) and then tried to install the required package apt-get install noderedrevpinodes-server, the build fails because the package isn’t found.
Do you maybe have an idea what’s causing the problem?
It looks like the noderedrevpinodes-server repo (https://github.com/erminas/noderedrevpinodes-server) has an alternate installation method you could try using wget. However, it is Python-based so you may want to consider putting this in its own container with a base image that favors Python rather than the Node Red container which has Node components. There are probably other dependencies you’ll need to install to get it to work. You will also need to make the container privileged in docker-compose to access the GPIO.
Thank you for your answer!
I was able to load the package but the installation fails because it cannot find the package python3-revpimodio2.
I tried building it with the image balenalib/revpi-core-3-python:3.5-stretch-build with apt-get install and pip install but then it’s either Unable to locate package python3-revpimodio2 or No matching distribution found for python3-revpimodio2. Do I need to use a different image?
I installed python3-rvpimodio manually and now it says noderedrevpinodes-server depends on nodered (>= 0.2); however: Package nodered is not installed.… inside the container where I install node-RED?
# Build step
FROM balenalib/%%BALENA_MACHINE_NAME%%-debian-node:12-stretch-build as build
RUN JOBS=MAX npm install -g --production --unsafe-perm \
node-red \
node-red-admin \
node-red-contrib-balena \
node-red-dashboard \
node-red-contrib-revpi-nodes
# Runtime image
FROM balenalib/%%BALENA_MACHINE_NAME%%-debian-node:12-stretch-run
RUN apt-get update && apt-get install -yq --no-install-recommends \
wget \
dpkg \
rpi.gpio \
python-dev \
python-rpi.gpio \
libatomic1 \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
# Defines our working directory in container
WORKDIR /usr/src/app
# Copy over the files created in the previous step, including lib/, bin/
COPY --from=build /usr/local/bin /usr/local/bin
COPY --from=build /usr/local/lib/node_modules /usr/local/lib/node_modules
RUN wget -P /nodeserver https://github.com/erminas/noderedrevpinodes-server/releases/download/1.0.1/noderedrevpinodes-server_1.0.1.deb
RUN wget -P /revpimodio http://revpimodio.org/dnl/python3-revpimodio2_2.5.3-1_all.deb
RUN dpkg -i /revpimodio/python3-revpimodio2_2.5.3-1_all.deb
RUN dpkg -i /nodeserver/noderedrevpinodes-server_1.0.1.deb
# This will copy all files in our root to the working directory in the container
COPY ./app ./
# server.js will run when container starts up on the device
CMD ["bash", "/usr/src/app/start.sh"]
It fails here: RUN dpkg -i /nodeserver/noderedrevpinodes-server_1.0.1.deb with this output
Just by taking a quick glance at it, I think that the issue is that you are installing node-red in the build step, but not on the runtime image. Can you try installing node-red there, and see if that makes a difference?
Hm, I think that the noderedrevpinodes-server_1.0.1.deb package lists the noderedDebian package as a dependency, and it can’t detect that Node RED is installed through npm (it expects it to be installed through a .deb through dpkg or apt).
Would it be possible to install node red through the official Debian repositories rather than through npm? If not, you can try passing the --force-depends option to dpkg -i to tell dpkg to install the package even if the dependencies are not satisfied (given that we know that Node RED was installed through another medium)
Okay so installing nodered via apt-get install worked to get noderedrevpinodes-server to install, but I can’t see and select any in- or output pins. Any ideas for that problem?
Hi there – I have not used nodered before, but I wonder if the problem with input/output pins is due to missing permissions in your application container. On the assumption that you’re deploying this with a docker-compose.yml file, can you try adding these lines and see if that makes a difference? You can read more about these flags here.
If that doesn’t work, or if I’ve misunderstood something, please let us know.
Is it possible that the standard noderedrevpinodes-server port 8000 is not working when I have another container running on port 8000?
I saw that you can change the server‘s port, but the path ~/.config/noderedrevpinodes-server/ does not exist.
If you have something else using port 8000, that could cause a conflict. Have you tried changing the noderedrevpinodes server’s port using the docker-compose ports: to something like - 8080:8000 (or some other port?) - it may be helpful to see your entire docker-compose at this point.