[{"data":1,"prerenderedAt":914},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker\u002F":3,"docs-nav":464},{"id":4,"title":5,"body":6,"description":452,"extension":453,"layout":454,"meta":455,"navGroup":456,"navGroupOrder":454,"navOrder":88,"navTitle":5,"navigation":193,"originalPath":457,"path":458,"redirect":454,"seo":459,"stem":460,"updated":461,"version":462,"__hash__":463},"docs\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker.md","Docker Install",{"type":7,"value":8,"toc":442},"minimark",[9,13,22,27,45,49,103,108,115,159,163,275,279,297,303,309,331,338,381,385,392,396,438],[10,11,5],"h1",{"id":12},"docker-install",[14,15,16,17,21],"p",{},"Run the Device Agent in a container. Bind-mount your ",[18,19,20],"code",{},"device.yml"," and expose the editor port.",[23,24,26],"h2",{"id":25},"prerequisites","Prerequisites",[28,29,30,34],"ul",{},[31,32,33],"li",{},"Docker or Docker Compose",[31,35,36,37,39,40],{},"A ",[18,38,20],{}," configuration from ",[41,42,44],"a",{"href":43},"\u002Fdocs\u002Fdevice-agent\u002Fregister","Register your Remote Instance",[23,46,48],{"id":47},"docker-run","Docker run",[50,51,56],"pre",{"className":52,"code":53,"language":54,"meta":55,"style":55},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","docker run \\\n  --mount type=bind,src=\u002Fpath\u002Fto\u002Fdevice.yml,target=\u002Fopt\u002Fflowfuse-device\u002Fdevice.yml \\\n  -p 1880:1880 \\\n  flowfuse\u002Fdevice-agent:latest\n","bash","",[18,57,58,75,86,97],{"__ignoreMap":55},[59,60,63,67,71],"span",{"class":61,"line":62},"line",1,[59,64,66],{"class":65},"sBMFI","docker",[59,68,70],{"class":69},"sfazB"," run",[59,72,74],{"class":73},"sTEyZ"," \\\n",[59,76,78,81,84],{"class":61,"line":77},2,[59,79,80],{"class":69},"  --mount",[59,82,83],{"class":69}," type=bind,src=\u002Fpath\u002Fto\u002Fdevice.yml,target=\u002Fopt\u002Fflowfuse-device\u002Fdevice.yml",[59,85,74],{"class":73},[59,87,89,92,95],{"class":61,"line":88},3,[59,90,91],{"class":69},"  -p",[59,93,94],{"class":69}," 1880:1880",[59,96,74],{"class":73},[59,98,100],{"class":61,"line":99},4,[59,101,102],{"class":69},"  flowfuse\u002Fdevice-agent:latest\n",[104,105,107],"h3",{"id":106},"time-zone","Time zone",[14,109,110,111,114],{},"Set the container time zone using the ",[18,112,113],{},"TZ"," environment variable:",[50,116,118],{"className":52,"code":117,"language":54,"meta":55,"style":55},"docker run \\\n  -e TZ=Europe\u002FLondon \\\n  --mount type=bind,src=\u002Fpath\u002Fto\u002Fdevice.yml,target=\u002Fopt\u002Fflowfuse-device\u002Fdevice.yml \\\n  -p 1880:1880 \\\n  flowfuse\u002Fdevice-agent:latest\n",[18,119,120,128,138,146,154],{"__ignoreMap":55},[59,121,122,124,126],{"class":61,"line":62},[59,123,66],{"class":65},[59,125,70],{"class":69},[59,127,74],{"class":73},[59,129,130,133,136],{"class":61,"line":77},[59,131,132],{"class":69},"  -e",[59,134,135],{"class":69}," TZ=Europe\u002FLondon",[59,137,74],{"class":73},[59,139,140,142,144],{"class":61,"line":88},[59,141,80],{"class":69},[59,143,83],{"class":69},[59,145,74],{"class":73},[59,147,148,150,152],{"class":61,"line":99},[59,149,91],{"class":69},[59,151,94],{"class":69},[59,153,74],{"class":73},[59,155,157],{"class":61,"line":156},5,[59,158,102],{"class":69},[23,160,162],{"id":161},"docker-compose","Docker Compose",[50,164,168],{"className":165,"code":166,"language":167,"meta":55,"style":55},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","version: '3.9'\n\nservices:\n  device:\n    image: flowfuse\u002Fdevice-agent:latest\n    ports:\n      - \"1880:1880\"\n    volumes:\n      - \u002Fpath\u002Fto\u002Fdevice.yml:\u002Fopt\u002Fflowfuse-device\u002Fdevice.yml\n    environment:\n      - TZ=UTC\n","yaml",[18,169,170,189,195,203,210,220,228,243,251,259,267],{"__ignoreMap":55},[59,171,172,176,180,183,186],{"class":61,"line":62},[59,173,175],{"class":174},"swJcz","version",[59,177,179],{"class":178},"sMK4o",":",[59,181,182],{"class":178}," '",[59,184,185],{"class":69},"3.9",[59,187,188],{"class":178},"'\n",[59,190,191],{"class":61,"line":77},[59,192,194],{"emptyLinePlaceholder":193},true,"\n",[59,196,197,200],{"class":61,"line":88},[59,198,199],{"class":174},"services",[59,201,202],{"class":178},":\n",[59,204,205,208],{"class":61,"line":99},[59,206,207],{"class":174},"  device",[59,209,202],{"class":178},[59,211,212,215,217],{"class":61,"line":156},[59,213,214],{"class":174},"    image",[59,216,179],{"class":178},[59,218,219],{"class":69}," flowfuse\u002Fdevice-agent:latest\n",[59,221,223,226],{"class":61,"line":222},6,[59,224,225],{"class":174},"    ports",[59,227,202],{"class":178},[59,229,231,234,237,240],{"class":61,"line":230},7,[59,232,233],{"class":178},"      -",[59,235,236],{"class":178}," \"",[59,238,239],{"class":69},"1880:1880",[59,241,242],{"class":178},"\"\n",[59,244,246,249],{"class":61,"line":245},8,[59,247,248],{"class":174},"    volumes",[59,250,202],{"class":178},[59,252,254,256],{"class":61,"line":253},9,[59,255,233],{"class":178},[59,257,258],{"class":69}," \u002Fpath\u002Fto\u002Fdevice.yml:\u002Fopt\u002Fflowfuse-device\u002Fdevice.yml\n",[59,260,262,265],{"class":61,"line":261},10,[59,263,264],{"class":174},"    environment",[59,266,202],{"class":178},[59,268,270,272],{"class":61,"line":269},11,[59,271,233],{"class":178},[59,273,274],{"class":69}," TZ=UTC\n",[23,276,278],{"id":277},"running-as-a-non-root-user","Running as a non-root user",[14,280,281,282,285,286,289,290,293,294,296],{},"From Device Agent v4, the container no longer runs as ",[18,283,284],{},"root",". It runs as the unprivileged ",[18,287,288],{},"flowfuse"," user (UID ",[18,291,292],{},"2000"," \u002F GID ",[18,295,292],{},"), following least-privilege security practices.",[14,298,299,300,302],{},"This affects bind-mounted directories: the directory the agent uses for its state must be writable by UID\u002FGID ",[18,301,292],{},", otherwise the agent will fail to start with a permissions error.",[14,304,305,306,308],{},"Before upgrading an existing container to v4, update the ownership of any mounted directory so the ",[18,307,288],{}," user can access it:",[50,310,312],{"className":52,"code":311,"language":54,"meta":55,"style":55},"sudo chown -R 2000:2000 \u002Fpath\u002Fto\u002Fconfig\u002Fdir\n",[18,313,314],{"__ignoreMap":55},[59,315,316,319,322,325,328],{"class":61,"line":62},[59,317,318],{"class":65},"sudo",[59,320,321],{"class":69}," chown",[59,323,324],{"class":69}," -R",[59,326,327],{"class":69}," 2000:2000",[59,329,330],{"class":69}," \u002Fpath\u002Fto\u002Fconfig\u002Fdir\n",[14,332,333,334,337],{},"Alternatively, run the container as a user of your choosing with the ",[18,335,336],{},"--user"," flag:",[50,339,341],{"className":52,"code":340,"language":54,"meta":55,"style":55},"docker run \\\n  --user 1000:1000 \\\n  --mount type=bind,src=\u002Fpath\u002Fto\u002Fdevice.yml,target=\u002Fopt\u002Fflowfuse-device\u002Fdevice.yml \\\n  -p 1880:1880 \\\n  flowfuse\u002Fdevice-agent:latest\n",[18,342,343,351,361,369,377],{"__ignoreMap":55},[59,344,345,347,349],{"class":61,"line":62},[59,346,66],{"class":65},[59,348,70],{"class":69},[59,350,74],{"class":73},[59,352,353,356,359],{"class":61,"line":77},[59,354,355],{"class":69},"  --user",[59,357,358],{"class":69}," 1000:1000",[59,360,74],{"class":73},[59,362,363,365,367],{"class":61,"line":88},[59,364,80],{"class":69},[59,366,83],{"class":69},[59,368,74],{"class":73},[59,370,371,373,375],{"class":61,"line":99},[59,372,91],{"class":69},[59,374,94],{"class":69},[59,376,74],{"class":73},[59,378,379],{"class":61,"line":156},[59,380,102],{"class":69},[23,382,384],{"id":383},"verify","Verify",[14,386,387,388,391],{},"Once running and assigned, access the Node-RED editor at ",[18,389,390],{},"http:\u002F\u002F\u003Cdevice-ip>:1880",".",[23,393,395],{"id":394},"notes","Notes",[28,397,398,405,410,419],{},[31,399,400,401,404],{},"Device Agent 4.x defaults to Node.js 22; the ",[18,402,403],{},"latest"," tag now uses Node.js 22. Node.js 20 reached end-of-life in April 2026.",[31,406,407,408,391],{},"Device Agent 3.x uses Node.js 18 in the base image. To stay on a specific line, use a fixed tag instead of ",[18,409,403],{},[31,411,412,413,416,417,391],{},"For 2.x, use a fixed tag like ",[18,414,415],{},"2.8.0"," instead of ",[18,418,403],{},[31,420,421,422,425,426,429,430,433,434,391],{},"Ensure outbound TCP 443 to ",[18,423,424],{},"app.flowfuse.com"," and ",[18,427,428],{},"mqtt.flowfuse.cloud"," and access to ",[18,431,432],{},"https:\u002F\u002Fregistry.npmjs.com"," unless using a module cache. See ",[41,435,437],{"href":436},"\u002Fdocs\u002Fdevice-agent\u002Frunning#running-with-no-access-to-npmjsorg","Running with no access to npmjs.org",[439,440,441],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":55,"searchDepth":99,"depth":99,"links":443},[444,445,448,449,450,451],{"id":25,"depth":77,"text":26},{"id":47,"depth":77,"text":48,"children":446},[447],{"id":106,"depth":88,"text":107},{"id":161,"depth":77,"text":162},{"id":277,"depth":77,"text":278},{"id":383,"depth":77,"text":384},{"id":394,"depth":77,"text":395},"Run the Device Agent in a container. Bind-mount your device.yml and expose the editor port.","md",null,{},"DeviceAgentInstallation","device-agent\u002Finstall\u002Fdocker.md","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",{"title":5,"description":452},"docs\u002Fdevice-agent\u002Finstall\u002Fdocker","2026-07-02 16:30:21 +0100","2.33.2","BIna4w9i7gdmc_o8H9S8O1VY2H6VejdZqt79H7akIlw",[465,472,491,502],{"name":466,"order":62,"children":467},"FlowFuse User Manuals",[468],{"title":469,"path":470,"group":466,"groupOrder":62,"order":77,"children":471},"FlowFuse API","\u002Fdocs\u002Fapi",[],{"name":473,"order":99,"children":474},"FlowFuse Self-Hosted",[475,479],{"title":476,"path":477,"group":473,"groupOrder":99,"order":62,"children":478},"Quick Start","\u002Fdocs\u002Fquick-start",[],{"title":480,"path":481,"group":473,"groupOrder":99,"order":88,"children":482},"Upgrading FlowFuse","\u002Fdocs\u002Fupgrade",[483,487],{"title":484,"path":485,"order":454,"children":486},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":488,"path":489,"order":454,"children":490},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"name":492,"order":156,"children":493},"Support",[494,498],{"title":495,"path":496,"group":492,"groupOrder":156,"order":88,"children":497},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":499,"path":500,"group":492,"groupOrder":156,"order":454,"children":501},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":503,"order":454,"children":504},"Other",[505,553,565,644,687,706,780,791],{"title":506,"path":507,"order":454,"children":508},"admin","\u002Fdocs\u002Fadmin",[509,513,525,533,537,541,545,549],{"title":510,"path":511,"order":62,"children":512},"Administering FlowFuse","\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":514,"path":515,"order":454,"children":516},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[517,521],{"title":518,"path":519,"order":454,"children":520},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":522,"path":523,"order":454,"children":524},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":526,"path":527,"order":454,"children":528},"hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[529],{"title":530,"path":531,"order":454,"children":532},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":534,"path":535,"order":454,"children":536},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":538,"path":539,"order":454,"children":540},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":542,"path":543,"order":454,"children":544},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":546,"path":547,"order":454,"children":548},"Telemetry","\u002Fdocs\u002Fadmin\u002Ftelemetry",[],{"title":550,"path":551,"order":454,"children":552},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"title":554,"path":555,"order":454,"children":556},"cloud","\u002Fdocs\u002Fcloud",[557,561],{"title":558,"path":559,"order":62,"children":560},"Introduction","\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":562,"path":563,"order":454,"children":564},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"title":566,"path":567,"order":454,"children":568},"contribute","\u002Fdocs\u002Fcontribute",[569,572,576,580,584,588,592,600,636,640],{"title":558,"path":570,"order":62,"children":571},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":573,"path":574,"order":454,"children":575},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":577,"path":578,"order":454,"children":579},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":581,"path":582,"order":454,"children":583},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":585,"path":586,"order":454,"children":587},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":589,"path":590,"order":454,"children":591},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":593,"path":594,"order":454,"children":595},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[596],{"title":597,"path":598,"order":454,"children":599},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":601,"path":602,"order":454,"children":603},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[604,608,612,616,620,624,628,632],{"title":605,"path":606,"order":454,"children":607},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":609,"path":610,"order":454,"children":611},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":613,"path":614,"order":454,"children":615},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":617,"path":618,"order":454,"children":619},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":621,"path":622,"order":454,"children":623},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":625,"path":626,"order":454,"children":627},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":629,"path":630,"order":454,"children":631},"User Login Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",[],{"title":633,"path":634,"order":454,"children":635},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":637,"path":638,"order":454,"children":639},"Team Broker","\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":641,"path":642,"order":454,"children":643},"Working with Feature Flags","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",[],{"title":645,"path":646,"order":454,"children":647},"device-agent","\u002Fdocs\u002Fdevice-agent",[648,652,655,657,661,665],{"title":649,"path":650,"order":62,"children":651},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":476,"path":653,"order":77,"children":654},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":44,"path":43,"order":99,"children":656},[],{"title":658,"path":659,"order":156,"children":660},"Running the Agent","\u002Fdocs\u002Fdevice-agent\u002Frunning",[],{"title":662,"path":663,"order":222,"children":664},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",[],{"title":666,"path":667,"order":454,"children":668},"install","\u002Fdocs\u002Fdevice-agent\u002Finstall",[669,673,677,679,683],{"title":670,"path":671,"group":456,"order":62,"children":672},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview",[],{"title":674,"path":675,"group":456,"order":77,"children":676},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":5,"path":458,"group":456,"order":88,"children":678},[],{"title":680,"path":681,"group":456,"order":99,"children":682},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":684,"path":685,"group":456,"order":156,"children":686},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":688,"path":689,"order":454,"children":690},"hardware","\u002Fdocs\u002Fhardware",[691,694,698,702],{"title":670,"path":692,"order":62,"children":693},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":695,"path":696,"order":77,"children":697},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":699,"path":700,"order":88,"children":701},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":703,"path":704,"order":88,"children":705},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"title":666,"path":707,"order":454,"children":708},"\u002Fdocs\u002Finstall",[709,712,716,720,740,744,748,752],{"title":670,"path":710,"order":62,"children":711},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":713,"path":714,"order":454,"children":715},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":717,"path":718,"order":454,"children":719},"DNS Setup","\u002Fdocs\u002Finstall\u002Fdns-setup",[],{"title":721,"path":722,"order":454,"children":723},"Docker install","\u002Fdocs\u002Finstall\u002Fdocker",[724,728,732,736],{"title":725,"path":726,"order":454,"children":727},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":729,"path":730,"order":454,"children":731},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":733,"path":734,"order":454,"children":735},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":737,"path":738,"order":454,"children":739},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":741,"path":742,"order":454,"children":743},"Email configuration","\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":745,"path":746,"order":454,"children":747},"First Run Setup","\u002Fdocs\u002Finstall\u002Ffirst-run",[],{"title":749,"path":750,"order":454,"children":751},"FlowFuse File Storage","\u002Fdocs\u002Finstall\u002Ffile-storage",[],{"title":753,"path":754,"order":454,"children":755},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[756,760,764,768,772,776],{"title":757,"path":758,"order":454,"children":759},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":761,"path":762,"order":454,"children":763},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":765,"path":766,"order":454,"children":767},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":769,"path":770,"order":454,"children":771},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":773,"path":774,"order":454,"children":775},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":777,"path":778,"order":454,"children":779},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":781,"path":782,"order":454,"children":783},"migration","\u002Fdocs\u002Fmigration",[784,787],{"title":558,"path":785,"order":62,"children":786},"\u002Fdocs\u002Fmigration\u002Fintroduction",[],{"title":788,"path":789,"order":454,"children":790},"Node-RED Tools plugin","\u002Fdocs\u002Fmigration\u002Fnode-red-tools",[],{"title":792,"path":793,"order":454,"children":794},"user","\u002Fdocs\u002Fuser",[795,799,803,807,811,815,819,823,827,831,835,839,851,855,859,863,867,871,875,879,883,887,891,895,899,903,906,910],{"title":796,"path":797,"order":62,"children":798},"Getting Started","\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":800,"path":801,"order":62,"children":802},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":804,"path":805,"order":77,"children":806},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":808,"path":809,"order":77,"children":810},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":812,"path":813,"order":261,"children":814},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",[],{"title":816,"path":817,"order":454,"children":818},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":820,"path":821,"order":454,"children":822},"Custom Hostnames","\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":824,"path":825,"order":454,"children":826},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":828,"path":829,"order":454,"children":830},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":832,"path":833,"order":454,"children":834},"DevOps Pipelines","\u002Fdocs\u002Fuser\u002Fdevops-pipelines",[],{"title":836,"path":837,"order":454,"children":838},"Environment Variables","\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":840,"path":841,"order":454,"children":842},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[843,847],{"title":844,"path":845,"order":454,"children":846},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":848,"path":849,"order":454,"children":850},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":852,"path":853,"order":454,"children":854},"FlowFuse File Nodes","\u002Fdocs\u002Fuser\u002Ffilenodes",[],{"title":856,"path":857,"order":454,"children":858},"FlowFuse MQTT Nodes","\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":860,"path":861,"order":454,"children":862},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":864,"path":865,"order":454,"children":866},"FlowFuse Project Nodes","\u002Fdocs\u002Fuser\u002Fprojectnodes",[],{"title":868,"path":869,"order":454,"children":870},"FlowFuse Tables","\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":872,"path":873,"order":454,"children":874},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":876,"path":877,"order":454,"children":878},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":880,"path":881,"order":454,"children":882},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":884,"path":885,"order":454,"children":886},"Instance Settings","\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":888,"path":889,"order":454,"children":890},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":892,"path":893,"order":454,"children":894},"Role-Based Access Control","\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":896,"path":897,"order":454,"children":898},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":900,"path":901,"order":454,"children":902},"Snapshots","\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":637,"path":904,"order":454,"children":905},"\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":907,"path":908,"order":454,"children":909},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":911,"path":912,"order":454,"children":913},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],1786546039848]