[{"data":1,"prerenderedAt":567},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fmigration\u002Fintroduction\u002F":3,"docs-nav":112},{"id":4,"title":5,"body":6,"description":16,"extension":99,"layout":100,"meta":101,"navGroup":100,"navGroupOrder":100,"navOrder":102,"navTitle":103,"navigation":104,"originalPath":105,"path":106,"redirect":100,"seo":107,"stem":108,"updated":109,"version":110,"__hash__":111},"docs\u002Fdocs\u002Fmigration\u002Fintroduction.md","Migrating a Node-RED application to FlowFuse",{"type":7,"value":8,"toc":87},"minimark",[9,13,17,20,23,26,31,40,44,54,58,61,65,70],[10,11,5],"h1",{"id":12},"migrating-a-node-red-application-to-flowfuse",[14,15,16],"p",{},"This guide will help you to move existing Node-RED instances into\nFlowFuse.",[14,18,19],{},"When migrating your Node-RED instances into FlowFuse, you'll export\nthe flows, credentials, and environment variables.",[14,21,22],{},"Before you start ensure you can log in to FlowFuse Cloud or your own FlowFuse\nserver, and that you have created your Node-RED instance that you wish to move into FlowFuse.",[14,24,25],{},"If you have not yet created a Node-RED instance that you want to manage within FlowFuse, you can create the new instance within FlowFuse directly, and the following instructions will not apply in your case.",[27,28,30],"h2",{"id":29},"migrating-the-flows-and-credentials","Migrating the flows and credentials",[14,32,33,34,39],{},"Install the Node-RED tools plugin as explained\n",[35,36,38],"a",{"href":37},"\u002Fdocs\u002Fmigration\u002Fnode-red-tools","in the documentation",". After you created a snapshot for\nthe Node-RED instance you wish to move, you'll have copied over the flows and credentials.",[27,41,43],{"id":42},"migrating-environment-variables","Migrating Environment Variables",[14,45,46,47,53],{},"You can use ",[35,48,52],{"href":49,"rel":50},"https:\u002F\u002Fflows.nodered.org\u002Fflow\u002F8ebfe9ae218aa5105e7da13db14ac272",[51],"nofollow","this flow","\nto dump a list of your environment variables into the debug window. For each\nvariable needed for the flow should be added on FlowFuse under\nInstance > Settings > Environment tabs.",[27,55,57],{"id":56},"starting-the-snapshot","Starting the snapshot",[14,59,60],{},"Under the snapshots tab, click 'Restore Snapshot' in the kebab menu. The migrated flows\nwill now be started with the modules installed.",[27,62,64],{"id":63},"limitations","Limitations",[66,67,69],"h3",{"id":68},"static-files","Static Files",[14,71,72,73,77,78,81,82,86],{},"Check your ",[74,75,76],"code",{},"settings.js"," file to see if ",[74,79,80],{},"httpStatic"," has been set, if so then\ncheck for any files in this path. The files in this path need to be manually\nmigrated to ",[35,83,85],{"href":84},"\u002Fdocs\u002Fuser\u002Fstatic-asset-service\u002F","FlowFuse's Static Assets"," service.",{"title":88,"searchDepth":89,"depth":89,"links":90},"",4,[91,93,94,95],{"id":29,"depth":92,"text":30},2,{"id":42,"depth":92,"text":43},{"id":56,"depth":92,"text":57},{"id":63,"depth":92,"text":64,"children":96},[97],{"id":68,"depth":98,"text":69},3,"md",null,{},1,"Introduction",true,"migration\u002Fintroduction.md","\u002Fdocs\u002Fmigration\u002Fintroduction",{"title":5,"description":16},"docs\u002Fmigration\u002Fintroduction","2025-01-21 12:44:00 -0500","2.33.2","gMITz8uovbOeXC9KEYF9i6K639mBVawug66ymPZEzOs",[113,120,139,151],{"name":114,"order":102,"children":115},"FlowFuse User Manuals",[116],{"title":117,"path":118,"group":114,"groupOrder":102,"order":92,"children":119},"FlowFuse API","\u002Fdocs\u002Fapi",[],{"name":121,"order":89,"children":122},"FlowFuse Self-Hosted",[123,127],{"title":124,"path":125,"group":121,"groupOrder":89,"order":102,"children":126},"Quick Start","\u002Fdocs\u002Fquick-start",[],{"title":128,"path":129,"group":121,"groupOrder":89,"order":98,"children":130},"Upgrading FlowFuse","\u002Fdocs\u002Fupgrade",[131,135],{"title":132,"path":133,"order":100,"children":134},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":136,"path":137,"order":100,"children":138},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"name":140,"order":141,"children":142},"Support",5,[143,147],{"title":144,"path":145,"group":140,"groupOrder":141,"order":98,"children":146},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":148,"path":149,"group":140,"groupOrder":141,"order":100,"children":150},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":152,"order":100,"children":153},"Other",[154,202,213,292,341,360,434,443],{"title":155,"path":156,"order":100,"children":157},"admin","\u002Fdocs\u002Fadmin",[158,162,174,182,186,190,194,198],{"title":159,"path":160,"order":102,"children":161},"Administering FlowFuse","\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":163,"path":164,"order":100,"children":165},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[166,170],{"title":167,"path":168,"order":100,"children":169},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":171,"path":172,"order":100,"children":173},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":175,"path":176,"order":100,"children":177},"hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[178],{"title":179,"path":180,"order":100,"children":181},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":183,"path":184,"order":100,"children":185},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":187,"path":188,"order":100,"children":189},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":191,"path":192,"order":100,"children":193},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":195,"path":196,"order":100,"children":197},"Telemetry","\u002Fdocs\u002Fadmin\u002Ftelemetry",[],{"title":199,"path":200,"order":100,"children":201},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"title":203,"path":204,"order":100,"children":205},"cloud","\u002Fdocs\u002Fcloud",[206,209],{"title":103,"path":207,"order":102,"children":208},"\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":210,"path":211,"order":100,"children":212},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"title":214,"path":215,"order":100,"children":216},"contribute","\u002Fdocs\u002Fcontribute",[217,220,224,228,232,236,240,248,284,288],{"title":103,"path":218,"order":102,"children":219},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":221,"path":222,"order":100,"children":223},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":225,"path":226,"order":100,"children":227},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":229,"path":230,"order":100,"children":231},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":233,"path":234,"order":100,"children":235},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":237,"path":238,"order":100,"children":239},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":241,"path":242,"order":100,"children":243},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[244],{"title":245,"path":246,"order":100,"children":247},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":249,"path":250,"order":100,"children":251},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[252,256,260,264,268,272,276,280],{"title":253,"path":254,"order":100,"children":255},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":257,"path":258,"order":100,"children":259},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":261,"path":262,"order":100,"children":263},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":265,"path":266,"order":100,"children":267},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":269,"path":270,"order":100,"children":271},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":273,"path":274,"order":100,"children":275},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":277,"path":278,"order":100,"children":279},"User Login Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",[],{"title":281,"path":282,"order":100,"children":283},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":285,"path":286,"order":100,"children":287},"Team Broker","\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":289,"path":290,"order":100,"children":291},"Working with Feature Flags","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",[],{"title":293,"path":294,"order":100,"children":295},"device-agent","\u002Fdocs\u002Fdevice-agent",[296,300,303,307,311,316],{"title":297,"path":298,"order":102,"children":299},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":124,"path":301,"order":92,"children":302},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":304,"path":305,"order":89,"children":306},"Register your Remote Instance","\u002Fdocs\u002Fdevice-agent\u002Fregister",[],{"title":308,"path":309,"order":141,"children":310},"Running the Agent","\u002Fdocs\u002Fdevice-agent\u002Frunning",[],{"title":312,"path":313,"order":314,"children":315},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",6,[],{"title":317,"path":318,"order":100,"children":319},"install","\u002Fdocs\u002Fdevice-agent\u002Finstall",[320,325,329,333,337],{"title":321,"path":322,"group":323,"order":102,"children":324},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview","DeviceAgentInstallation",[],{"title":326,"path":327,"group":323,"order":92,"children":328},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":330,"path":331,"group":323,"order":98,"children":332},"Docker Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",[],{"title":334,"path":335,"group":323,"order":89,"children":336},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":338,"path":339,"group":323,"order":141,"children":340},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":342,"path":343,"order":100,"children":344},"hardware","\u002Fdocs\u002Fhardware",[345,348,352,356],{"title":321,"path":346,"order":102,"children":347},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":349,"path":350,"order":92,"children":351},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":353,"path":354,"order":98,"children":355},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":357,"path":358,"order":98,"children":359},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"title":317,"path":361,"order":100,"children":362},"\u002Fdocs\u002Finstall",[363,366,370,374,394,398,402,406],{"title":321,"path":364,"order":102,"children":365},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":367,"path":368,"order":100,"children":369},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":371,"path":372,"order":100,"children":373},"DNS Setup","\u002Fdocs\u002Finstall\u002Fdns-setup",[],{"title":375,"path":376,"order":100,"children":377},"Docker install","\u002Fdocs\u002Finstall\u002Fdocker",[378,382,386,390],{"title":379,"path":380,"order":100,"children":381},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":383,"path":384,"order":100,"children":385},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":387,"path":388,"order":100,"children":389},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":391,"path":392,"order":100,"children":393},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":395,"path":396,"order":100,"children":397},"Email configuration","\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":399,"path":400,"order":100,"children":401},"First Run Setup","\u002Fdocs\u002Finstall\u002Ffirst-run",[],{"title":403,"path":404,"order":100,"children":405},"FlowFuse File Storage","\u002Fdocs\u002Finstall\u002Ffile-storage",[],{"title":407,"path":408,"order":100,"children":409},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[410,414,418,422,426,430],{"title":411,"path":412,"order":100,"children":413},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":415,"path":416,"order":100,"children":417},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":419,"path":420,"order":100,"children":421},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":423,"path":424,"order":100,"children":425},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":427,"path":428,"order":100,"children":429},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":431,"path":432,"order":100,"children":433},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":435,"path":436,"order":100,"children":437},"migration","\u002Fdocs\u002Fmigration",[438,440],{"title":103,"path":106,"order":102,"children":439},[],{"title":441,"path":37,"order":100,"children":442},"Node-RED Tools plugin",[],{"title":444,"path":445,"order":100,"children":446},"user","\u002Fdocs\u002Fuser",[447,451,455,459,463,468,472,476,480,484,488,492,504,508,512,516,520,524,528,532,536,540,544,548,552,556,559,563],{"title":448,"path":449,"order":102,"children":450},"Getting Started","\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":452,"path":453,"order":102,"children":454},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":456,"path":457,"order":92,"children":458},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":460,"path":461,"order":92,"children":462},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":464,"path":465,"order":466,"children":467},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",10,[],{"title":469,"path":470,"order":100,"children":471},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":473,"path":474,"order":100,"children":475},"Custom Hostnames","\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":477,"path":478,"order":100,"children":479},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":481,"path":482,"order":100,"children":483},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":485,"path":486,"order":100,"children":487},"DevOps Pipelines","\u002Fdocs\u002Fuser\u002Fdevops-pipelines",[],{"title":489,"path":490,"order":100,"children":491},"Environment Variables","\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":493,"path":494,"order":100,"children":495},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[496,500],{"title":497,"path":498,"order":100,"children":499},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":501,"path":502,"order":100,"children":503},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":505,"path":506,"order":100,"children":507},"FlowFuse File Nodes","\u002Fdocs\u002Fuser\u002Ffilenodes",[],{"title":509,"path":510,"order":100,"children":511},"FlowFuse MQTT Nodes","\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":513,"path":514,"order":100,"children":515},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":517,"path":518,"order":100,"children":519},"FlowFuse Project Nodes","\u002Fdocs\u002Fuser\u002Fprojectnodes",[],{"title":521,"path":522,"order":100,"children":523},"FlowFuse Tables","\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":525,"path":526,"order":100,"children":527},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":529,"path":530,"order":100,"children":531},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":533,"path":534,"order":100,"children":535},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":537,"path":538,"order":100,"children":539},"Instance Settings","\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":541,"path":542,"order":100,"children":543},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":545,"path":546,"order":100,"children":547},"Role-Based Access Control","\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":549,"path":550,"order":100,"children":551},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":553,"path":554,"order":100,"children":555},"Snapshots","\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":285,"path":557,"order":100,"children":558},"\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":560,"path":561,"order":100,"children":562},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":564,"path":565,"order":100,"children":566},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],1786546042420]