# Install extra node in docker

**URL:** <https://discourse.nodered.org/t/install-extra-node-in-docker/94206>\
**Category:** General\
**Tags:** docker\
**Created:** [27 December 2024 16:43 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206 "2024-12-27T16:43:22Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![Dylantje](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dylantje/32/16492_2.png) [@Dylantje](https://discourse.nodered.org/u/Dylantje)\
**Post date:** [28 December 2024 10:55 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/21 "2024-12-28T10:55:11Z")

</div>

```auto

pi@odroidn2:~$ sudo docker volume ls
[sudo] wachtwoord voor pi:
DRIVER VOLUME NAME
local grafana_grafana_storage
local influxdb_influxdb_data
local nodered_node-red-data
local zwave-config
pi@odroidn2:~$

```

And:

```auto
DRIVER VOLUME NAME
local grafana_grafana_storage
local influxdb_influxdb_data
local nodered_node-red-data
local zwave-config
pi@odroidn2:~$ ^C
pi@odroidn2:~$ sudo docker volume inspect nodered_node-red-data
[
    {
        "CreatedAt": "2024-06-01T18:13:40+02:00",
        "Driver": "local",
        "Labels": {
            "com.docker.compose.project": "nodered",
            "com.docker.compose.version": "1.29.2",
            "com.docker.compose.volume": "node-red-data"
        },
        "Mountpoint": "/var/lib/docker/volumes/nodered_node-red-data/_data",
        "Name": "nodered_node-red-data",
        "Options": null,
        "Scope": "local"
    }
]
pi@odroidn2:~$

```

---

<div class="post-metadata">

**Author:** ![jodelkoenig](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jodelkoenig/32/44645_2.png) [@jodelkoenig](https://discourse.nodered.org/u/jodelkoenig)\
**Post date:** [28 December 2024 10:56 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/22 "2024-12-28T10:56:56Z")

</div>

on your odroid

1. 

`sudo -s` (be careful now, since you are acting as root)

1. 

`cd /var/lib/docker/volumes/nodered_node-red-data/_data`

1. 

What is the output of `ls`?

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [28 December 2024 10:58 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/23 "2024-12-28T10:58:55Z")

</div>

Why not just use the node-red editor \> manage palette \> install the node.  
It will install it at the proper place.

---

<div class="post-metadata">

**Author:** ![jodelkoenig](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jodelkoenig/32/44645_2.png) [@jodelkoenig](https://discourse.nodered.org/u/jodelkoenig)\
**Post date:** [28 December 2024 11:00 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/24 "2024-12-28T11:00:30Z")

</div>

Well. I assumed, Dylantje did so and provided log is from nodered's editor? Good point @bakman2

---

<div class="post-metadata">

**Author:** ![Dylantje](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dylantje/32/16492_2.png) [@Dylantje](https://discourse.nodered.org/u/Dylantje)\
**Post date:** [28 December 2024 11:13 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/25 "2024-12-28T11:13:12Z")

</div>

```auto

pi@odroidn2:~$ sudo -s
[sudo] wachtwoord voor pi:
root@odroidn2:/home/pi# cd /var/lib/docker/volumes/nodered_node-red-data/_data
root@odroidn2:/var/lib/docker/volumes/nodered_node-red-data/_data#
root@odroidn2:/var/lib/docker/volumes/nodered_node-red-data/_data#
root@odroidn2:/var/lib/docker/volumes/nodered_node-red-data/_data#

```

---

<div class="post-metadata">

**Author:** ![Dylantje](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dylantje/32/16492_2.png) [@Dylantje](https://discourse.nodered.org/u/Dylantje)\
**Post date:** [28 December 2024 11:14 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/26 "2024-12-28T11:14:33Z")

</div>

Perhaps to this reason:

```auto
-----------------------------------------------------------
2024-12-28T11:14:02.067Z Install : node-red-contrib-tasmota 1.0.0

2024-12-28T11:14:01.410Z npm install --no-audit --no-update-notifier --no-fund --save --save-prefix=~ --omit=dev --engine-strict node-red-contrib-tasmota@1.0.0
2024-12-28T11:14:04.517Z [err] npm error code EACCES
2024-12-28T11:14:04.518Z [err] npm error syscall open
2024-12-28T11:14:04.518Z [err] npm error path /data/.npm/_cacache/tmp/e6dee464
2024-12-28T11:14:04.518Z [err] npm error errno EACCES
2024-12-28T11:14:04.518Z [err] npm error
2024-12-28T11:14:04.518Z [err] npm error Your cache folder contains root-owned files, due to a bug in
2024-12-28T11:14:04.518Z [err] npm error previous versions of npm which has since been addressed.
2024-12-28T11:14:04.518Z [err] npm error
2024-12-28T11:14:04.518Z [err] npm error To permanently fix this problem, please run:
2024-12-28T11:14:04.518Z [err] npm error sudo chown -R 1000:1000 "/data/.npm"
2024-12-28T11:14:04.522Z [err] npm error A complete log of this run can be found in: /data/.npm/_logs/2024-12-28T11_14_01_674Z-debug-0.log
2024-12-28T11:14:04.543Z rc=1

```

---

<div class="post-metadata">

**Author:** ![jodelkoenig](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jodelkoenig/32/44645_2.png) [@jodelkoenig](https://discourse.nodered.org/u/jodelkoenig)\
**Post date:** [28 December 2024 11:15 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/27 "2024-12-28T11:15:26Z")

</div>

What is the output of `ls` inside /var/lib/docker/volumes/nodered\_node-red-data/\_data. Is it really empty? Is node-red running?

---

<div class="post-metadata">

**Author:** ![Dylantje](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dylantje/32/16492_2.png) [@Dylantje](https://discourse.nodered.org/u/Dylantje)\
**Post date:** [28 December 2024 11:16 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/28 "2024-12-28T11:16:48Z")

</div>

```auto
root@odroidn2:/var/lib/docker/volumes/nodered_node-red-data/_data# ls
flows_cred.json flows.json lib node_modules package.json package-lock.json settings.js
root@odroidn2:/var/lib/docker/volumes/nodered_node-red-data/_data#

```

Running like a dear 🙂

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [28 December 2024 11:17 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/29 "2024-12-28T11:17:08Z")

</div>

Add:

```auto
      - PGID=1000
      - PUID=1000

```

to the environment section and restart the container. then try to reinstall using via the browser.

---

<div class="post-metadata">

**Author:** ![jodelkoenig](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jodelkoenig/32/44645_2.png) [@jodelkoenig](https://discourse.nodered.org/u/jodelkoenig)\
**Post date:** [28 December 2024 11:17 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/30 "2024-12-28T11:17:36Z")

</div>

OK ... my bad 🙂 ... what does `ls -la` show ... we are missing .npm here 🙂

---

<div class="post-metadata">

**Author:** ![Dylantje](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dylantje/32/16492_2.png) [@Dylantje](https://discourse.nodered.org/u/Dylantje)\
**Post date:** [28 December 2024 11:19 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/31 "2024-12-28T11:19:35Z")

</div>

```auto

root@odroidn2:/var/lib/docker/volumes/nodered_node-red-data/_data# ^C
root@odroidn2:/var/lib/docker/volumes/nodered_node-red-data/_data# ls -la
totaal 1988
drwxrwxr-x 5 pi root 4096 28 dec 11:09 .
drwx-----x 3 root root 4096 1 jun 2024 ..
-rw-r--r-- 1 pi pi 50815 27 dec 19:53 .config.nodes.json
-rw-r--r-- 1 pi pi 50815 27 dec 19:53 .config.nodes.json.backup
-rw-r--r-- 1 pi pi 133 1 jun 2024 .config.runtime.json
-rw-r--r-- 1 pi pi 95 1 jun 2024 .config.runtime.json.backup
-rw-r--r-- 1 pi pi 701 27 dec 19:53 .config.users.json
-rw-r--r-- 1 pi pi 701 27 dec 19:53 .config.users.json.backup
-rw-r--r-- 1 pi pi 211 27 dec 16:53 flows_cred.json
-rw-r--r-- 1 pi pi 135 27 dec 16:53 .flows_cred.json.backup
-rw-r--r-- 1 pi pi 839457 28 dec 11:09 flows.json
-rw-r--r-- 1 pi pi 843399 28 dec 11:09 .flows.json.backup
drwxr-xr-x 3 pi pi 4096 1 jun 2024 lib
drwxr-xr-x 177 pi pi 4096 1 jun 2024 node_modules
drwxr-xr-x 4 pi pi 4096 1 jun 2024 .npm
-rw-r--r-- 1 pi pi 1067 27 mrt 2024 package.json
-rw-r--r-- 1 root root 169584 27 mrt 2024 package-lock.json
-rw-r--r-- 1 pi pi 22614 27 jul 2023 settings.js
root@odroidn2:/var/lib/docker/volumes/nodered_node-red-data/_data#

```

---

<div class="post-metadata">

**Author:** ![Dylantje](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dylantje/32/16492_2.png) [@Dylantje](https://discourse.nodered.org/u/Dylantje)\
**Post date:** [28 December 2024 11:20 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/32 "2024-12-28T11:20:12Z")

</div>

thanks.. only 2 gys that help me... Is this going well?

What and where doe add tis?

---

<div class="post-metadata">

**Author:** ![jodelkoenig](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jodelkoenig/32/44645_2.png) [@jodelkoenig](https://discourse.nodered.org/u/jodelkoenig)\
**Post date:** [28 December 2024 11:20 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/33 "2024-12-28T11:20:45Z")

</div>

We should be almost there. Inside the folder /var/lib/docker/volumes/nodered\_node-red-data/\_data run `chown -R 1000:1000 ".npm"` -\> still as root

---

<div class="post-metadata">

**Author:** ![Dylantje](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dylantje/32/16492_2.png) [@Dylantje](https://discourse.nodered.org/u/Dylantje)\
**Post date:** [28 December 2024 11:26 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/34 "2024-12-28T11:26:25Z")

</div>

```auto

root@odroidn2:/var/lib/docker/volumes/nodered_node-red-data/_data# chown -R 1000:1000 ".npm"
root@odroidn2:/var/lib/docker/volumes/nodered_node-red-data/_data#

```

And then?

Try the install tasmota

```auto
2024-12-28T11:26:44.843Z Install : node-red-contrib-tasmota 1.0.0

2024-12-28T11:26:44.162Z npm install --no-audit --no-update-notifier --no-fund --save --save-prefix=~ --omit=dev --engine-strict node-red-contrib-tasmota@1.0.0
2024-12-28T11:26:47.750Z [err] npm error code EACCES
2024-12-28T11:26:47.750Z [err] npm error syscall open
2024-12-28T11:26:47.750Z [err] npm error path /data/package-lock.json
2024-12-28T11:26:47.751Z [err] npm error errno -13
2024-12-28T11:26:47.755Z [err] npm error Error: EACCES: permission denied, open '/data/package-lock.json'
2024-12-28T11:26:47.755Z [err] npm error at async open (node:internal/fs/promises:639:25)
2024-12-28T11:26:47.755Z [err] npm error at async writeFile (node:internal/fs/promises:1212:14)
2024-12-28T11:26:47.755Z [err] npm error at async Promise.all (index 0)
2024-12-28T11:26:47.755Z [err] npm error at async [saveIdealTree] (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:1526:7)
2024-12-28T11:26:47.755Z [err] npm error at async Arborist.reify (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:148:5)
2024-12-28T11:26:47.755Z [err] npm error at async Install.exec (/usr/local/lib/node_modules/npm/lib/commands/install.js:150:5)
2024-12-28T11:26:47.755Z [err] npm error at async Npm.exec (/usr/local/lib/node_modules/npm/lib/npm.js:207:9)
2024-12-28T11:26:47.755Z [err] npm error at async module.exports (/usr/local/lib/node_modules/npm/lib/cli/entry.js:74:5) {
2024-12-28T11:26:47.755Z [err] npm error errno: -13,
2024-12-28T11:26:47.755Z [err] npm error code: 'EACCES',
2024-12-28T11:26:47.755Z [err] npm error syscall: 'open',
2024-12-28T11:26:47.755Z [err] npm error path: '/data/package-lock.json'
2024-12-28T11:26:47.755Z [err] npm error }
2024-12-28T11:26:47.755Z [err] npm error
2024-12-28T11:26:47.755Z [err] npm error The operation was rejected by your operating system.
2024-12-28T11:26:47.755Z [err] npm error It is likely you do not have the permissions to access this file as the current user
2024-12-28T11:26:47.755Z [err] npm error
2024-12-28T11:26:47.755Z [err] npm error If you believe this might be a permissions issue, please double-check the
2024-12-28T11:26:47.755Z [err] npm error permissions of the file and its containing directories, or try running
2024-12-28T11:26:47.755Z [err] npm error the command again as root/Administrator.
2024-12-28T11:26:47.759Z [err] npm error A complete log of this run can be found in: /data/.npm/_logs/2024-12-28T11_26_44_370Z-debug-0.log
2024-12-28T11:26:47.779Z rc=243

```

---

<div class="post-metadata">

**Author:** ![jodelkoenig](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jodelkoenig/32/44645_2.png) [@jodelkoenig](https://discourse.nodered.org/u/jodelkoenig)\
**Post date:** [28 December 2024 11:27 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/35 "2024-12-28T11:27:30Z")

</div>

Restart your container and try to install node-red-contrib-tasmota from nodered's editor via palette manager.

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [28 December 2024 11:36 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/36 "2024-12-28T11:36:32Z")

</div>

Use it like this:

```auto
services:
   node-red:
    image: nodered/node-red:latest
    restart: unless-stopped
    environment:
      - TZ=Europe/Amsterdam
      - PGID=1000
      - PUID=1000
    ports:
      - "1880:1880"
    networks:
      - node-red-net
    volumes:
      - node-red-data:/data
      #- ./config:/nodered/config
      #- ./data:/nodered/data
      #- ./log:/nodered/log
      #- ./data:/data

volumes:
    node-red-data:

networks:
  node-red-net:

```

Then again I am not a fan of using volumes like this, I would use a bind mount instead (ie. the parts that are commented out: `#- ./data:/data`), or better yet, not use docker for node-red.

---

<div class="post-metadata">

**Author:** ![jodelkoenig](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jodelkoenig/32/44645_2.png) [@jodelkoenig](https://discourse.nodered.org/u/jodelkoenig)\
**Post date:** [28 December 2024 11:38 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/37 "2024-12-28T11:38:46Z")

</div>

The problem is, that your container runs with user "node-red" with id "1000:1000" anyway. And as such it cannot access "/data/package-lock.json" because it is owned by root

Stop the container.

Go back to /var/lib/docker/volumes/nodered\_node-red-data/\_data as root

and `chown 1000:1000 package-lock.json`

---

<div class="post-metadata">

**Author:** ![Dylantje](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dylantje/32/16492_2.png) [@Dylantje](https://discourse.nodered.org/u/Dylantje)\
**Post date:** [28 December 2024 11:40 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/38 "2024-12-28T11:40:53Z")

</div>

THANKS!!!

Works Love you all..

Nice days and healthy new year

---

<div class="post-metadata">

**Author:** ![Dylantje](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dylantje/32/16492_2.png) [@Dylantje](https://discourse.nodered.org/u/Dylantje)\
**Post date:** [28 December 2024 11:42 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/40 "2024-12-28T11:42:15Z")

</div>

> [@Dylantje](#):
>
> Sow when is set this 2 into my compose file the next time this ig going autmatic?

Sow when is set this 2 into my compose file the next time this is going automatic?

---

<div class="post-metadata">

**Author:** ![jodelkoenig](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jodelkoenig/32/44645_2.png) [@jodelkoenig](https://discourse.nodered.org/u/jodelkoenig)\
**Post date:** [28 December 2024 11:44 UTC](https://discourse.nodered.org/t/install-extra-node-in-docker/94206/41 "2024-12-28T11:44:51Z")

</div>

I do not think PGID and PUID are needed in this particular case, since standard nodered container are applied with it anyway.

The problems you were facing were that an older instance of nodered, which created persistent data on node-red volume, left files from user `root` on it. With this neither tasmota nor current nodered could operate anymore. It should be fine now.

[Previous page](https://discourse.nodered.org/t/install-extra-node-in-docker/94206.md?page=1)

[Next page](https://discourse.nodered.org/t/install-extra-node-in-docker/94206.md?page=3)
