# Failure updating Flowfuse dashboard

**URL:** <https://discourse.nodered.org/t/failure-updating-flowfuse-dashboard/99950>\
**Category:** Dashboard\
**Tags:** dashboard-2\
**Created:** [14 December 2025 23:56 UTC](https://discourse.nodered.org/t/failure-updating-flowfuse-dashboard/99950 "2025-12-14T23:56:13Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [14 December 2025 23:56 UTC](https://discourse.nodered.org/t/failure-updating-flowfuse-dashboard/99950/1 "2025-12-14T23:56:13Z")

</div>

I have successfully updated Dashboard 2 to 1.30.0 on a Pi running NR v4.1.0.

On another Pi which runs v5.0.0-beta.1 though, using the updates available button I get a warning

```auto
npm error code EACCES
npm error syscall mkdir
npm error path /home/pi/.node-red/node_modules/@node-rs/bcrypt-linux-arm64-musl
npm error errno -13
npm error Error: EACCES: permission denied, mkdir '/home/pi/.node-red/node_modules/@node-rs/bcrypt-linux-arm64-musl'
npm error at async mkdir (node:internal/fs/promises:861:10)
npm error at async /usr/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:576:20
etc

```

and error

```auto
Error: Install failed
    at /usr/lib/node_modules/node-red/node_modules/@node-red/registry/lib/installer.js:290:25
    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)

```

Could this be because I installed the beta using sudo npm install ... ?

---

<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:** [15 December 2025 01:48 UTC](https://discourse.nodered.org/t/failure-updating-flowfuse-dashboard/99950/2 "2025-12-15T01:48:14Z")

</div>

The first issue looks like it might be sudo related, not sure about the 2nd.

---

<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:** [15 December 2025 08:59 UTC](https://discourse.nodered.org/t/failure-updating-flowfuse-dashboard/99950/3 "2025-12-15T08:59:32Z")

</div>

Perhaps you used `sudo npm`, but forgot the `-g`, in which case you will now have files owned by root in your .node-red folder. You can sort that by going into your .node-red folder and running  
`sudo chown -R pi:pi .`  
Note the dot on the end. That will set the ownership of all files there back to user pi. That should be the correct user as I see you are under the /home/pi folder.

---

<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:** [15 December 2025 09:10 UTC](https://discourse.nodered.org/t/failure-updating-flowfuse-dashboard/99950/4 "2025-12-15T09:10:23Z")

</div>

> [@Colin](#):
>
> sudo chown -R pi:pi .

And just to reinforce that. This command should always be safe to run.

Of course, if not using a Pi, change the `pi:pi` to whatever user:group you are using.

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [15 December 2025 09:23 UTC](https://discourse.nodered.org/t/failure-updating-flowfuse-dashboard/99950/5 "2025-12-15T09:23:03Z")

</div>

Yes there were indeed shedloads of root owned files.

When I installed v5 beta I know I omitted --unsafe-perm since it gives a deprecation warning. Must have missed the -g flag too.

Thanks!

---

<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:** [15 December 2025 09:37 UTC](https://discourse.nodered.org/t/failure-updating-flowfuse-dashboard/99950/6 "2025-12-15T09:37:31Z")

</div>

If you missed off the -g you may have installed node-red locally into your .node-red folder, which you probably didn't want to do. Check in package.json and see whether node-red appears in the `dependencies` section. It shouldn't. If it does then, from the .node-red folder, run  
`npm remove node-red`  
which will just remove the locally installed one. Then you can run the node red beta install again, this time remembering the -g.

---

<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:** [15 December 2025 12:10 UTC](https://discourse.nodered.org/t/failure-updating-flowfuse-dashboard/99950/7 "2025-12-15T12:10:18Z")

</div>

> [@jbudd](#):
>
> Must have missed the -g flag too.

You don't want to install node-red beta globally unless you have a spare device not running the current version.

To run both in parallel, install one or both _locally_. I always do this anyway for all my installs since it is the more "node.js way" to do things. That is what my alternate installer is about. It creates a new folder (or uses an existing one) to install node-red and creates a `data` sub-folder and an `npm start` script that directs the user-dir to the data sub-folder. That way, I know for sure that everything is completely isolated.

---

<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:** [29 December 2025 12:10 UTC](https://discourse.nodered.org/t/failure-updating-flowfuse-dashboard/99950/8 "2025-12-29T12:10:48Z")

</div>

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