# Node red error: permission denied when installing package from palette

**URL:** <https://discourse.nodered.org/t/node-red-error-permission-denied-when-installing-package-from-palette/90812>\
**Category:** General\
**Tags:** docker\
**Created:** [9 September 2024 11:03 UTC](https://discourse.nodered.org/t/node-red-error-permission-denied-when-installing-package-from-palette/90812 "2024-09-09T11:03:01Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![ThingsTinkerer](https://avatars.discourse-cdn.com/v4/letter/t/91b2a8/32.png) [@ThingsTinkerer](https://discourse.nodered.org/u/ThingsTinkerer)\
**Post date:** [9 September 2024 11:03 UTC](https://discourse.nodered.org/t/node-red-error-permission-denied-when-installing-package-from-palette/90812/1 "2024-09-09T11:03:01Z")

</div>

Got node red project successfully running in docker. However, can't install new packages from palette because of file permissions.

For example:

```auto
-----------------------------------------------------------
2024-09-09T10:31:28.887Z Install : postgrestor 0.0.2

2024-09-09T10:31:28.912Z npm install --no-audit --no-update-notifier --no-fund --save --save-prefix=~ --omit=dev --engine-strict postgrestor@0.0.2
2024-09-09T10:31:34.092Z [err] npm error code EACCES
2024-09-09T10:31:34.092Z [err] npm error syscall rename
2024-09-09T10:31:34.092Z [err] npm error path /data/node_modules/@openp4nr/modbus-serial
2024-09-09T10:31:34.092Z [err] npm error dest /data/node_modules/@openp4nr/.modbus-serial-S75OrEXy
2024-09-09T10:31:34.093Z [err] npm error errno -13
2024-09-09T10:31:34.093Z [err] npm error Error: EACCES: permission denied, rename '/data/node_modules/@openp4nr/modbus-serial' -> '/data/node_modules/@openp4nr/.modbus-serial-S75OrEXy'
2024-09-09T10:31:34.093Z [err] npm error at async Object.rename (node:internal/fs/promises:782:10)
2024-09-09T10:31:34.093Z [err] npm error at async moveFile (/usr/local/lib/node_modules/npm/node_modules/@npmcli/fs/lib/move-file.js:30:5)
2024-09-09T10:31:34.093Z [err] npm error at async Promise.allSettled (index 16)
2024-09-09T10:31:34.093Z [err] npm error at async [reifyPackages] (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:325:11)
2024-09-09T10:31:34.093Z [err] npm error at async Arborist.reify (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:142:5)
2024-09-09T10:31:34.093Z [err] npm error at async Install.exec (/usr/local/lib/node_modules/npm/lib/commands/install.js:150:5)
2024-09-09T10:31:34.093Z [err] npm error at async Npm.exec (/usr/local/lib/node_modules/npm/lib/npm.js:207:9)
2024-09-09T10:31:34.093Z [err] npm error at async module.exports (/usr/local/lib/node_modules/npm/lib/cli/entry.js:74:5) {
2024-09-09T10:31:34.093Z [err] npm error errno: -13,
2024-09-09T10:31:34.093Z [err] npm error code: 'EACCES',
2024-09-09T10:31:34.093Z [err] npm error syscall: 'rename',
2024-09-09T10:31:34.093Z [err] npm error path: '/data/node_modules/@openp4nr/modbus-serial',
2024-09-09T10:31:34.093Z [err] npm error dest: '/data/node_modules/@openp4nr/.modbus-serial-S75OrEXy'
2024-09-09T10:31:34.093Z [err] npm error }
2024-09-09T10:31:34.093Z [err] npm error
2024-09-09T10:31:34.093Z [err] npm error The operation was rejected by your operating system.
2024-09-09T10:31:34.093Z [err] npm error It is likely you do not have the permissions to access this file as the current user
2024-09-09T10:31:34.093Z [err] npm error
2024-09-09T10:31:34.093Z [err] npm error If you believe this might be a permissions issue, please double-check the
2024-09-09T10:31:34.093Z [err] npm error permissions of the file and its containing directories, or try running
2024-09-09T10:31:34.093Z [err] npm error the command again as root/Administrator.
2024-09-09T10:31:34.096Z [err] npm error A complete log of this run can be found in: /data/.npm/_logs/2024-09-09T10_31_28_982Z-debug-0.log
2024-09-09T10:31:34.103Z rc=243

```

Then I tried setting all rights multiple places in Dockerfile. Which seems to have effect on the parent folder.

But taking this specific folder in log file from example, I can't rename it and it contains files with more restrictive permissions.

```auto
/data/node_modules/@openp4nr/modbus-serial $ ls -l
total 88
-rw-r--r-- 1 node-red node-red 759 Sep 2 14:26 LICENSE
-rw-r--r-- 1 node-red node-red 6115 Sep 2 14:26 ModbusRTU.d.ts
-rw-r--r-- 1 node-red node-red 9860 Sep 2 14:26 README.md
-rw-r--r-- 1 node-red node-red 2780 Sep 2 14:26 ServerTCP.d.ts
-rw-r--r-- 1 node-red node-red 245 Sep 2 14:26 TestPort.d.ts
drwxrwxrwx 1 root root 512 Sep 3 10:52 apis
drwxrwxrwx 1 root root 512 Sep 3 10:52 examples
-rw-r--r-- 1 node-red node-red 1391 Sep 2 14:26 gulpfile.js
-rw-r--r-- 1 node-red node-red 94 Sep 2 14:26 index.d.ts
-rw-r--r-- 1 node-red node-red 47665 Sep 2 14:26 index.js
drwxrwxrwx 1 root root 512 Sep 3 10:52 node_modules
-rwxr-xr-x 1 node-red node-red 47 Sep 2 14:26 npm-update.sh
-rwxr-xr-x 1 node-red node-red 67 Sep 2 14:26 npm-upgrade.sh
-rw-r--r-- 1 node-red node-red 501 Sep 2 14:26 overwriteRegistryConfigForHotfix.js
-rw-r--r-- 1 node-red node-red 1236 Sep 2 14:26 package.json
drwxrwxrwx 1 root root 512 Sep 3 10:52 ports
drwxrwxrwx 1 root root 512 Sep 3 10:52 servers
drwxrwxrwx 1 root root 512 Sep 3 10:52 test
drwxrwxrwx 1 root root 512 Sep 3 10:52 utils
drwxrwxrwx 1 root root 512 Sep 3 10:52 worker

```

I wonder if the default Dockerfile sets limited permissions for security reasons? But I'd like to let user add new packages from palette anyway.

Now I could log in as root (exec in docker) and overwrite permissions manually. But prefer to solve this permanently in the Dockerfile.

Suggestions?

---

<div class="post-metadata">

**Author:** ![ThingsTinkerer](https://avatars.discourse-cdn.com/v4/letter/t/91b2a8/32.png) [@ThingsTinkerer](https://discourse.nodered.org/u/ThingsTinkerer)\
**Post date:** [9 September 2024 11:29 UTC](https://discourse.nodered.org/t/node-red-error-permission-denied-when-installing-package-from-palette/90812/2 "2024-09-09T11:29:33Z")

</div>

Turns out even root can't rename this folder. And I can't rename it in windows explorer either (used by another program).

---

<div class="post-metadata">

**Author:** ![ThingsTinkerer](https://avatars.discourse-cdn.com/v4/letter/t/91b2a8/32.png) [@ThingsTinkerer](https://discourse.nodered.org/u/ThingsTinkerer)\
**Post date:** [9 September 2024 12:15 UTC](https://discourse.nodered.org/t/node-red-error-permission-denied-when-installing-package-from-palette/90812/3 "2024-09-09T12:15:21Z")

</div>

Not sure what happened but problem was solved by "npm i" on the physical project folder in windows.

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [9 September 2024 14:08 UTC](https://discourse.nodered.org/t/node-red-error-permission-denied-when-installing-package-from-palette/90812/4 "2024-09-09T14:08:10Z")

</div>

I sometimes get the same kind of issues with certain nodes.

Generally, I use the command line to manually delete the folder that starts with the dot and ends in the random string. '/data/node\_modules/@openp4nr/.modbus-serial-S75OrEXy'.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [9 September 2024 16:09 UTC](https://discourse.nodered.org/t/node-red-error-permission-denied-when-installing-package-from-palette/90812/5 "2024-09-09T16:09:14Z")

</div>

> [@ThingsTinkerer](#):
>
> problem was solved by "npm i" on the physical project folder in windows.

I believe that will have installed the nodes using the current windows build tools, rather than the build tools in the container. Possibly that will not be a problem, but I believe that it could be. For example, you might have different versions of the compiler or nodejs installed in docker and in Windows. I don't use Windows though, so I may be wrong.

---

<div class="post-metadata">

**Author:** ![JoW](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jow/32/108217_2.png) [@JoW](https://discourse.nodered.org/u/JoW)\
**Post date:** [11 September 2024 09:44 UTC](https://discourse.nodered.org/t/node-red-error-permission-denied-when-installing-package-from-palette/90812/6 "2024-09-11T09:44:00Z")

</div>

> [@ThingsTinkerer](#):
>
> Not sure what happened but problem was solved by "npm i" on the physical project folder in windows.

Docker on windows or linux variant?  
Node-red container runs as user with uid 1000 in the container. (unless you specify a user in your docker-compose.yml.)  
you should provide a user with the same uid on the docker host, and assign required rights to that user on your bindmounted directory.  
This works on my ubuntu based docker server, no idea how to do that on windows based docker.

---

<div class="post-metadata">

**Author:** ![RvG](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/rvg/32/96613_2.png) [@RvG](https://discourse.nodered.org/u/RvG)\
**Post date:** [12 September 2024 10:33 UTC](https://discourse.nodered.org/t/node-red-error-permission-denied-when-installing-package-from-palette/90812/7 "2024-09-12T10:33:30Z")

</div>

I've seen the related issue, where a few packages could not be removed using the Palette Manager when running Node-RED in Docker Desktop on Windows. This needed npm running on Windows to uninstall the package.

This problem can be avoided by not binding the /data folder to a Windows folder, but instead letting it use a WSL folder. Which might not always be a good option.

---

<div class="post-metadata">

**Author:** ![ThingsTinkerer](https://avatars.discourse-cdn.com/v4/letter/t/91b2a8/32.png) [@ThingsTinkerer](https://discourse.nodered.org/u/ThingsTinkerer)\
**Post date:** [12 September 2024 11:39 UTC](https://discourse.nodered.org/t/node-red-error-permission-denied-when-installing-package-from-palette/90812/8 "2024-09-12T11:39:04Z")

</div>

Thanks all. Yeah probably was some inconsistencies between package.json and packages actually installed in node\_modules. This was docker desktop running on windows. By using npm -i it probably cleaned up and synchronized everything according to package.json, and problem disappeared.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [26 September 2024 11:39 UTC](https://discourse.nodered.org/t/node-red-error-permission-denied-when-installing-package-from-palette/90812/9 "2024-09-26T11:39:43Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
