[{"data":1,"prerenderedAt":593},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fuser\u002Ffilenodes\u002F":3,"docs-nav":135},{"id":4,"title":5,"body":6,"description":16,"extension":124,"layout":125,"meta":126,"navGroup":125,"navGroupOrder":125,"navOrder":125,"navTitle":5,"navigation":127,"originalPath":128,"path":129,"redirect":125,"seo":130,"stem":131,"updated":132,"version":133,"__hash__":134},"docs\u002Fdocs\u002Fuser\u002Ffilenodes.md","FlowFuse File Nodes",{"type":7,"value":8,"toc":115},"minimark",[9,13,17,20,37,42,45,48,55,69,73,80,84,87,94,101,108,112],[10,11,5],"h1",{"id":12},"flowfuse-file-nodes",[14,15,16],"p",{},"Node-RED instances running within FlowFuse Cloud with Launcher version before 2.7.0\ninclude a modified set of nodes that make it possible to store files safely regardless of\nthe environment.\nCloud based instances can read and write to persistent storage using these nodes.\nEdge devices will store files on its local filesystem.",[14,18,19],{},"There are two nodes in the File Node collection:",[21,22,23,31],"ul",{},[24,25,26,30],"li",{},[27,28,29],"code",{},"file"," - A file node for writing to persistent storage",[24,32,33,36],{},[27,34,35],{},"file in"," - A file node for reading from persistent storage",[38,39,41],"h2",{"id":40},"flowfuse-270-and-later","FlowFuse 2.7.0 and later",[14,43,44],{},"With the release of FlowFuse v2.7.0 a new Persistent Storage feature was enabled.",[14,46,47],{},"This allows the default Node-RED File Nodes to work safely by mounting a volume to\nensure files are persisted across all restarts of the Instance.",[14,49,50,51,54],{},"On Docker, Kubernetes self hosted instances and FlowFuse Cloud the volume is mounted\non ",[27,52,53],{},"\u002Fdata\u002Fstorage",". The Current Working Directory for the Node-RED process is set to\nthis directory, this means that if you do not specify a path in a node it will created\nor read from this directory.",[14,56,57,58,61,62,65,66],{},"For LocalFS builds a ",[27,59,60],{},"storage"," directory is created in the Instance User Directory,\nthis means that if FlowFuse is installed in ",[27,63,64],{},"\u002Fopt\u002Fflowfuse"," the directory will be at\n",[27,67,68],{},"\u002Fopt\u002Fflowfuse\u002Fvar\u002Fprojects\u002F\u003Cproject-id>\u002Fstorage",[38,70,72],{"id":71},"templates","Templates",[14,74,75,76,79],{},"On FlowFuse Cloud before v2.7.0 the Default Template had an explicit exclusion for\n",[27,77,78],{},"10-file.js"," to ensure that the replacement FlowFuse File Nodes were loaded. This\nTemplate was renamed to \"Default v1\" to differentiate it. If your instance is using\nthis version of the template then it will need modifying to allow access to the\ndefault Node-RED File Nodes to make use of the new Persistent Storage. Please\ncontact FlowFuse support to arrange this, they will also be able to migrate any\nfiles stored in the old service.",[38,81,83],{"id":82},"usage","Usage",[14,85,86],{},"Simply drop the file nodes into your flows as you would with the regular file nodes in Node-RED.",[14,88,89,93],{},[90,91,92],"strong",{},"Example:"," Write string to a file, then read from the file",[95,96],"iframe",{"width":97,"height":97,"src":98,"allow":99,"style":100},"100%","https:\u002F\u002Fflows.nodered.org\u002Fflow\u002F7f93fbbf67f9dc4e81bfbeb2b921881e\u002Fshare","clipboard-read; clipboard-write","border: none;",[14,102,103,104,107],{},"There are more helpful built-in examples on the ",[90,105,106],{},"Import Examples"," dialog in Node-RED.",[38,109,111],{"id":110},"deployment-considerations","Deployment Considerations",[14,113,114],{},"When a snapshot is deployed to a device, the original Node-RED file nodes are used and\nany files will be stored on the device's local filesystem.",{"title":116,"searchDepth":117,"depth":117,"links":118},"",4,[119,121,122,123],{"id":40,"depth":120,"text":41},2,{"id":71,"depth":120,"text":72},{"id":82,"depth":120,"text":83},{"id":110,"depth":120,"text":111},"md",null,{},true,"user\u002Ffilenodes.md","\u002Fdocs\u002Fuser\u002Ffilenodes",{"title":5,"description":16},"docs\u002Fuser\u002Ffilenodes","2024-09-18 09:58:42 +0100","2.33.2","Yv1CZepLaiQYVtl2HxH8P6boHvpnU-ISYn6s-xb0Ekc",[136,144,164,176],{"name":137,"order":138,"children":139},"FlowFuse User Manuals",1,[140],{"title":141,"path":142,"group":137,"groupOrder":138,"order":120,"children":143},"FlowFuse API","\u002Fdocs\u002Fapi",[],{"name":145,"order":117,"children":146},"FlowFuse Self-Hosted",[147,151],{"title":148,"path":149,"group":145,"groupOrder":117,"order":138,"children":150},"Quick Start","\u002Fdocs\u002Fquick-start",[],{"title":152,"path":153,"group":145,"groupOrder":117,"order":154,"children":155},"Upgrading FlowFuse","\u002Fdocs\u002Fupgrade",3,[156,160],{"title":157,"path":158,"order":125,"children":159},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":161,"path":162,"order":125,"children":163},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"name":165,"order":166,"children":167},"Support",5,[168,172],{"title":169,"path":170,"group":165,"groupOrder":166,"order":154,"children":171},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":173,"path":174,"group":165,"groupOrder":166,"order":125,"children":175},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":177,"order":125,"children":178},"Other",[179,227,239,318,367,386,460,471],{"title":180,"path":181,"order":125,"children":182},"admin","\u002Fdocs\u002Fadmin",[183,187,199,207,211,215,219,223],{"title":184,"path":185,"order":138,"children":186},"Administering FlowFuse","\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":188,"path":189,"order":125,"children":190},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[191,195],{"title":192,"path":193,"order":125,"children":194},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":196,"path":197,"order":125,"children":198},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":200,"path":201,"order":125,"children":202},"hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[203],{"title":204,"path":205,"order":125,"children":206},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":208,"path":209,"order":125,"children":210},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":212,"path":213,"order":125,"children":214},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":216,"path":217,"order":125,"children":218},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":220,"path":221,"order":125,"children":222},"Telemetry","\u002Fdocs\u002Fadmin\u002Ftelemetry",[],{"title":224,"path":225,"order":125,"children":226},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"title":228,"path":229,"order":125,"children":230},"cloud","\u002Fdocs\u002Fcloud",[231,235],{"title":232,"path":233,"order":138,"children":234},"Introduction","\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":236,"path":237,"order":125,"children":238},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"title":240,"path":241,"order":125,"children":242},"contribute","\u002Fdocs\u002Fcontribute",[243,246,250,254,258,262,266,274,310,314],{"title":232,"path":244,"order":138,"children":245},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":247,"path":248,"order":125,"children":249},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":251,"path":252,"order":125,"children":253},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":255,"path":256,"order":125,"children":257},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":259,"path":260,"order":125,"children":261},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":263,"path":264,"order":125,"children":265},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":267,"path":268,"order":125,"children":269},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[270],{"title":271,"path":272,"order":125,"children":273},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":275,"path":276,"order":125,"children":277},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[278,282,286,290,294,298,302,306],{"title":279,"path":280,"order":125,"children":281},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":283,"path":284,"order":125,"children":285},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":287,"path":288,"order":125,"children":289},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":291,"path":292,"order":125,"children":293},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":295,"path":296,"order":125,"children":297},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":299,"path":300,"order":125,"children":301},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":303,"path":304,"order":125,"children":305},"User Login Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",[],{"title":307,"path":308,"order":125,"children":309},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":311,"path":312,"order":125,"children":313},"Team Broker","\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":315,"path":316,"order":125,"children":317},"Working with Feature Flags","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",[],{"title":319,"path":320,"order":125,"children":321},"device-agent","\u002Fdocs\u002Fdevice-agent",[322,326,329,333,337,342],{"title":323,"path":324,"order":138,"children":325},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":148,"path":327,"order":120,"children":328},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":330,"path":331,"order":117,"children":332},"Register your Remote Instance","\u002Fdocs\u002Fdevice-agent\u002Fregister",[],{"title":334,"path":335,"order":166,"children":336},"Running the Agent","\u002Fdocs\u002Fdevice-agent\u002Frunning",[],{"title":338,"path":339,"order":340,"children":341},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",6,[],{"title":343,"path":344,"order":125,"children":345},"install","\u002Fdocs\u002Fdevice-agent\u002Finstall",[346,351,355,359,363],{"title":347,"path":348,"group":349,"order":138,"children":350},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview","DeviceAgentInstallation",[],{"title":352,"path":353,"group":349,"order":120,"children":354},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":356,"path":357,"group":349,"order":154,"children":358},"Docker Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",[],{"title":360,"path":361,"group":349,"order":117,"children":362},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":364,"path":365,"group":349,"order":166,"children":366},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":368,"path":369,"order":125,"children":370},"hardware","\u002Fdocs\u002Fhardware",[371,374,378,382],{"title":347,"path":372,"order":138,"children":373},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":375,"path":376,"order":120,"children":377},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":379,"path":380,"order":154,"children":381},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":383,"path":384,"order":154,"children":385},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"title":343,"path":387,"order":125,"children":388},"\u002Fdocs\u002Finstall",[389,392,396,400,420,424,428,432],{"title":347,"path":390,"order":138,"children":391},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":393,"path":394,"order":125,"children":395},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":397,"path":398,"order":125,"children":399},"DNS Setup","\u002Fdocs\u002Finstall\u002Fdns-setup",[],{"title":401,"path":402,"order":125,"children":403},"Docker install","\u002Fdocs\u002Finstall\u002Fdocker",[404,408,412,416],{"title":405,"path":406,"order":125,"children":407},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":409,"path":410,"order":125,"children":411},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":413,"path":414,"order":125,"children":415},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":417,"path":418,"order":125,"children":419},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":421,"path":422,"order":125,"children":423},"Email configuration","\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":425,"path":426,"order":125,"children":427},"First Run Setup","\u002Fdocs\u002Finstall\u002Ffirst-run",[],{"title":429,"path":430,"order":125,"children":431},"FlowFuse File Storage","\u002Fdocs\u002Finstall\u002Ffile-storage",[],{"title":433,"path":434,"order":125,"children":435},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[436,440,444,448,452,456],{"title":437,"path":438,"order":125,"children":439},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":441,"path":442,"order":125,"children":443},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":445,"path":446,"order":125,"children":447},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":449,"path":450,"order":125,"children":451},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":453,"path":454,"order":125,"children":455},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":457,"path":458,"order":125,"children":459},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":461,"path":462,"order":125,"children":463},"migration","\u002Fdocs\u002Fmigration",[464,467],{"title":232,"path":465,"order":138,"children":466},"\u002Fdocs\u002Fmigration\u002Fintroduction",[],{"title":468,"path":469,"order":125,"children":470},"Node-RED Tools plugin","\u002Fdocs\u002Fmigration\u002Fnode-red-tools",[],{"title":472,"path":473,"order":125,"children":474},"user","\u002Fdocs\u002Fuser",[475,479,483,487,491,496,500,504,508,512,516,520,532,534,538,542,546,550,554,558,562,566,570,574,578,582,585,589],{"title":476,"path":477,"order":138,"children":478},"Getting Started","\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":480,"path":481,"order":138,"children":482},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":484,"path":485,"order":120,"children":486},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":488,"path":489,"order":120,"children":490},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":492,"path":493,"order":494,"children":495},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",10,[],{"title":497,"path":498,"order":125,"children":499},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":501,"path":502,"order":125,"children":503},"Custom Hostnames","\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":505,"path":506,"order":125,"children":507},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":509,"path":510,"order":125,"children":511},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":513,"path":514,"order":125,"children":515},"DevOps Pipelines","\u002Fdocs\u002Fuser\u002Fdevops-pipelines",[],{"title":517,"path":518,"order":125,"children":519},"Environment Variables","\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":521,"path":522,"order":125,"children":523},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[524,528],{"title":525,"path":526,"order":125,"children":527},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":529,"path":530,"order":125,"children":531},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":5,"path":129,"order":125,"children":533},[],{"title":535,"path":536,"order":125,"children":537},"FlowFuse MQTT Nodes","\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":539,"path":540,"order":125,"children":541},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":543,"path":544,"order":125,"children":545},"FlowFuse Project Nodes","\u002Fdocs\u002Fuser\u002Fprojectnodes",[],{"title":547,"path":548,"order":125,"children":549},"FlowFuse Tables","\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":551,"path":552,"order":125,"children":553},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":555,"path":556,"order":125,"children":557},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":559,"path":560,"order":125,"children":561},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":563,"path":564,"order":125,"children":565},"Instance Settings","\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":567,"path":568,"order":125,"children":569},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":571,"path":572,"order":125,"children":573},"Role-Based Access Control","\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":575,"path":576,"order":125,"children":577},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":579,"path":580,"order":125,"children":581},"Snapshots","\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":311,"path":583,"order":125,"children":584},"\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":586,"path":587,"order":125,"children":588},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":590,"path":591,"order":125,"children":592},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],1786546044549]