Here is the Docker image: delogzway/gladys:nodered ![]()
Here is my feedback…
When you click on the node-red integration, you get this:
So, it’s already enabled?
It seems not, because the interface is inaccessible… However:
2023-06-29T18:09:51+0200 \u003cinfo\u003e checkForContainerUpdates.js:13 (NodeRedManager.checkForContainerUpdates) NodeRed: Checking for current installed versions and required updates...
2023-06-29T18:09:52+0200 \u003cinfo\u003e configureContainer.js:16 (NodeRedManager.configureContainer) NodeRed: Docker container is being configured...
2023-06-29T18:09:52+0200 \u003cinfo\u003e configureContainer.js:28 (NodeRedManager.configureContainer) NodeRed: configuration file already exists.
2023-06-29T18:09:52+0200 \u003cinfo\u003e configureContainer.js:56 (NodeRedManager.configureContainer) NodeRed: Writting configuration...
2023-06-29T18:09:52+0200 \u003cinfo\u003e installContainer.js:74 (NodeRedManager.installContainer) NodeRed: container is (re)starting...
2023-06-29T18:09:59+0200 \u003cinfo\u003e installContainer.js:80 (NodeRedManager.installContainer) NodeRed: container successfully started
The reason:
pi@Nichoir2:~ $ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0774902bc529 eclipse-mosquitto:2 \"/docker-entrypoint.…\" 23 minutes ago Up 22 minutes eclipse-mosquitto
319910e8396c nodered/node-red:latest \"./entrypoint.sh\" 23 minutes ago Restarting (0) 12 seconds ago gladys-node-red
0f828507d957 delogzway/gladys:nodered \"docker-entrypoint.s…\" 30 minutes ago Up 30 minutes gladys
29 Jun 16:18:50 - [error] Failed to start server:
29 Jun 16:18:50 - [error] Error: EACCES: permission denied, mkdir '/data/node_modules'
29 Jun 16:19:57 - [error] Failed to start server:
29 Jun 16:19:58 - [error] Error: EACCES: permission denied, mkdir '/data/node_modules'
29 Jun 16:21:06 - [error] Failed to start server:
29 Jun 16:21:06 - [error] Error: EACCES: permission denied, mkdir '/data/node_modules'
Also, the suggested link [localhost:1881] shouldn’t that rather be an IP address?
Finally, when you disable the container via Gladys, it is not destroyed (unlike z2m)
@GBoulvin Thank you for the feedback, I’ll look into this quickly.
@GBoulvin I just updated the Docker image. Let me know if that solved your problems ![]()
Oh no, I forgot about that. Thanks for the reminder. I’ll get to it tonight!
There you go, I did my homework ![]()
First launch, OK
Small typo in the explanatory sentence: ‹ Activez › (rather than ‹ Activer ›, it’s more consistent) and there’s a missing period at the end.
After clicking on ‹ Activer › :
On slower machines, activation can take up to five minutes (tested on RPi2 here). Maybe it would be useful to mention that?
After a few minutes, the page refreshes but the fields are empty :
Small typo: ‹ Désactiver › is missing an accent
After a manual refresh :
Unfortunately, although Gladys’ log says this (and the nice green V) :
2023-08-19T10:39:25+0200 \u003cinfo\u003e installContainer.js:49 (NodeRedManager.installContainer) Nodered: Preparing environment...
2023-08-19T10:39:25+0200 \u003cinfo\u003e configureContainer.js:16 (NodeRedManager.configureContainer) NodeRed: Docker container is being configured...
2023-08-19T10:39:25+0200 \u003cinfo\u003e configureContainer.js:31 (NodeRedManager.configureContainer) NodeRed: Writing default configuration...
2023-08-19T10:39:25+0200 \u003cinfo\u003e installContainer.js:52 (NodeRedManager.installContainer) Creation of container...
2023-08-19T10:39:41+0200 \u003cinfo\u003e installContainer.js:57 (NodeRedManager.installContainer) NodeRed: successfully installed and configured as Docker container
2023-08-19T10:39:41+0200 \u003cinfo\u003e configureContainer.js:16 (NodeRedManager.configureContainer) NodeRed: Docker container is being configured...
2023-08-19T10:39:41+0200 \u003cinfo\u003e configureContainer.js:29 (NodeRedManager.configureContainer) NodeRed: configuration file already exists.
2023-08-19T10:39:41+0200 \u003cinfo\u003e installContainer.js:80 (NodeRedManager.installContainer) NodeRed: container is (re)starting...
2023-08-19T10:39:54+0200 \u003cinfo\u003e installContainer.js:86 (NodeRedManager.installContainer) NodeRed: container successfully started
No access because the container restarts in a loop :
19 Aug 08:44:02 - [error] Failed to start server:
19 Aug 08:44:02 - [error] Error: EACCES: permission denied, mkdir '/data/node_modules'
When we disable the container, it exits (not destroyed) :
pi@Nichoir2:~ $ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5fbbcc3f1e7a nodered/node-red:latest "./entrypoint.sh" 17 minutes ago Exited (0) 8 seconds ago gladys-node-red
2231a7247078 delogzway/gladys:nodered "docker-entrypoint.s…" 24 minutes ago Up 24 minutes gladys
It’s almost right!
One last thing:
For the sake of consistency, wouldn’t it be better to use the same button as in Z2M and MQTT ?

Thanks for the test @GBoulvin !
In this case, the « toggle » in these integrations is a mistake in my opinion; it’s going to change in upcoming versions of Gladys so there’s no need to use a toggle.
The toggle is suitable for « short » actions (like on → off of a lamp), but for an action that can potentially last 20 minutes, it’s horrible for the user because they think they can do « on/off » to start over
Thanks for the feedback @GBoulvin.
I’ll look into why you’re getting this error.
I’ll also fix the typos here and there ![]()
@GBoulvin : I found the problem. A stupid little thing like the folder permissions on the host machine ![]()
I’m building a new Docker image, it will be ready in an hour. Would you be able to re-test on your side?
Tested and approved !
Simple and concise!
One remark/question :
If you disable the container in the integration, it is not deleted but stopped. After a restart, the node-red container is enabled again (even if then inaccessible from the integration)
Not sure I’m being very clear but I meant that if you disable the container and then restart the Pi, both containers are relaunched, even if the integration in Gladys says otherwise…
One last thing but I don’t know if you can do anything. It’s the mobile display that’s not great when it comes to the enable/disable button :
Great work in any case!
Thank youuuuuu ![]()
I just fixed it, I now remove the container after stopping it
I just fixed that too. Now the button is not on the second line:
Thank you very much for your feedback and your tests ![]()
I’ve just released a new Docker image with the latest changes
@Lokkye Great job ![]()
Can you move the « Disable » button and make it red? I don’t find it very visible to put a button in an announcement banner.
I’d put the button at the bottom of the page:
I confirm, perfectly functional.
Button moved as you
Here is the result with the button moved
I rebuilt a Docker image with the changes ![]()
Thanks for the changes @Lokkye! ![]()
It’s better but I have a few comments/questions:
- Why display « état du service node-red » when Node-RED is not enabled?
- If the user is not running under Docker or has a configuration that doesn’t allow launching a container, is there a specific message with the « activer » button unclickable?
- The « Activer » and « Désactiver » buttons might be better on the left, no?
- How is the Node-RED interface URL calculated? You should specify that this URL is only accessible locally. (notably to avoid confusion via Gladys Plus)
- For the « Désactiver » button, is there a confirmation before disabling? To avoid destroying everything on a misclick

That’s all from me, small UX details but in my view they all matter ![]()
Great feature.
I’m interested but don’t have the integration in Gladys.
Is there a « standard » procedure to install this integration?
Thanks.
For the moment it’s in development, given the progress I think it shouldn’t be long before it arrives in an upcoming version ![]()
If you’re in a hurry you can also install Node-RED yourself alongside Gladys, that’s what many people have done! (with this tutorial as a bonus: Nouvelle vidéo: Intégrer Node-RED avec Gladys Assistant en MQTT!)
It’s hidden now
Yes
It’s done ![]()
It is based on « config.localApiUrl » plus the port returned by the API
It’s done ![]()
You are completely right
As usual, I released a new Docker image ![]()
Thanks for all the changes ![]()
I tried to run an end-to-end test but I had a few small issues.
At first, I tried to start the container but I had no disk space left on my test VM
(this isn’t related to the PR — at least it was an opportunity to test the error message)
(By the way, small typo on « serveur »)
I found the behavior of the « Disable » a bit strange; it jumps from left to right:
Then I freed up my disk and Node-RED started fine:
(Small design remark on the screenshot)
But if I try to connect to Node-RED, I get an error:
Looking at the logs:
2023-09-08T10:36:31+0200 \u003cinfo\u003e checkForContainerUpdates.js:13 (NodeRedManager.checkForContainerUpdates) NodeRed: Checking for current installed versions and required updates...
2023-09-08T10:36:31+0200 \u003cinfo\u003e checkForContainerUpdates.js:17 (NodeRedManager.checkForContainerUpdates) NodeRed: update #2 of the container required...
2023-09-08T10:36:31+0200 \u003cinfo\u003e checkForContainerUpdates.js:34 (NodeRedManager.checkForContainerUpdates) NodeRed: update #2 of the container done
2023-09-08T10:36:31+0200 \u003cinfo\u003e installContainer.js:44 (NodeRedManager.installContainer) Nodered: is being installed as Docker container...
2023-09-08T10:36:31+0200 \u003cinfo\u003e installContainer.js:45 (NodeRedManager.installContainer) Pulling nodered/node-red:latest image...
2023-09-08T10:36:56+0200 \u003cinfo\u003e installContainer.js:49 (NodeRedManager.installContainer) Nodered: Preparing environment...
2023-09-08T10:36:56+0200 \u003cinfo\u003e configureContainer.js:16 (NodeRedManager.configureContainer) NodeRed: Docker container is being configured...
2023-09-08T10:36:56+0200 \u003cinfo\u003e configureContainer.js:34 (NodeRedManager.configureContainer) NodeRed: configuration file already exists.
2023-09-08T10:36:56+0200 \u003cinfo\u003e installContainer.js:52 (NodeRedManager.installContainer) Creation of container...
2023-09-08T10:36:56+0200 \u003cinfo\u003e installContainer.js:57 (NodeRedManager.installContainer) NodeRed: successfully installed and configured as Docker container
2023-09-08T10:36:56+0200 \u003cinfo\u003e configureContainer.js:16 (NodeRedManager.configureContainer) NodeRed: Docker container is being configured...
2023-09-08T10:36:56+0200 \u003cinfo\u003e configureContainer.js:34 (NodeRedManager.configureContainer) NodeRed: configuration file already exists.
2023-09-08T10:36:56+0200 \u003cinfo\u003e installContainer.js:80 (NodeRedManager.installContainer) NodeRed: container is (re)starting...
2023-09-08T10:37:01+0200 \u003cinfo\u003e installContainer.js:86 (NodeRedManager.installContainer) NodeRed: container successfully started
I suppose that means the configuration file is still the old one!
So, if I’ve already configured Node-RED once, I’m stuck (I think the old password is still in the file). When testing the hash against the password, it’s indeed not the same password. Do you delete the folder /var/lib/gladysassistant/node-red if the user decides to delete the Node-RED integration?
Regarding translations, I have some feedback:
- « server » → « serveur » in French
- The name « Node-RED » should be standardized in the integration. The official name is « Node-RED », but there are multiple casings in the UI (Node-red, NodeRed).
- For the documentation link, can you put « node-red » in lowercase? There’s mixed case there.
Another more general question: shouldn’t we pin the Node-RED version? (At least a major or minor version)
I’m afraid we might end up with the same bugs we had with Mosquitto where, in the middle of the summer, a bad version was pushed on their side and it broke everything for Gladys users.
I know we don’t do that for Zigbee2mqtt, but Node-RED tends to be quite « aggressive » with updates and often, from what I read on the forum, updates break everything.
For example, we could use the tag:
nodered/node-red:3.1
For updates, we could do them manually in the code, running tests before changing.
What do you think?
Thanks anyway for the integration and all the work, it’s a really great job
![]()


















