# Intégration Node-RED: Donner accès aux ports USB au container Docker

**URL:** <https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392>\
**Category:** Demandes livrées\
**Created:** [Janvier 27, 2025, 8:12 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392 "2025-01-27T08:12:03Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Janvier 27, 2025, 8:12 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/1 "2025-01-27T08:12:03Z")

</div>

Edit 20/02/2025 : Voilà une PR qui expose les ports USB au container Docker Node-RED. J’ai séparé cette discussion dans un autre sujet pour plus de clarté.

> <https://github.com/GladysAssistant/Gladys/pull/2213>
>
> \### Pull Request check-list
> 
> To ensure your Pull Request can be accepted as fa…st as possible, make sure to review and check all of these items:
> 
> \- \[\] If your changes affects code, did your write the tests?
> \- \[\] Are tests passing? (\`npm test\` on both front/server)
> \- \[\] Is the linter passing? (\`npm run eslint\` on both front/server)
> \- \[\] Did you run prettier? (\`npm run prettier\` on both front/server)
> \- \[\] If you are adding a new features/services, did you run integration comparator? (\`npm run compare-translations\` on front)
> \- \[\] Did you test this pull request in real life? With real devices? If this development is a big feature or a new service, we recommend that you provide a Docker image to the community (\[french forum\](https://community.gladysassistant.com/)/\[english forum\](https://en-community.gladysassistant.com/)) for testing before merging.
> \- \[\] If your changes modify the API (REST or Node.js), did you modify the API documentation? (Documentation is based on comments in code)
> \- \[\] If you are adding a new features/services which needs explanation, did you modify the user documentation? See \[the GitHub repo\](https://github.com/GladysAssistant/v4-website) and the \[website\](https://gladysassistant.com).
> \- \[\] Did you add fake requests data for the demo mode (\`front/src/config/demo.js\`) so that the demo website is working without a backend? (if needed) See \[https://demo.gladysassistant.com\](https://demo.gladysassistant.com).
> 
> NOTE: these things are not required to open a PR and can be done afterwards / while the PR is open.
> 
> \### Description of change
> 
> Node-RED : Expose USB ports

J’ai du modifier les tests unitaires, donc je pense qu’effectivement ta PR ne changeait pas le container lancé 😃

J’ai lancé un [build](https://github.com/GladysAssistant/Gladys/actions/runs/12984562745), qui devrait aboutir dans 50 minutes :

```auto
gladysassistant/gladys:node-red-usb-ports

```

---

<div class="post-metadata">

**Author:** ![Psoy](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/psoy/32/9005_2.png) [@Psoy](https://community.gladysassistant.com/u/Psoy)\
**Post date:** [Janvier 27, 2025, 8:19 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/2 "2025-01-27T08:19:57Z")

</div>

> [@pierre-gilles](#):
>
> J’ai lancé un [build](https://github.com/GladysAssistant/Gladys/actions/runs/12984562745), qui devrait aboutir dans 50 minutes :

bonjour @pierre-gilles  
J’ai modifié la commande, regardes si c’est bon, pour que je teste dans la matinée.

```auto
docker run -d \
--log-driver json-file \
--log-opt max-size=10m \
--cgroupns=host \
--restart=always \
--privileged \
--network=host \
--name gladys \
-e NODE_ENV=production \
-e SERVER_PORT=80 \
-e TZ=Europe/Paris \
-e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/gladysassistant:/var/lib/gladysassistant \
-v /dev:/dev \
-v /run/udev:/run/udev:ro \
gladysassistant/gladys:node-red-usb-ports

```

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Janvier 27, 2025, 8:29 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/3 "2025-01-27T08:29:34Z")

</div>

ça me parait bon 🙂

---

<div class="post-metadata">

**Author:** ![Psoy](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/psoy/32/9005_2.png) [@Psoy](https://community.gladysassistant.com/u/Psoy)\
**Post date:** [Janvier 27, 2025, 11:04 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/4 "2025-01-27T11:04:15Z")

</div>

Jai pu tester , mais ça ne fonctionne toujours pas :  
avec `dmesg -s 1024` j’ai verifier le port

```auto
Dmesg -s 1024 
62] usbcore: registered new interface driver usbserial_generic
[12.602675] usbserial: USB Serial support registered for generic
[12.614134] usbcore: registered new interface driver ch341
[12.614354] usbserial: USB Serial support registered for ch341-uart
[12.614551] ch341 1-1.3:1.0: ch341-uart converter detected
[12.618019] usb 1-1.3: ch341-uart converter now attached to ttyUSB0

```

dans Node red, je selectionne le port proposé :

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/4/b/4b5a3dbb78baf17608297644e2010c20de4965a4.png)

parametrage dans node red :

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/c/2/c2788a41ff3fa461742bb8fe0e613f981eb4b16e.png)

Au moment de deployer :

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/2/c/2ced49abd102c6b013e1562d6b3a00d5b77aa4d5.png)

les logs de node rer

```auto
pi@raspberrypi:~ $ docker logs nodered/node-red:3.1
27 Jan 10:40:44 - [info]

Welcome to Node-RED
===================

27 Jan 10:40:45 - [info] Node-RED version: v3.1.15
27 Jan 10:40:45 - [info] Node.js version: v16.20.2
27 Jan 10:40:45 - [info] Linux 5.10.103-v8+ arm64 LE
27 Jan 10:40:50 - [info] Loading palette nodes
27 Jan 10:40:58 - [info] Settings file : /data/settings.js
27 Jan 10:40:58 - [info] Context store : 'default' [module=memory]
27 Jan 10:40:58 - [info] User directory : /data
27 Jan 10:40:58 - [warn] Projects disabled : editorTheme.projects.enabled=false
27 Jan 10:40:58 - [info] Flows file : /data/flows.json
27 Jan 10:40:58 - [info] Creating new flow file
27 Jan 10:40:58 - [warn]

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

27 Jan 10:40:58 - [info] Server now running at http://127.0.0.1:1880/
27 Jan 10:40:58 - [warn] Encrypted credentials not found
27 Jan 10:40:58 - [info] Starting flows
27 Jan 10:40:58 - [info] Started flows
27 Jan 10:41:42 - [info] Installing module: node-red-node-serialport, version: 2.0.3
27 Jan 10:42:21 - [info] Installed module: node-red-node-serialport
27 Jan 10:42:23 - [info] Added node types:
27 Jan 10:42:23 - [info] - node-red-node-serialport:serial in
27 Jan 10:42:23 - [info] - node-red-node-serialport:serial out
27 Jan 10:42:23 - [info] - node-red-node-serialport:serial request
27 Jan 10:42:23 - [info] - node-red-node-serialport:serial-port
27 Jan 10:42:23 - [info] - node-red-node-serialport:serial control
27 Jan 10:46:16 - [info] Stopping flows
27 Jan 10:46:16 - [info] Stopped flows
27 Jan 10:46:16 - [info] Updated flows
27 Jan 10:46:16 - [info] Starting flows
27 Jan 10:46:16 - [info] Started flows
27 Jan 10:46:16 - [error] [serialconfig:b63b9d343f0c14e6] serial port /dev/ttyUSB0 error: Error: Error: Permission denied, cannot open /dev/ttyUSB0
27 Jan 10:46:44 - [info] Stopping flows
27 Jan 10:46:44 - [info] serial port /dev/ttyUSB0 closed
27 Jan 10:46:44 - [info] Stopped flows
27 Jan 10:46:44 - [info] Updated flows
27 Jan 10:46:44 - [info] Starting flows
27 Jan 10:46:44 - [info] Started flows
27 Jan 10:46:44 - [error] [serialconfig:b63b9d343f0c14e6] serial port /dev/ttyAMA0 error: Error: Error: Permission denied, cannot open /dev/ttyAMA0
27 Jan 10:48:20 - [info] Stopping flows
27 Jan 10:48:20 - [info] serial port /dev/ttyAMA0 closed
27 Jan 10:48:20 - [info] Stopped flows
27 Jan 10:48:20 - [info] Updated flows
27 Jan 10:48:20 - [info] Starting flows
27 Jan 10:48:21 - [info] Started flows
27 Jan 10:48:21 - [error] [serialconfig:b63b9d343f0c14e6] serial port /dev/ttyUSB0 error: Error: Error: Permission denied, cannot open /dev/ttyUSB0
27 Jan 10:48:29 - [info] Stopping flows
27 Jan 10:48:29 - [info] serial port /dev/ttyUSB0 closed
27 Jan 10:48:29 - [info] Stopped flows
27 Jan 10:48:29 - [info] Updated flows
27 Jan 10:48:29 - [info] Starting flows
27 Jan 10:48:29 - [info] Started flows
27 Jan 10:48:29 - [error] [serialconfig:b63b9d343f0c14e6] serial port /dev/ttyUSB0 error: Error: Error: Permission denied, cannot open /dev/ttyUSB0

```

port sur raspberry

```auto
pi@raspberrypi:~ $ lsusb
Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Bus 001 Device 003: ID 0424:ec00 Microchip Technology, Inc. (formerly SMSC) SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Microchip Technology, Inc. (formerly SMSC) SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

```

Voila si tu as besoin de plus d’infos ?  
merci a toi

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Janvier 27, 2025, 12:58 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/5 "2025-01-27T12:58:04Z")

</div>

Oui j’aurais besoin que tu fasses un:

```auto
docker inspect ID_DU_CONTAINER_NODE_RED

```

Et me mettre ici ce que tu vois 🙂

---

<div class="post-metadata">

**Author:** ![Psoy](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/psoy/32/9005_2.png) [@Psoy](https://community.gladysassistant.com/u/Psoy)\
**Post date:** [Janvier 27, 2025, 1:20 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/6 "2025-01-27T13:20:08Z")

</div>

> [@pierre-gilles](#):
>
> Oui j’aurais besoin que tu fasses un:

voila

```auto

pi@raspberrypi:~ $ docker inspect ID_DU_CONTAINER_NODE_RED
[]
Error: No such object: ID_DU_CONTAINER_NODE_RED

```

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Janvier 27, 2025, 1:32 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/7 "2025-01-27T13:32:01Z")

</div>

ID\_DU\_CONTAINER\_NODE\_RED c’est à remplacer par l’ID du container Node-RED 😂

---

<div class="post-metadata">

**Author:** ![Psoy](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/psoy/32/9005_2.png) [@Psoy](https://community.gladysassistant.com/u/Psoy)\
**Post date:** [Janvier 27, 2025, 1:33 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/8 "2025-01-27T13:33:57Z")

</div>

oups 🙄

en effet ça fait pas pareil 😄

```auto
pi@raspberrypi:~ $ docker inspect 4bdf10801a20
[
    {
        "Id": "4bdf10801a2056713b1ea04d49e89a1f9b126ca041d89f6a56f2973c14354fd0",
        "Created": "2025-01-27T10:40:00.988429022Z",
        "Path": "./entrypoint.sh",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 2552,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2025-01-27T10:40:15.299175192Z",
            "FinishedAt": "0001-01-01T00:00:00Z",
            "Health": {
                "Status": "healthy",
                "FailingStreak": 0,
                "Log": [
                    {
                        "Start": "2025-01-27T14:32:45.468270734+01:00",
                        "End": "2025-01-27T14:32:46.089802444+01:00",
                        "ExitCode": 0,
                        "Output": ""
                    },
                    {
                        "Start": "2025-01-27T14:33:16.145544727+01:00",
                        "End": "2025-01-27T14:33:16.759836444+01:00",
                        "ExitCode": 0,
                        "Output": ""
                    },
                    {
                        "Start": "2025-01-27T14:33:46.827170575+01:00",
                        "End": "2025-01-27T14:33:47.459022894+01:00",
                        "ExitCode": 0,
                        "Output": ""
                    },
                    {
                        "Start": "2025-01-27T14:34:17.525029165+01:00",
                        "End": "2025-01-27T14:34:18.195952915+01:00",
                        "ExitCode": 0,
                        "Output": ""
                    },
                    {
                        "Start": "2025-01-27T14:34:48.342865391+01:00",
                        "End": "2025-01-27T14:34:49.004312549+01:00",
                        "ExitCode": 0,
                        "Output": ""
                    }
                ]
            }
        },
        "Image": "sha256:bf1dac2b1cbc77b96f0ef704281763f5cba01b59f36d3d16d231bab333dc4115",
        "ResolvConfPath": "/var/lib/docker/containers/4bdf10801a2056713b1ea04d49e89a1f9b126ca041d89f6a56f2973c14354fd0/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/4bdf10801a2056713b1ea04d49e89a1f9b126ca041d89f6a56f2973c14354fd0/hostname",
        "HostsPath": "/var/lib/docker/containers/4bdf10801a2056713b1ea04d49e89a1f9b126ca041d89f6a56f2973c14354fd0/hosts",
        "LogPath": "/var/lib/docker/containers/4bdf10801a2056713b1ea04d49e89a1f9b126ca041d89f6a56f2973c14354fd0/4bdf10801a2056713b1ea04d49e89a1f9b126ca041d89f6a56f2973c14354fd0-json.log",
        "Name": "/gladys-node-red",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/var/lib/gladysassistant/node-red:/data",
                "/dev:/dev",
                "/run/udev:/run/udev:ro"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {
                    "max-size": "10m"
                }
            },
            "NetworkMode": "default",
            "PortBindings": {
                "1880/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "1881"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "always",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": true,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": [
                "label=disable"
            ],
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": null,
            "ReadonlyPaths": null
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/3bfbd36779fb2625e76ec7d8560e8d205ed75d33118a75db09e537794c454764-init/diff:/var/lib/docker/overlay2/5254fb1e94ecaad1ae06c3606a90da705ac47123e78697c7de02bdb355e24002/diff:/var/lib/docker/overlay2/2c0cf5446301fbfe977761e109d05d81c33aa068586cbf5bf8315da7521704ab/diff:/var/lib/docker/overlay2/b24091075e548c2bcbcd616e54ca72a5ff53b07bfd71061e05fef41f5fb6adee/diff:/var/lib/docker/overlay2/b8a6030c37237b02360c54260c2ad3ba7612b8da59d4d3eb97b9d2a8fac76c55/diff:/var/lib/docker/overlay2/afa66f72df5d76bbf043888f550d0368566273eec1a304edc679c38f7d4374f8/diff:/var/lib/docker/overlay2/ea57f7aff9e03e0ef6cf001967006f24e985f7f6d1ab249adda78c1e0a85e29c/diff:/var/lib/docker/overlay2/6583b1111613b61869c058a59fdc7ccf4f22e1cdd4e22ef3fefede0f530e7255/diff:/var/lib/docker/overlay2/b1e013593560d227c5f884021547e357bf131d66e9111d4aa055e5d0d4c91bee/diff:/var/lib/docker/overlay2/b57961199d2e32910e0c767f0f589cafab8ffe6c6124d91ad38154a893d59b34/diff:/var/lib/docker/overlay2/f318dcc1db476e645b3a58c11a01ecac48a8394560f714022ea13501dc06beb8/diff:/var/lib/docker/overlay2/9c5b0d92ed004650418f5a382adc499618b92140c3fac173fe0f24f3e480d469/diff:/var/lib/docker/overlay2/8104bd617585d550646386d8a342623040b89a155a6b89670fe1b096ffe47a9a/diff:/var/lib/docker/overlay2/71bbe4ab385219cd219eb357231e2ab340a4da222439327422f5ffe1ee66b7be/diff:/var/lib/docker/overlay2/c920da126c3090214760c81faeeb27c4ccb642e3efa51327d72dce89a801f35f/diff:/var/lib/docker/overlay2/3a0e8c6e90e5eea537307617a6586ec54e6689b817e22e32778cf74bb5236908/diff:/var/lib/docker/overlay2/c11fc90afb6e3e224589162178b7da33669ddf6510620671eec08fb0b8ac1732/diff:/var/lib/docker/overlay2/b61fc569233d18d75d56592e335fac15c022dffe9622e64fabe355a9012ba6f8/diff",
                "MergedDir": "/var/lib/docker/overlay2/3bfbd36779fb2625e76ec7d8560e8d205ed75d33118a75db09e537794c454764/merged",
                "UpperDir": "/var/lib/docker/overlay2/3bfbd36779fb2625e76ec7d8560e8d205ed75d33118a75db09e537794c454764/diff",
                "WorkDir": "/var/lib/docker/overlay2/3bfbd36779fb2625e76ec7d8560e8d205ed75d33118a75db09e537794c454764/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/var/lib/gladysassistant/node-red",
                "Destination": "/data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/dev",
                "Destination": "/dev",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/run/udev",
                "Destination": "/run/udev",
                "Mode": "ro",
                "RW": false,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "4bdf10801a20",
            "Domainname": "",
            "User": "node-red",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "1880/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/src/node-red/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NODE_VERSION=16.20.2",
                "YARN_VERSION=1.22.19",
                "NODE_RED_VERSION=v3.1.15",
                "NODE_PATH=/usr/src/node-red/node_modules:/data/node_modules",
                "FLOWS=flows.json"
            ],
            "Cmd": null,
            "Healthcheck": {
                "Test": [
                    "CMD-SHELL",
                    "node /healthcheck.js"
                ]
            },
            "Image": "nodered/node-red:3.1",
            "Volumes": null,
            "WorkingDir": "/usr/src/node-red",
            "Entrypoint": [
                "./entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "authors": "Dave Conway-Jones, Nick O'Leary, James Thomas, Raymond Mouthaan",
                "org.label-schema.arch": "",
                "org.label-schema.build-date": "2024-12-17T09:46:41Z",
                "org.label-schema.description": "Low-code programming for event-driven applications.",
                "org.label-schema.docker.dockerfile": ".docker/Dockerfile.alpine",
                "org.label-schema.license": "Apache-2.0",
                "org.label-schema.name": "Node-RED",
                "org.label-schema.url": "https://nodered.org",
                "org.label-schema.vcs-ref": "",
                "org.label-schema.vcs-type": "Git",
                "org.label-schema.vcs-url": "https://github.com/node-red/node-red-docker",
                "org.label-schema.version": "3.1.15"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "24902baafb6717ff0342ee17e2c8ed2e809947ff30e9704acf3128dd5c5f3451",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "1880/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "1881"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "1881"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/24902baafb67",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "cddbcedf3cd1d16eff4da4c215d9144946d26ae367673e542ef8179affd7418e",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.4",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:04",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "1d3b4c16fadcdd1917b86c97e0381ee4f056693bead5556046e45a6f43a01978",
                    "EndpointID": "cddbcedf3cd1d16eff4da4c215d9144946d26ae367673e542ef8179affd7418e",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:04",
                    "DriverOpts": null
                }
            }
        }
    }
]

```

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Janvier 28, 2025, 7:14 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/9 "2025-01-28T19:14:36Z")

</div>

> [@Psoy](#):
>
> en effet ça fait pas pareil 😄

Ok, ça me parait bon du coup, ma PR a bien fait ce j’avais prévu.

Mais du coup, je n’ai aucune idée de pourquoi ça ne marche pas.

@Psoy Vu que tu utilises RFLink, est-ce que tu pourrais tâtonner dans ton coin jusqu’à réussir à avoir un RFLink fonctionnel, et ensuite me passer la configuration Docker que tu as utilisé ? ça sera peut-être plus simple dans ce sens là

---

<div class="post-metadata">

**Author:** ![Psoy](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/psoy/32/9005_2.png) [@Psoy](https://community.gladysassistant.com/u/Psoy)\
**Post date:** [Janvier 28, 2025, 7:33 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/10 "2025-01-28T19:33:38Z")

</div>

> [@pierre-gilles](#):
>
> Ok, ça me parait bon du coup, ma PR a bien fait ce j’avais prévu.

Bonsoir @pierre-gilles  
Je veux bien tester des choses, mais mettre les doigts dans docker, ça va etre compliqué, surtout que je ne sais pas comment Gladys lance node\_red et surtout que je ne maitrise pas. Sur le Node\_red externe à force de bidouiller, je visualise ou sont les fichiers, j’ai les commandes qui marchent, donc là ça va; Si tu as des idées sur, où je peux chercher je suis preneur, mais je vais chercher.  
Mais comme j’ ai dit je m’absente 15jours environ, je ne serai pas sur le rflink.  
Bonne soirée

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Janvier 28, 2025, 7:35 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/11 "2025-01-28T19:35:00Z")

</div>

> [@Psoy](#):
>
> surtout que je ne sais pas comment Gladys lance node\_red et surtout que je ne maitrise pas

Gladys lance Node-RED avec un simple docker run 🙂 Donc si tu arrives à faire fonctionner un Node-RED, tu me passe ton docker run et je l’intègre !

> [@Psoy](#):
>
> Mais comme j’ ai dit je m’absente 15jours environ, je ne serai pas sur le rflink.

Pas de soucis, rien de pressé de mon côté !

---

<div class="post-metadata">

**Author:** ![Psoy](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/psoy/32/9005_2.png) [@Psoy](https://community.gladysassistant.com/u/Psoy)\
**Post date:** [Janvier 28, 2025, 7:54 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/12 "2025-01-28T19:54:35Z")

</div>

> [@pierre-gilles](#):
>
> tu me passe ton docker run et je l’intègre !

J’utilise ce qui est dans le tuto, mais il y a peut etre des chose a reprendre notament la mise a jour par watchtower:

```auto
Installation de node red

1 - tapez la commande de @VonOx, il faudra avoir un systeme branché sur les ports USB0 et USB1, pour ma part j’ai un RFlink sur le port ttyUSB0 et la cle zigbbe Sonoff sur le port ttyUSB1. Donc il faudra peut etre adapter dans les lignes " --device=/dev/ttyUSB0 \ " le nom du port utilisé peut etre ttyACM0.

docker run -d \
--log-opt max-size=10m \
--restart=always \
--network=host \
--name node_red \
-u node-red:dialout \
--device=/dev/ttyUSB0 \
--device=/dev/ttyUSB1 \
--label com.centurylinklabs.watchtower.enable=false \
-v /var/lib/node-red:/data \
nodered/node-red

Attention , il faudra adapter la ligne :

--device=/dev/ttyUSB0 \
En fonction du port Usb où est branché le RFlink, certaines fois le Rflnk peut etre branché sur le port usb : /dev/ttyAMA0.
Dans mon cas le /devttyUSB0 correspond à ma clé zigbbe et le /dev/ttyUSB1 correspond a mon Rflink

Attention avec cette ligne de commande :

--label com.centurylinklabs.watchtower.enable=false \
Watchtower ne remet plus Node red à jour et quand on relance le PI , node red ne se lance plus tout seul comme Gladys. Il faudra relancer le container node red avec « docker restart node_red »

2 - puis celle-ci

sudo chown -R 1000:1000 /var/lib/node-red

```

je copie cette commande  
docker run (et la suite … )

et surtout  
la commande 2:

```auto
sudo chown -R 1000:1000 /var/lib/node-red

```

sinon rien ne fonctionne.

Par contre «&nbsp;Node \_red externe&nbsp;» est en version 4, et semble avoir résolu les problemes de la version de la palette de «&nbsp;node-red-node-serialport&nbsp;» (avant il fallait retrograder la version pour que ça fonctionne)

##### Je viens de relire, mais la version 3.1.15 de Node\_Red accepte la derniere version de «&nbsp;node-red-node-serialport&nbsp;» egalement.

---

<div class="post-metadata">

**Author:** ![Psoy](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/psoy/32/9005_2.png) [@Psoy](https://community.gladysassistant.com/u/Psoy)\
**Post date:** [Janvier 28, 2025, 8:02 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/13 "2025-01-28T20:02:15Z")

</div>

Une petite question bonus sur mon mini PC  
Cette config de docker, n’empecherait pas d’inverser les ports de la cle zigbee et du Rflink ( Car quand mon disjoncteur saute les 2 ports s’inversent a la mise sous tension, leRflink se retrouve sur USB0 alors qu’il etait en USB1 et inversement pour la clé zigbee, j’ai tenté de modifier le port du Rflink pour le mettre sur le port USB0, mais je ne peux pas Node red le refuse, il faudra que j’essaie avec le port de la clé zigbee!  
Merci encore pour tout

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Janvier 31, 2025, 8:03 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/14 "2025-01-31T08:03:02Z")

</div>

> [@Psoy](#):
>
> J’utilise ce qui est dans le tuto,

Justement, on ne peut pas faire ça, car le port USB ici est fixe.

Là, on veut que Node-RED ait accès à tous les ports USB, d’où le passage en volume de /dev:/dev et du mode --privileged du container

---

<div class="post-metadata">

**Author:** ![Psoy](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/psoy/32/9005_2.png) [@Psoy](https://community.gladysassistant.com/u/Psoy)\
**Post date:** [Février 14, 2025, 9:55 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/15 "2025-02-14T21:55:43Z")

</div>

Bonsoir @pierre-gilles et tous  
Je me suis remis sur node red et rflink, je tape cette commande :`ls /dev/tty*`

```auto
pi@rasp3b:// $ ls /dev/tty*
/dev/tty /dev/tty14 /dev/tty20 /dev/tty27 /dev/tty33 /dev/tty4 /dev/tty46 /dev/tty52 /dev/tty59 /dev/tty8
/dev/tty0 /dev/tty15 /dev/tty21 /dev/tty28 /dev/tty34 /dev/tty40 /dev/tty47 /dev/tty53 /dev/tty6 /dev/tty9
/dev/tty1 /dev/tty16 /dev/tty22 /dev/tty29 /dev/tty35 /dev/tty41 /dev/tty48 /dev/tty54 /dev/tty60 /dev/ttyAMA0
/dev/tty10 /dev/tty17 /dev/tty23 /dev/tty3 /dev/tty36 /dev/tty42 /dev/tty49 /dev/tty55 /dev/tty61 /dev/ttyprintk
/dev/tty11 /dev/tty18 /dev/tty24 /dev/tty30 /dev/tty37 /dev/tty43 /dev/tty5 /dev/tty56 /dev/tty62 /dev/ttyUSB0
/dev/tty12 /dev/tty19 /dev/tty25 /dev/tty31 /dev/tty38 /dev/tty44 /dev/tty50 /dev/tty57 /dev/tty63 /dev/tty-usb-arduino-nano
/dev/tty13 /dev/tty2 /dev/tty26 /dev/tty32 /dev/tty39 /dev/tty45 /dev/tty51 /dev/tty58 /dev/tty7

```

Aux derniers port USB , je vois le port /dev/tty/USB0 et après il y a ce port /dev/tty-usb-arduino-nano.  
Ce sont les memes ports car quand je debranche le RFlink les deux ports disparraissent.  
Par contre sur le miniPC, je vois bien le port /devttyUSB1(quand je branche le rflink) mais pas le renommage en «&nbsp;/dev/tty-usb-arduino-nano&nbsp;», sachant que sur le miniPC, je suis sur node red externe.  
Est ce normal? est ce que le port USB est renomé dans node red interne et c’est pour ça que l’on ne le voit pas ?  
Merci de votre aide

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Février 17, 2025, 7:30 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/16 "2025-02-17T07:30:57Z")

</div>

Tu as dû créer une règles udev qui est valable sur l’hôte mais pas disponible dans le container !

---

<div class="post-metadata">

**Author:** ![Psoy](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/psoy/32/9005_2.png) [@Psoy](https://community.gladysassistant.com/u/Psoy)\
**Post date:** [Février 17, 2025, 8:06 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/17 "2025-02-17T08:06:03Z")

</div>

Bonjour @pierre-gilles  
Moi je n’ai rien créer, si regles udev il y a, elles emanent de l’installation de node red par gladys 🤔

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Février 17, 2025, 11:57 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/18 "2025-02-17T11:57:35Z")

</div>

> [@Psoy](#):
>
> Moi je n’ai rien créer, si regles udev il y a, elles emanent de l’installation de node red par gladys 🤔

Les règles udev n’apparaissent pas par magie 😛

---

<div class="post-metadata">

**Author:** ![Psoy](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/psoy/32/9005_2.png) [@Psoy](https://community.gladysassistant.com/u/Psoy)\
**Post date:** [Février 19, 2025, 11:04 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/19 "2025-02-19T11:04:20Z")

</div>

> [@Rflink, Node Red et Gladys](https://community.gladysassistant.com/t/rflink-node-red-et-gladys/6844/177):
>
> Les règles udev n’apparaissent pas par magie 😛

Bonjour @pierre-gilles  
Je n’ai pas créer de regle udev, par contre `/dev/tty-usb-arduino-nano`, c’est un lien symbolique qui est créer, je pense quand on branche le Rflink. J’ai vu une table qui crée les correspondances quand on branche un arduino Uno ou un arduino Mega,  
`rasp3b:/etc/udev/rules.d $ sudo nano 99-gladys-tty.rules

> [@pierre-gilles](#):
>
> @Psoy Vu que tu utilises RFLink, est-ce que tu pourrais tâtonner dans ton coin

Donc d’apres mes recherches, j’ai trouvé que ce lien symbolique (comme dit Gemini) a des droits comme ceci :

```auto
pi@rasp3b:~ $ ls -l /dev/tty-usb-arduino-nano
lrwxrwxrwx 1 root root 7 Feb 19 10:02 /dev/tty-usb-arduino-nano -> ttyUSB0

```

et le port Usb0 sur lequel est lié le port ``/dev/tty-usb-arduino-nano```a les droits suivants :

```auto
pi@rasp3b:~ $ ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 Feb 19 10:02 /dev/ttyUSB0

```

Donc j’ai fais un ` sudo chmod a+rw /dev/ttyUSB0`, pour donner les droits aux «&nbsp;AUTRES&nbsp;» :

```auto
pi@rasp3b:~ $ ls -l /dev/ttyUSB0
crw-rw-rw- 1 root dialout 188, 0 Feb 19 11:50 /dev/ttyUSB0

```

et là mon «&nbsp;node serial&nbsp;» se connecte:

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/f/9/f9fa2d3cc7130ba575baee9bca226ef4ebc63282.png)

- Je ne sais pas ce que ça vaut en terme de securité ?
- le probleme, c’est qu’a chaque deconnexion du RFlink les droits du port USB0 se reinitialise en

crw-rw---- 1 root dialout 188, 0 Feb 19 10:02 /dev/ttyUSB0`

et donc on perd la connexion du Node Serial.  
Il faudrait fixer ces droits, pour qu’ils s’initialisent correctement au branchement du Rflink. Et peut etre, meme a d’autres ports, si plusieurs appareils sont branchés ( gateway Xiaomi, ou carte Arduino Uno, …)  
Voila si tu peux faire ça, quand tu auras un peu de temps, je veux bien tester la nouvelle image  
Merci a toi

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Février 20, 2025, 12:33 UTC](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392/22 "2025-02-20T12:33:53Z")

</div>

@Psoy ça m’étonne ce que tu me dis parce que normalement Node-RED est lancé en mode «&nbsp;priviledged&nbsp;», avec tous les droits.

Donc es-tu sûr que tu as bien lancé correctement ton Gladys, qui lui même a bien lancé correctement Node-RED ?

Je rappelle l’image Docker:

```auto
gladysassistant/gladys:node-red-usb-ports

```

[Page suivante](https://community.gladysassistant.com/t/integration-node-red-donner-acces-aux-ports-usb-au-container-docker/9392.md?page=2)
