[{"data":1,"prerenderedAt":1051},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fuser\u002Fdevops-pipelines\u002F":3,"docs-nav":598},{"id":4,"title":5,"body":6,"description":586,"extension":587,"layout":588,"meta":589,"navGroup":588,"navGroupOrder":588,"navOrder":588,"navTitle":5,"navigation":590,"originalPath":591,"path":592,"redirect":588,"seo":593,"stem":594,"updated":595,"version":596,"__hash__":597},"docs\u002Fdocs\u002Fuser\u002Fdevops-pipelines.md","DevOps Pipelines",{"type":7,"value":8,"toc":564},"minimark",[9,13,25,33,36,39,42,47,105,113,117,123,126,139,145,148,151,175,180,183,223,227,233,236,241,261,265,284,288,291,295,298,304,309,315,363,369,373,417,420,472,475,478,509,513,520,523,526,529,533,536,539,543,546,549,555,558],[10,11,5],"h1",{"id":12},"devops-pipelines",[14,15,16,20,21],"p",{},[17,18,19],"strong",{},"Navigation",": ",[22,23,24],"code",{},"Team > Application > Pipelines",[14,26,27],{},[28,29],"img",{"alt":30,"dataZoomable":31,"src":32},"Overview of a DevOps Pipeline in FlowFuse","","\u002Fdocs\u002Fuser\u002Fimages\u002Fui-devops-pipelines.png",[14,34,35],{},"In FlowFuse it is possible to configure a DevOps pipeline for your Node-RED instances.\nDevOps Pipelines allow you to easily deploy from one instance to another, most\ncommonly used for having an unstable\u002Fexperimental \"Development\" instance, and a more stable\n\"Production\" instance.",[14,37,38],{},"The pipeline then allows you to move your full flow and configuration along from \"Development\"\nto \"Production\" once it's ready.",[14,40,41],{},"You can configure this in FlowFuse from the Application screen. Note you will need to have created\nany Instances you wish to include in the Pipeline before being able to add them to a Pipeline.",[43,44,46],"h2",{"id":45},"creating-a-pipeline","Creating a Pipeline",[48,49,50,54,73,76,79,82,85,99,102],"ol",{},[51,52,53],"li",{},"Select the Application you want to configure a Pipeline for.",[51,55,56,57],{},"Ensure an instance is created for each stage you plan to create, e.g. development, QA, and production.\n",[48,58,59,66],{},[51,60,61,62,65],{},"For the instance you want to duplicate go to the ",[17,63,64],{},"Settings"," tab",[51,67,68,69,72],{},"Click ",[17,70,71],{},"Duplicate Instance"," and provide the necessary details",[51,74,75],{},"Select the \"DevOps Pipelines\" tab",[51,77,78],{},"Select \"Add Pipeline\"",[51,80,81],{},"Name your pipeline appropriately (this can be changed later)",[51,83,84],{},"Select \"Add Stage\"",[51,86,87,88,93,94,98],{},"Define your Stage's name, select the ",[89,90,92],"a",{"href":91},"#stage-types","Stage Type"," and select an ",[89,95,97],{"href":96},"#actions","Action",".",[51,100,101],{},"Click \"Add Stage\"",[51,103,104],{},"Repeat 5. - 7. for as many stages as you need.",[14,106,107,108,112],{},"See ",[89,109,111],{"href":110},"#pipeline-stage-details","Pipeline Stage details"," below for more info.",[43,114,116],{"id":115},"running-a-pipeline-stage","Running a Pipeline Stage",[14,118,119],{},[28,120],{"alt":121,"dataZoomable":31,"src":122},"Running a pipeline stage by clicking the play icon on the source stage","\u002Fdocs\u002Fuser\u002Fimages\u002Fui-devops-run.png",[14,124,125],{},"Each stage currently is deployed manually. To do so, click the \"play\" icon on the source stage. In the example above,\nit will push from the \"Development\" stage to the \"Production\" stage.",[14,127,128,131,132,138],{},[17,129,130],{},"Environment Variables"," - When pushing to a next stage, ",[133,134,135],"em",{},[17,136,137],{},"only your environment variable keys\nwill be copied over",". Values must be set on the next Stage's Instance explicitly.",[14,140,141,144],{},[17,142,143],{},"Instance Settings"," - None of your Instance Settings will be copied over (e.g. Editor, Palette or Security Settings).",[14,146,147],{},"This ensures a split between your staging environments.",[43,149,111],{"id":150},"pipeline-stage-details",[152,153,154,157,160,166,172],"ul",{},[51,155,156],{},"Stages of a pipeline are executed from left to right.",[51,158,159],{},"Actionable stages have a play button that will push from that stage to the next stage.",[51,161,162,163,98],{},"Every stage, except the last one, is effectively a source stage that can be pulled ",[133,164,165],{},"from",[51,167,168,169,98],{},"Every stage, except the first one, is a target stage that can be pushed ",[133,170,171],{},"to",[51,173,174],{},"You cannot currently insert a Stage into the middle of a Pipeline, only at the end.",[176,177,179],"h3",{"id":178},"stage-types","Stage Types",[14,181,182],{},"There are four types of stage to chose from:",[48,184,185,194,203,212],{},[51,186,187,193],{},[17,188,189],{},[89,190,192],{"href":191},"\u002Fdocs\u002Fuser\u002Fconcepts#hosted-instance","Instance"," - a single Node-RED instance.",[51,195,196,202],{},[17,197,198],{},[89,199,201],{"href":200},"\u002Fdocs\u002Fuser\u002Fconcepts#remote-instance","Device"," - a single remote instance.",[51,204,205,211],{},[17,206,207],{},[89,208,210],{"href":209},"\u002Fdocs\u002Fuser\u002Fconcepts#device-groups","Device Group"," - a group of remote instances.",[51,213,214,217,218],{},[17,215,216],{},"Git Repository"," - a remote Git repository.\n",[152,219,220],{},[51,221,222],{},"This stage supports GitHub, Azure DevOps, and any other Git server accessible over HTTPS (for example GitLab, Bitbucket, Gitea, or a self-hosted instance).",[176,224,226],{"id":225},"actions","Actions",[14,228,229],{},[28,230],{"alt":231,"dataZoomable":31,"src":232},"Selecting an action for a pipeline stage","\u002Fdocs\u002Fuser\u002Fimages\u002Fui-devops-select-action.png",[14,234,235],{},"The action defines what happens when the stage is deployed.\nThe available actions depend on the stage type selected for the stage.\nThese are listed below.",[237,238,240],"h4",{"id":239},"instance-stage-actions","Instance stage actions",[152,242,243,249,255],{},[51,244,245,248],{},[17,246,247],{},"Create new instance snapshot"," - A new snapshot of the instance will be created and pushed to the next stage.",[51,250,251,254],{},[17,252,253],{},"Use latest instance snapshot"," - The latest existing snapshot of the instance will be pushed to the next stage.",[51,256,257,260],{},[17,258,259],{},"Prompt to select instance snapshot"," - You will be prompted to choose which snapshot to push to the next stage.",[237,262,264],{"id":263},"device-stage-action","Device stage action",[152,266,267,273,279],{},[51,268,269,272],{},[17,270,271],{},"Use active snapshot"," - The active snapshot of the device will be pushed to the next stage.",[51,274,275,278],{},[17,276,277],{},"Use latest device snapshot"," - The latest snapshot of the device will be pushed to the next stage.",[51,280,281,260],{},[17,282,283],{},"Prompt to select device snapshot",[237,285,287],{"id":286},"device-group-stage","Device Group stage",[14,289,290],{},"When a Device Group stage is triggered, it will push the current active snapshot of the group to the next stage.",[237,292,294],{"id":293},"git-repository-stage","Git Repository stage",[14,296,297],{},"Git Repository stages can be used to push and pull snapshots to and from a remote Git repository. FlowFuse supports GitHub, Azure DevOps, and any other Git server that is accessible over HTTPS, for example GitLab, Bitbucket, Gitea, or a self-hosted instance.",[299,300,301],"blockquote",{},[14,302,303],{},"This feature is available to Enterprise tier teams on FlowFuse Cloud, and to Enterprise licensed self-hosted installations from version 2.32 onwards. Support for generic HTTPS Git servers (anything other than GitHub and Azure DevOps) requires version 2.32 or later.",[305,306,308],"h5",{"id":307},"adding-a-git-token","Adding a Git token",[14,310,311,312,98],{},"Before you can create a Git Repository stage, you need to add a token that grants FlowFuse access to your repository. Tokens are managed per team, under ",[22,313,314],{},"Team > Team Settings > Integrations",[48,316,317,328,334,353],{},[51,318,319,320,323,324,327],{},"Go to ",[17,321,322],{},"Team Settings"," and open the ",[17,325,326],{},"Integrations"," tab.",[51,329,330,331,98],{},"In the Git integration section, click ",[17,332,333],{},"Add Token",[51,335,336,337,340,341,344,345,348,349,352],{},"In the ",[17,338,339],{},"Add Git Personal Access Token"," popup, choose the tab that matches your Git server (",[17,342,343],{},"GitHub",", ",[17,346,347],{},"Azure DevOps",", or ",[17,350,351],{},"Other",") and follow the instructions for that provider (below).",[51,354,355,356,359,360,98],{},"Give the token a ",[17,357,358],{},"Name",", complete the required fields, and click ",[17,361,362],{},"Add",[14,364,365],{},[28,366],{"alt":367,"dataZoomable":31,"src":368},"Add Git Personal Access Token popup with tabs for GitHub, Azure DevOps, and Other providers","\u002Fdocs\u002Fuser\u002Fimages\u002Fgeneric-git-provider.png",[370,371,343],"h6",{"id":372},"github",[48,374,375,378,384,391,405,410],{},[51,376,377],{},"Open GitHub Personal Access Tokens Settings.",[51,379,380,381,98],{},"Click on ",[17,382,383],{},"Generate a new token",[51,385,386,387,390],{},"Select the ",[17,388,389],{},"Only select repositories"," option and pick which repositories to grant access to.",[51,392,393,394,397,398,401,402,98],{},"Expand the ",[17,395,396],{},"Repository permissions"," section and ensure the ",[17,399,400],{},"Contents"," option is set to ",[17,403,404],{},"Read and write",[51,406,380,407,98],{},[17,408,409],{},"Generate token",[51,411,412,413,416],{},"This will be the only time GitHub shows you the token value. Copy the token into the ",[17,414,415],{},"Token"," field.",[370,418,347],{"id":419},"azure-devops",[48,421,422,429,436,443,450,461,467],{},[51,423,424,425,428],{},"Open ",[22,426,427],{},"https:\u002F\u002Fdev.azure.com\u002F[org-name]\u002F_usersSettings\u002Ftokens"," to create a new Personal Access Token.",[51,430,431,432,435],{},"Click the ",[17,433,434],{},"+ New Token"," button.",[51,437,438,439,442],{},"Give the token a name and set the ",[17,440,441],{},"Expiry"," date.",[51,444,445,446,449],{},"Select ",[17,447,448],{},"Custom defined"," for the Scopes.",[51,451,452,453,456,457,460],{},"Check ",[17,454,455],{},"Read & Write"," in the ",[17,458,459],{},"Code"," section.",[51,462,463,464,98],{},"Hit ",[17,465,466],{},"Save",[51,468,469,470,416],{},"This will be the only time Azure shows you the token value. Copy the token into the ",[17,471,415],{},[370,473,351],{"id":474},"other",[14,476,477],{},"Use this tab to connect to any Git server (GitLab, Bitbucket, Gitea, or a self-hosted instance) over HTTPS.",[48,479,480,483,490,495],{},[51,481,482],{},"Create a Personal Access Token (or App Password) on your Git server with read & write access to the repository.",[51,484,485,486,489],{},"Enter the ",[17,487,488],{},"Username"," associated with that token.",[51,491,492,493,416],{},"Paste the token value into the ",[17,494,415],{},[51,496,497,500,501,504,505,508],{},[17,498,499],{},"CA Certificate (optional)",": only needed for self-hosted servers that use a private certificate authority. Paste the certificate (in PEM format, including the ",[22,502,503],{},"-----BEGIN CERTIFICATE-----"," and ",[22,506,507],{},"-----END CERTIFICATE-----"," lines) into this field so that FlowFuse can trust the connection. No changes to your infrastructure are required.",[305,510,512],{"id":511},"configuring-the-stage","Configuring the stage",[14,514,515,516,519],{},"When adding a Git Repository stage, select the token you created and enter the repository URL (for example ",[22,517,518],{},"https:\u002F\u002Fgithub.com\u002Fyour-org\u002Fnodered-flows.git","). The stage can be configured with the branch to push\u002Fpull from as well as the filename to use for the snapshot.",[14,521,522],{},"If a filename is not configured, it will generate the filename when pushing to the repository based on the name of Instance, Device\nor Device Group that provided the snapshot. The provided filename can include directory structures, allowing the snapshot to be stored in a subdirectory of the repository.",[14,524,525],{},"When pulling from a repository, if the stage has not previously been used to push to the repository, the filename is a required property.",[14,527,528],{},"It is also possible to configure the stage with different branches for the push and pull actions. This enables a Git-based review process as part of the pipeline; using a Pull Request process to review and approve the changes before merging between the two branches.",[237,530,532],{"id":531},"deploy-to-devices","Deploy to Devices",[14,534,535],{},"This option is only applicable when the Stage Type is an Instance.",[14,537,538],{},"When a pipeline stage with this action is deployed to, the same snapshot will be deployed to all devices connected to the defined instance.",[43,540,542],{"id":541},"protected-instances","Protected Instances",[14,544,545],{},"It is now possible to mark an instance as Protected. This means that all team members (including Owners) only have Read Only access to the Node-RED Editor\nand updates to the flows can only be made by a Team Owner running a DevOps pipeline that targets the instance.",[14,547,548],{},"Protected mode is activated under Instance > Settings > Protect Instance",[14,550,551],{},[28,552],{"alt":553,"dataZoomable":31,"src":554},"The Protect Instance setting under Instance Settings","\u002Fdocs\u002Fuser\u002Fimages\u002Fprotected-instance.png",[14,556,557],{},"A Protected Instance will be marked by a status badge next to it's running state. Click on this badge will take you to the Settings page.",[14,559,560],{},[28,561],{"alt":562,"dataZoomable":31,"src":563},"Protected status badge shown next to the instance running state","\u002Fdocs\u002Fuser\u002Fimages\u002Fprotected-instance-pill.png",{"title":31,"searchDepth":565,"depth":565,"links":566},4,[567,569,570,585],{"id":45,"depth":568,"text":46},2,{"id":115,"depth":568,"text":116},{"id":150,"depth":568,"text":111,"children":571},[572,574],{"id":178,"depth":573,"text":179},3,{"id":225,"depth":573,"text":226,"children":575},[576,577,578,579,584],{"id":239,"depth":565,"text":240},{"id":263,"depth":565,"text":264},{"id":286,"depth":565,"text":287},{"id":293,"depth":565,"text":294,"children":580},[581,583],{"id":307,"depth":582,"text":308},5,{"id":511,"depth":582,"text":512},{"id":531,"depth":565,"text":532},{"id":541,"depth":568,"text":542},"Navigation: Team > Application > Pipelines","md",null,{},true,"user\u002Fdevops-pipelines.md","\u002Fdocs\u002Fuser\u002Fdevops-pipelines",{"title":5,"description":586},"docs\u002Fuser\u002Fdevops-pipelines","2026-07-24 11:22:34 -0700","2.33.2","8NyWYFicvqhnDQP_F8GwDUEE8CBHfqSDHipdMWxVJ5g",[599,607,626,637],{"name":600,"order":601,"children":602},"FlowFuse User Manuals",1,[603],{"title":604,"path":605,"group":600,"groupOrder":601,"order":568,"children":606},"FlowFuse API","\u002Fdocs\u002Fapi",[],{"name":608,"order":565,"children":609},"FlowFuse Self-Hosted",[610,614],{"title":611,"path":612,"group":608,"groupOrder":565,"order":601,"children":613},"Quick Start","\u002Fdocs\u002Fquick-start",[],{"title":615,"path":616,"group":608,"groupOrder":565,"order":573,"children":617},"Upgrading FlowFuse","\u002Fdocs\u002Fupgrade",[618,622],{"title":619,"path":620,"order":588,"children":621},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":623,"path":624,"order":588,"children":625},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"name":627,"order":582,"children":628},"Support",[629,633],{"title":630,"path":631,"group":627,"groupOrder":582,"order":573,"children":632},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":634,"path":635,"group":627,"groupOrder":582,"order":588,"children":636},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":351,"order":588,"children":638},[639,687,699,778,827,846,920,931],{"title":640,"path":641,"order":588,"children":642},"admin","\u002Fdocs\u002Fadmin",[643,647,659,667,671,675,679,683],{"title":644,"path":645,"order":601,"children":646},"Administering FlowFuse","\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":648,"path":649,"order":588,"children":650},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[651,655],{"title":652,"path":653,"order":588,"children":654},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":656,"path":657,"order":588,"children":658},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":660,"path":661,"order":588,"children":662},"hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[663],{"title":664,"path":665,"order":588,"children":666},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":668,"path":669,"order":588,"children":670},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":672,"path":673,"order":588,"children":674},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":676,"path":677,"order":588,"children":678},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":680,"path":681,"order":588,"children":682},"Telemetry","\u002Fdocs\u002Fadmin\u002Ftelemetry",[],{"title":684,"path":685,"order":588,"children":686},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"title":688,"path":689,"order":588,"children":690},"cloud","\u002Fdocs\u002Fcloud",[691,695],{"title":692,"path":693,"order":601,"children":694},"Introduction","\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":696,"path":697,"order":588,"children":698},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"title":700,"path":701,"order":588,"children":702},"contribute","\u002Fdocs\u002Fcontribute",[703,706,710,714,718,722,726,734,770,774],{"title":692,"path":704,"order":601,"children":705},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":707,"path":708,"order":588,"children":709},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":711,"path":712,"order":588,"children":713},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":715,"path":716,"order":588,"children":717},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":719,"path":720,"order":588,"children":721},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":723,"path":724,"order":588,"children":725},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":727,"path":728,"order":588,"children":729},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[730],{"title":731,"path":732,"order":588,"children":733},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":735,"path":736,"order":588,"children":737},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[738,742,746,750,754,758,762,766],{"title":739,"path":740,"order":588,"children":741},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":743,"path":744,"order":588,"children":745},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":747,"path":748,"order":588,"children":749},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":751,"path":752,"order":588,"children":753},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":755,"path":756,"order":588,"children":757},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":759,"path":760,"order":588,"children":761},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":763,"path":764,"order":588,"children":765},"User Login Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",[],{"title":767,"path":768,"order":588,"children":769},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":771,"path":772,"order":588,"children":773},"Team Broker","\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":775,"path":776,"order":588,"children":777},"Working with Feature Flags","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",[],{"title":779,"path":780,"order":588,"children":781},"device-agent","\u002Fdocs\u002Fdevice-agent",[782,786,789,793,797,802],{"title":783,"path":784,"order":601,"children":785},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":611,"path":787,"order":568,"children":788},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":790,"path":791,"order":565,"children":792},"Register your Remote Instance","\u002Fdocs\u002Fdevice-agent\u002Fregister",[],{"title":794,"path":795,"order":582,"children":796},"Running the Agent","\u002Fdocs\u002Fdevice-agent\u002Frunning",[],{"title":798,"path":799,"order":800,"children":801},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",6,[],{"title":803,"path":804,"order":588,"children":805},"install","\u002Fdocs\u002Fdevice-agent\u002Finstall",[806,811,815,819,823],{"title":807,"path":808,"group":809,"order":601,"children":810},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview","DeviceAgentInstallation",[],{"title":812,"path":813,"group":809,"order":568,"children":814},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":816,"path":817,"group":809,"order":573,"children":818},"Docker Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",[],{"title":820,"path":821,"group":809,"order":565,"children":822},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":824,"path":825,"group":809,"order":582,"children":826},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":828,"path":829,"order":588,"children":830},"hardware","\u002Fdocs\u002Fhardware",[831,834,838,842],{"title":807,"path":832,"order":601,"children":833},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":835,"path":836,"order":568,"children":837},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":839,"path":840,"order":573,"children":841},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":843,"path":844,"order":573,"children":845},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"title":803,"path":847,"order":588,"children":848},"\u002Fdocs\u002Finstall",[849,852,856,860,880,884,888,892],{"title":807,"path":850,"order":601,"children":851},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":853,"path":854,"order":588,"children":855},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":857,"path":858,"order":588,"children":859},"DNS Setup","\u002Fdocs\u002Finstall\u002Fdns-setup",[],{"title":861,"path":862,"order":588,"children":863},"Docker install","\u002Fdocs\u002Finstall\u002Fdocker",[864,868,872,876],{"title":865,"path":866,"order":588,"children":867},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":869,"path":870,"order":588,"children":871},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":873,"path":874,"order":588,"children":875},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":877,"path":878,"order":588,"children":879},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":881,"path":882,"order":588,"children":883},"Email configuration","\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":885,"path":886,"order":588,"children":887},"First Run Setup","\u002Fdocs\u002Finstall\u002Ffirst-run",[],{"title":889,"path":890,"order":588,"children":891},"FlowFuse File Storage","\u002Fdocs\u002Finstall\u002Ffile-storage",[],{"title":893,"path":894,"order":588,"children":895},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[896,900,904,908,912,916],{"title":897,"path":898,"order":588,"children":899},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":901,"path":902,"order":588,"children":903},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":905,"path":906,"order":588,"children":907},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":909,"path":910,"order":588,"children":911},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":913,"path":914,"order":588,"children":915},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":917,"path":918,"order":588,"children":919},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":921,"path":922,"order":588,"children":923},"migration","\u002Fdocs\u002Fmigration",[924,927],{"title":692,"path":925,"order":601,"children":926},"\u002Fdocs\u002Fmigration\u002Fintroduction",[],{"title":928,"path":929,"order":588,"children":930},"Node-RED Tools plugin","\u002Fdocs\u002Fmigration\u002Fnode-red-tools",[],{"title":932,"path":933,"order":588,"children":934},"user","\u002Fdocs\u002Fuser",[935,939,943,947,951,956,960,964,968,972,974,977,989,993,997,1001,1005,1009,1013,1017,1021,1024,1028,1032,1036,1040,1043,1047],{"title":936,"path":937,"order":601,"children":938},"Getting Started","\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":940,"path":941,"order":601,"children":942},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":944,"path":945,"order":568,"children":946},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":948,"path":949,"order":568,"children":950},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":952,"path":953,"order":954,"children":955},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",10,[],{"title":957,"path":958,"order":588,"children":959},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":961,"path":962,"order":588,"children":963},"Custom Hostnames","\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":965,"path":966,"order":588,"children":967},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":969,"path":970,"order":588,"children":971},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":5,"path":592,"order":588,"children":973},[],{"title":130,"path":975,"order":588,"children":976},"\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":978,"path":979,"order":588,"children":980},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[981,985],{"title":982,"path":983,"order":588,"children":984},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":986,"path":987,"order":588,"children":988},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":990,"path":991,"order":588,"children":992},"FlowFuse File Nodes","\u002Fdocs\u002Fuser\u002Ffilenodes",[],{"title":994,"path":995,"order":588,"children":996},"FlowFuse MQTT Nodes","\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":998,"path":999,"order":588,"children":1000},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":1002,"path":1003,"order":588,"children":1004},"FlowFuse Project Nodes","\u002Fdocs\u002Fuser\u002Fprojectnodes",[],{"title":1006,"path":1007,"order":588,"children":1008},"FlowFuse Tables","\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":1010,"path":1011,"order":588,"children":1012},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":1014,"path":1015,"order":588,"children":1016},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":1018,"path":1019,"order":588,"children":1020},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":143,"path":1022,"order":588,"children":1023},"\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":1025,"path":1026,"order":588,"children":1027},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":1029,"path":1030,"order":588,"children":1031},"Role-Based Access Control","\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":1033,"path":1034,"order":588,"children":1035},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":1037,"path":1038,"order":588,"children":1039},"Snapshots","\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":771,"path":1041,"order":588,"children":1042},"\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":1044,"path":1045,"order":588,"children":1046},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":1048,"path":1049,"order":588,"children":1050},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],1786546044101]