# ContextStorage: saving to USB SSD

**URL:** <https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078>\
**Category:** General\
**Created:** [22 November 2022 21:34 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078 "2022-11-22T21:34:16Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Switchblade2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/switchblade2/32/60655_2.png) [@Switchblade2](https://discourse.nodered.org/u/Switchblade2)\
**Post date:** [22 November 2022 21:34 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/1 "2022-11-22T21:34:16Z")

</div>

Running Node Red on a Raspberry Pi 4 with a USB SDD for file storage.

I'm trying to set up ContextStorage to save variable to a USB SDD to avoid frequent writing to the SD card. I've got it to work, variable are saved to the USB SSD but Node Red no longer start on Reboot and I get a warning when starting it from a Command window so I guess something is wrong.

**settings.js**  
contextStorage: {  
default: "memoryOnly",  
memoryOnly: { module: "memory" },  
file: { module: "localfilesystem",  
config: {  
dir: "/media/pi/usb1/",  
base: "context" }  
},  
},

## **Start log** 22 Nov 21:52:11 - [info] Node-RED version: v3.0.2 22 Nov 21:52:11 - [info] Node.js version: v16.18.0 22 Nov 21:52:11 - [info] Linux 5.15.76-v7l+ arm LE 22 Nov 21:52:13 - [info] Loading palette nodes 22 Nov 21:52:15 - [info] Dashboard version 3.2.0 started at /ui **22 Nov 21:52:16 - [info] Settings file : /home/pi/.node-red/settings.js** **22 Nov 21:52:16 - [info] Context store : 'memoryOnly' [module=memory]** **22 Nov 21:52:16 - [info] Context store : 'file' [module=localfilesystem]** 22 Nov 21:52:16 - [info] User directory : /home/pi/.node-red 22 Nov 21:52:16 - [warn] Projects disabled : editorTheme.projects.enabled=false 22 Nov 21:52:16 - [info] Flows file : /home/pi/.node-red/flows.json 22 Nov 21:52:16 - [info] Server now running at [http://127.0.0.1:1880/](http://127.0.0.1:1880/)

22 Nov 21:52:16 - [info] Starting flows  
**22 Nov 21:52:16 - [warn] Unknown context store 'memory' specified. Using default store.**  
22 Nov 21:52:17 - [info] Started flows  
22 Nov 21:52:17 - [info] [mqtt-broker:Local server] Connected to broker: mqtt://192.168.1.20:1883

Are my setting.js entries correct?

---

<div class="post-metadata">

**Author:** ![zenofmud](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/zenofmud/32/316_2.png) [@zenofmud](https://discourse.nodered.org/u/zenofmud)\
**Post date:** [22 November 2022 21:55 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/2 "2022-11-22T21:55:24Z")

</div>

Read this page of the documentation and then look at your settings:  
[https://nodered.org/docs/user-guide/context](https://nodered.org/docs/user-guide/context)

---

<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:** [22 November 2022 22:07 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/3 "2022-11-22T22:07:11Z")

</div>

> [@Switchblade2](#):
>
> Node Red no longer start on Reboot

If you reboot then immediately run `node-red-log` what do you see?

---

<div class="post-metadata">

**Author:** ![zenofmud](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/zenofmud/32/316_2.png) [@zenofmud](https://discourse.nodered.org/u/zenofmud)\
**Post date:** [23 November 2022 01:09 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/4 "2022-11-23T01:09:09Z")

</div>

I think your entry in settings.js should look like this"

```auto
contextStorage: {
	default: { 
		module: "memory" },
		file: { module: "localfilesystem",
				config: {
					dir: "/media/pi/usb1/",
					base: "context" 
				}
		}
	}
},

```

---

<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:** [23 November 2022 08:33 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/5 "2022-11-23T08:33:32Z")

</div>

@Switchblade2 sort out settings.js as @zenofmud suggests, then if it still doesn't run on boot, post the log as I suggested.

---

<div class="post-metadata">

**Author:** ![Switchblade2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/switchblade2/32/60655_2.png) [@Switchblade2](https://discourse.nodered.org/u/Switchblade2)\
**Post date:** [23 November 2022 10:21 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/6 "2022-11-23T10:21:25Z")

</div>

Thanks for your help on this.

I've made the settings.js changes as suggested (removing one } to make it work).

node-red-log after reboot gives

```auto
Started Node-RED graphical event wiring tool.
23 Nov 10:41:58 - [info]
Welcome to Node-RED
===================
23 Nov 10:41:58 - [info] Node-RED version: v3.0.2
23 Nov 10:41:58 - [info] Node.js version: v16.18.0
23 Nov 10:41:58 - [info] Linux 5.15.76-v7l+ arm LE
23 Nov 10:42:00 - [info] Loading palette nodes
23 Nov 10:42:05 - [info] Dashboard version 3.2.0 started at /ui
23 Nov 10:42:06 - [info] Settings file : /home/pi/.node-red/settings.js
23 Nov 10:42:06 - [info] Context store : 'memoryOnly' [module=memory]
23 Nov 10:42:06 - [info] Context store : 'file' [module=localfilesystem]
23 Nov 10:42:06 - [error] Failed to start server:
23 Nov 10:42:06 - [error] Error: Error loading context store: Error: EACCES: permission denied, scandir '/media/pi/usb1/context'
    at /usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/context/index.js:180:15
nodered.service: Succeeded.
nodered.service: Consumed 8.138s CPU time.

```

and then node-red-start gives

```auto
Started Node-RED graphical event wiring tool.
23 Nov 10:56:30 - [info]
Welcome to Node-RED
===================
23 Nov 10:56:30 - [info] Node-RED version: v3.0.2
23 Nov 10:56:30 - [info] Node.js version: v16.18.0
23 Nov 10:56:30 - [info] Linux 5.15.76-v7l+ arm LE
23 Nov 10:56:31 - [info] Loading palette nodes
23 Nov 10:56:33 - [info] Dashboard version 3.2.0 started at /ui
23 Nov 10:56:34 - [info] Settings file : /home/pi/.node-red/settings.js
23 Nov 10:56:34 - [info] Context store : 'default' [module=memory]
23 Nov 10:56:34 - [info] Context store : 'file' [module=localfilesystem]
23 Nov 10:56:34 - [info] User directory : /home/pi/.node-red
23 Nov 10:56:34 - [warn] Projects disabled : editorTheme.projects.enabled=false
23 Nov 10:56:34 - [info] Flows file : /home/pi/.node-red/flows.json
23 Nov 10:56:34 - [info] Server now running at http://127.0.0.1:1880/

23 Nov 10:56:34 - [info] Starting flows
23 Nov 10:56:34 - [warn] Unknown context store 'memoryOnly' specified. Using default store.
23 Nov 10:56:34 - [warn] Unknown context store 'memory' specified. Using default store.
23 Nov 10:56:35 - [info] Started flows
23 Nov 10:56:35 - [info] [mqtt-broker:Local server] Connected to broker: mqtt://192.168.1.20:1883             

```

It looks like a permission issue but on the same time once node red is started manually I can read and write to the usb disk.

---

<div class="post-metadata">

**Author:** ![Switchblade2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/switchblade2/32/60655_2.png) [@Switchblade2](https://discourse.nodered.org/u/Switchblade2)\
**Post date:** [23 November 2022 11:53 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/7 "2022-11-23T11:53:47Z")

</div>

I'm normally running the Raspberry without GUI and I see now that Node Red will not start in the Terminal after Reboot.  
But if I start the GUI (startx) and then launch a Terminal window I can start Node Red.  
If I close the GUI and return to Terminal then Node Red keeps working without any issue.

---

<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:** [23 November 2022 12:08 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/8 "2022-11-23T12:08:40Z")

</div>

I think you are mounting the file when you login to the gui. You should be doing it in /etc/fstab so that is available at all times. On my phone, but I think that is the right file.

---

<div class="post-metadata">

**Author:** ![Switchblade2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/switchblade2/32/60655_2.png) [@Switchblade2](https://discourse.nodered.org/u/Switchblade2)\
**Post date:** [23 November 2022 12:22 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/9 "2022-11-23T12:22:22Z")

</div>

Ok, I suspected this and tried to change fstab but could not get it right, I'll read up and make a new try.

---

<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:** [23 November 2022 13:23 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/10 "2022-11-23T13:23:51Z")

</div>

This is what I have in /etc/fstab for a usb disc on one of my Pis  
`UUID=499d9cb2-ecd9-4f64-8fa4-00df680ed271 /media/usbhdd ext4 defaults,nofail 0 0`  
That is formatted as ext4 of course. I do that with all mine. You can get the UUID of the partition by running  
`sudo blkid`  
You have to have a matching partition (/media/usbhdd in my case) already present on your root drive for fstab to mount it at.

---

<div class="post-metadata">

**Author:** ![Switchblade2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/switchblade2/32/60655_2.png) [@Switchblade2](https://discourse.nodered.org/u/Switchblade2)\
**Post date:** [23 November 2022 13:28 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/11 "2022-11-23T13:28:54Z")

</div>

All is working now.  
@Colin & @zenofmud, many thanks for helping me out.

---

<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:** [7 December 2022 13:29 UTC](https://discourse.nodered.org/t/contextstorage-saving-to-usb-ssd/71078/12 "2022-12-07T13:29:04Z")

</div>

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