[{"data":1,"prerenderedAt":2397},["ShallowReactive",2],{"docs-\u002Fdocs\u002Finstall\u002Fdocker\u002F":3,"featureCatalog":1561,"docs-nav":1956},{"id":4,"title":5,"body":6,"description":16,"extension":1549,"layout":1550,"meta":1551,"navGroup":1550,"navGroupOrder":1550,"navOrder":1550,"navTitle":1552,"navigation":1553,"originalPath":1554,"path":1555,"redirect":1550,"seo":1556,"stem":1557,"updated":1558,"version":1559,"__hash__":1560},"docs\u002Fdocs\u002Finstall\u002Fdocker\u002Findex.md","Docker Install",{"type":7,"value":8,"toc":1516},"minimark",[9,13,17,26,31,81,84,87,127,130,153,158,161,172,175,190,195,198,201,204,216,222,232,239,243,247,254,300,304,310,320,333,358,364,368,374,377,381,386,400,416,424,430,434,437,458,461,469,500,608,612,617,625,629,660,664,683,686,704,718,722,725,732,735,739,752,873,925,929,933,936,975,982,986,992,998,1001,1004,1007,1140,1144,1161,1209,1212,1226,1230,1233,1236,1239,1242,1272,1275,1318,1321,1401,1404,1421,1425,1433,1436,1445,1448,1452,1455,1458,1465,1470,1473,1479,1483,1512],[10,11,5],"h1",{"id":12},"docker-install",[14,15,16],"p",{},"This guide walks you through detailed set up of FlowFuse Platform on a Docker container environment using Docker Compose. Typically suited for small\u002Fmedium on premise deployments.\nBy the end, you will have a fully functioning FlowFuse instance running in a Docker container.",[14,18,19,20,25],{},"The following guide walks through a full production-ready deployment. If you want to install FlowFuse for evaluation purposes, please refer to the ",[21,22,24],"a",{"href":23},"\u002Fdocs\u002Fquick-start","Quick Start Guide",".",[27,28,30],"h2",{"id":29},"checklist","Checklist",[32,33,38,39,38,64],"div",{"className":34},[35,36,37],"grid","grid-cols-2","gap-8","\n  ",[32,40,42,43,42,47,38],{"className":41},[29],"\n    ",[44,45,46],"label",{},"Prerequisites",[32,48,49,50,49,54,49,57,49,61,42],{},"\n      ",[51,52],"checklist-item",{"task":53},"Domain Name",[51,55],{"task":56},"Docker Engine & Docker Compose",[51,58],{"type":59,"task":60},"recommended","Setup Dedicated Database",[51,62],{"type":59,"task":63},"Prepare TLS Certificates",[32,65,42,67,42,70,38],{"className":66},[29],[44,68,69],{},"Installation",[32,71,49,72,49,75,49,78,42],{},[51,73],{"task":74},"Download FlowFuse",[51,76],{"task":77},"Configure FlowFuse",[51,79],{"type":59,"task":80},"Enable HTTPS",[27,82,46],{"id":83},"prerequisites",[14,85,86],{},"Before you begin, ensure you have the following:",[88,89,90,103],"ol",{},[91,92,93,97,98,102],"li",{},[94,95,96],"strong",{},"Domain Name & DNS:"," A domain name that you own and can configure DNS settings for (explained in ",[21,99,101],{"href":100},"#dns","DNS",")",[91,104,105,108,109,115,116,121,122,126],{},[94,106,107],{},"Install Docker:"," ",[21,110,114],{"href":111,"rel":112},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002F",[113],"nofollow","Docker Engine"," and ",[21,117,120],{"href":118,"rel":119},"https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002Finstall\u002F",[113],"Docker Compose"," (in ",[123,124,125],"code",{},"2.23.1"," version or higher) must be installed on your system (either as a standalone binary or as docker plugin).",[14,128,129],{},"For a production-ready environment, we also recommend:",[131,132,133,144],"ul",{},[91,134,135,138,139,143],{},[94,136,137],{},"Database:"," Prepare dedicated database on a external database server (see ",[21,140,142],{"href":141},"#how-to-use-external-database-server","FAQ"," for more details)",[91,145,146,149,150,102],{},[94,147,148],{},"TLS Certification:"," Prepare TLS certificate for your domain and configure FlowFuse platform to use it (see ",[21,151,80],{"href":152},"#enable-https-optional",[154,155,157],"h3",{"id":156},"requirements","Requirements",[14,159,160],{},"To run the FlowFuse platform smoothly, we recommend the following minimum hardware specs:",[131,162,163,166,169],{},[91,164,165],{},"CPU: 2 cores",[91,167,168],{},"Memory: 4 GB RAM",[91,170,171],{},"Storage: 20 GB disk space\nEach Node-RED instance you host will uses 0.1 CPU cores and 256 MB of memory by default. This parameters can be adjusted in admin area of FlowFuse platform. Keep this in mind when sizing your hardware, especially if plan to create multiple hosted instances.",[14,173,174],{},"When deploying the FlowFuse platform behind a firewall or proxy, ensure that the following ports are open and forwards a traffic to the server where FlowFuse is installed:",[131,176,177,184],{},[91,178,179,180,183],{},"Port ",[123,181,182],{},"80"," (HTTP)",[91,185,179,186,189],{},[123,187,188],{},"443"," (HTTPS)",[191,192,194],"h4",{"id":193},"aws-elastic-container-service","AWS Elastic Container Service",[14,196,197],{},"At this time we do not support deploying FlowFuse to AWS's Elastic Container Service.",[154,199,101],{"id":200},"dns",[14,202,203],{},"The orchestration uses an instance of Nginx to route requests to each Node-RED instance. To do this it needs each instance to have a unique hostname, to generate this the instance name is prepended to a supplied domain.",[14,205,206,207,212,213,25],{},"To make this work you will need to configure a DNS server to map a ",[21,208,211],{"href":209,"rel":210},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWildcard_DNS_record",[113],"wildcard domain entry"," to the IP address of the host running Docker. e.g ",[123,214,215],{},"*.example.com",[14,217,218,219],{},"The FlowFuse Application will be hosted on ",[123,220,221],{},"http:\u002F\u002Fforge.example.com",[14,223,224,227,228,231],{},[94,225,226],{},"Note"," At this moment FlowFuse platform is not capable to run on localhost. You must point your domain to the external IP address of the host machine, not the loopback address (",[123,229,230],{},"127.0.0.1",").",[14,233,234,235,25],{},"Notes on how to setup DNS can be found ",[21,236,238],{"href":237},"\u002Fdocs\u002Finstall\u002Fdns-setup","here",[27,240,242],{"id":241},"installing-flowfuse","Installing FlowFuse",[154,244,246],{"id":245},"download-installation-files","Download installation files",[14,248,249,250,253],{},"Download the latest version of the FlowFuse Docker Compose file and example ",[123,251,252],{},".env"," file used for installation configuration:",[255,256,261],"pre",{"className":257,"code":258,"language":259,"meta":260,"style":260},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -L -o docker-compose.yml https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdocker-compose\u002Freleases\u002Flatest\u002Fdownload\u002Fdocker-compose.yml\ncurl -L -o .env https:\u002F\u002Fraw.githubusercontent.com\u002FFlowFuse\u002Fdocker-compose\u002Frefs\u002Fheads\u002Fmain\u002F.env.example\n","bash","",[123,262,263,285],{"__ignoreMap":260},[264,265,268,272,276,279,282],"span",{"class":266,"line":267},"line",1,[264,269,271],{"class":270},"sBMFI","curl",[264,273,275],{"class":274},"sfazB"," -L",[264,277,278],{"class":274}," -o",[264,280,281],{"class":274}," docker-compose.yml",[264,283,284],{"class":274}," https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdocker-compose\u002Freleases\u002Flatest\u002Fdownload\u002Fdocker-compose.yml\n",[264,286,288,290,292,294,297],{"class":266,"line":287},2,[264,289,271],{"class":270},[264,291,275],{"class":274},[264,293,278],{"class":274},[264,295,296],{"class":274}," .env",[264,298,299],{"class":274}," https:\u002F\u002Fraw.githubusercontent.com\u002FFlowFuse\u002Fdocker-compose\u002Frefs\u002Fheads\u002Fmain\u002F.env.example\n",[154,301,303],{"id":302},"configure","Configure",[14,305,306,307,309],{},"Installation configuration is done via the ",[123,308,252],{}," file.\nThe minimal configuration required is the domain name you will be using for the platform.",[14,311,312,313,315,316,319],{},"Edit downloaded ",[123,314,252],{}," file with the editor of your choice and update the ",[123,317,318],{},"DOMAIN"," variable with the domain you will be using for the platform.",[14,321,322,323,326,327,329,330,332],{},"Alternatevily, use ",[123,324,325],{},"sed"," to update the ",[123,328,318],{}," variable in the ",[123,331,252],{}," file:",[255,334,336],{"className":257,"code":335,"language":259,"meta":260,"style":260},"sed -i 's\u002F^DOMAIN=.*\u002FDOMAIN=example.com\u002F' .env\n",[123,337,338],{"__ignoreMap":260},[264,339,340,342,345,349,352,355],{"class":266,"line":267},[264,341,325],{"class":270},[264,343,344],{"class":274}," -i",[264,346,348],{"class":347},"sMK4o"," '",[264,350,351],{"class":274},"s\u002F^DOMAIN=.*\u002FDOMAIN=example.com\u002F",[264,353,354],{"class":347},"'",[264,356,357],{"class":274}," .env\n",[14,359,360,361,363],{},"Please note that once set, the ",[123,362,318],{}," value should not be changed as it is used as part of the configuration stored in the database of each Node-RED instance. The ability to migrate to different domain is on the feature backlog.",[154,365,367],{"id":366},"enable-https-optional","Enable HTTPS (optional)",[14,369,370,371,373],{},"If you want to serve the FlowFuse platform and Node-RED instances over TLS you will need to obtain a wildcard TLS certificate for the domain you are using eg ",[123,372,215],{},". If you are running on an Internet facing machine you can use our configuration files to generate it atomatically.",[14,375,376],{},"Otherwise you will need to contact a SSL Certificate vendor and configure Nginx manually.",[191,378,380],{"id":379},"automatic-tls-certificate","Automatic TLS Certificate",[14,382,383],{},[94,384,385],{},"Note: Automatic TLS generation is possible only for the publicly available servers",[14,387,388,389,391,392,395,396,399],{},"In the ",[123,390,252],{}," file, set the ",[123,393,394],{},"TLS_ENABLED"," variable to ",[123,397,398],{},"true",":",[255,401,403],{"className":257,"code":402,"language":259,"meta":260,"style":260},"TLS_ENABLED=true\n",[123,404,405],{"__ignoreMap":260},[264,406,407,410,413],{"class":266,"line":267},[264,408,394],{"class":409},"sTEyZ",[264,411,412],{"class":347},"=",[264,414,415],{"class":274},"true\n",[14,417,418,419,423],{},"Proceed to the ",[21,420,422],{"href":421},"#start-flowfuse-platform","next paragraph"," to start the platform with automatically generated TLS certificate.",[425,426,427],"blockquote",{},[14,428,429],{},"When using automatic TLS certificate generation, the platform will take a few minutes to generate them on the first platform startup.\nFor a short period of time browsers may report untrusted certificate warning. This is expected behavior and should resolve itself once the certificate is generated.",[191,431,433],{"id":432},"custom-tls-certificate","Custom TLS Certificate",[14,435,436],{},"If you have own TLS certificate, you can use it in FlowFuse platform installation as well. As mentioned before, the certificate must be a wildcard one for the domain you are using.",[32,438,442,446],{"className":439},[440,441],"ff-callout","ff-callout--note",[14,443,226],{"className":444},[445],"ff-callout__title",[32,447,450],{"className":448},[449],"ff-callout__content",[14,451,452,453,457],{},"If your TLS certificate is issued by a private Certificate Authority, additional configuration is required so that Hosted Instances trust the CA. See ",[21,454,456],{"href":455},"#what-additional-configuration-is-required-when-the-tls-certificate-is-issued-by-a-private-certificate-authority","What additional configuration is required when the TLS certificate is issued by a private Certificate Authority?"," for the step-by-step instructions.",[14,459,460],{},"To configure FlowFuse platform with your certificate, you need to have:",[131,462,463,466],{},[91,464,465],{},"certificate key file",[91,467,468],{},"certificate's full chain (server certificate and intermediate certificates bundled into single file)",[14,470,471,472,474,475,477,478,115,481,484,485,487,488,490,491,493,494,496,497,499],{},"To add your certificate to the platform, edit the ",[123,473,252],{}," file downloaded earlier and set values for ",[123,476,394],{},", ",[123,479,480],{},"TLS_CERTIFICATE",[123,482,483],{},"TLS_KEY"," variables. ",[123,486,394],{}," variable should be set to ",[123,489,398],{},".\n",[123,492,480],{}," should contain the full chain of the certificate while ",[123,495,483],{}," should contain the key file.\nExample of ",[123,498,252],{}," file with the custom TLS certificate configuration:",[255,501,503],{"className":257,"code":502,"language":259,"meta":260,"style":260},"TLS_ENABLED=true\nTLS_CERTIFICATE=\"\n-----BEGIN CERTIFICATE-----\nMIIFfzCCBKegAwIBAgISA0\n...\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFfzCCBKegAwIBAgISA0\n...\n-----END CERTIFICATE-----\n\"\nTLS_KEY=\"\n-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD\n...\n-----END PRIVATE KEY-----\n\"\n",[123,504,505,513,522,528,534,540,546,551,556,561,566,571,580,586,592,597,603],{"__ignoreMap":260},[264,506,507,509,511],{"class":266,"line":267},[264,508,394],{"class":409},[264,510,412],{"class":347},[264,512,415],{"class":274},[264,514,515,517,519],{"class":266,"line":287},[264,516,480],{"class":409},[264,518,412],{"class":347},[264,520,521],{"class":347},"\"\n",[264,523,525],{"class":266,"line":524},3,[264,526,527],{"class":274},"-----BEGIN CERTIFICATE-----\n",[264,529,531],{"class":266,"line":530},4,[264,532,533],{"class":274},"MIIFfzCCBKegAwIBAgISA0\n",[264,535,537],{"class":266,"line":536},5,[264,538,539],{"class":274},"...\n",[264,541,543],{"class":266,"line":542},6,[264,544,545],{"class":274},"-----END CERTIFICATE-----\n",[264,547,549],{"class":266,"line":548},7,[264,550,527],{"class":274},[264,552,554],{"class":266,"line":553},8,[264,555,533],{"class":274},[264,557,559],{"class":266,"line":558},9,[264,560,539],{"class":274},[264,562,564],{"class":266,"line":563},10,[264,565,545],{"class":274},[264,567,569],{"class":266,"line":568},11,[264,570,521],{"class":347},[264,572,574,576,578],{"class":266,"line":573},12,[264,575,483],{"class":409},[264,577,412],{"class":347},[264,579,521],{"class":347},[264,581,583],{"class":266,"line":582},13,[264,584,585],{"class":274},"-----BEGIN PRIVATE KEY-----\n",[264,587,589],{"class":266,"line":588},14,[264,590,591],{"class":274},"MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD\n",[264,593,595],{"class":266,"line":594},15,[264,596,539],{"class":274},[264,598,600],{"class":266,"line":599},16,[264,601,602],{"class":274},"-----END PRIVATE KEY-----\n",[264,604,606],{"class":266,"line":605},17,[264,607,521],{"class":347},[27,609,611],{"id":610},"start-flowfuse-platform","Start FlowFuse platform",[14,613,614],{},[94,615,616],{},"Note: Make sure all configuration are done above before proceeding.",[14,618,619],{},[94,620,621,622,624],{},"Note: Commands must be executed within the same directory where the Docker Compose and ",[123,623,252],{}," files are located.",[191,626,628],{"id":627},"with-automatic-tls-certificate-generation","With automatic TLS certificate generation",[255,630,632],{"className":257,"code":631,"language":259,"meta":260,"style":260},"docker compose --profile autotls -p flowfuse up -d\n",[123,633,634],{"__ignoreMap":260},[264,635,636,639,642,645,648,651,654,657],{"class":266,"line":267},[264,637,638],{"class":270},"docker",[264,640,641],{"class":274}," compose",[264,643,644],{"class":274}," --profile",[264,646,647],{"class":274}," autotls",[264,649,650],{"class":274}," -p",[264,652,653],{"class":274}," flowfuse",[264,655,656],{"class":274}," up",[264,658,659],{"class":274}," -d\n",[191,661,663],{"id":662},"in-all-other-scenarios-including-custom-tls-certificate","In all other scenarios, including custom TLS certificate",[255,665,667],{"className":257,"code":666,"language":259,"meta":260,"style":260},"docker compose -p flowfuse up -d\n",[123,668,669],{"__ignoreMap":260},[264,670,671,673,675,677,679,681],{"class":266,"line":267},[264,672,638],{"class":270},[264,674,641],{"class":274},[264,676,650],{"class":274},[264,678,653],{"class":274},[264,680,656],{"class":274},[264,682,659],{"class":274},[14,684,685],{},"The platform will take a few minutes to start up. You can check the status of the containers by running:",[255,687,689],{"className":257,"code":688,"language":259,"meta":260,"style":260},"docker compose -p flowfuse ps\n",[123,690,691],{"__ignoreMap":260},[264,692,693,695,697,699,701],{"class":266,"line":267},[264,694,638],{"class":270},[264,696,641],{"class":274},[264,698,650],{"class":274},[264,700,653],{"class":274},[264,702,703],{"class":274}," ps\n",[14,705,706,707,710,711,714,715,717],{},"Visit ",[123,708,709],{},"forge.example.com"," (replace ",[123,712,713],{},"example.com"," with the domain configured in the ",[123,716,252],{}," file) in your browser to access the FlowFuse platform.",[27,719,721],{"id":720},"first-run-setup","First Run Setup",[14,723,724],{},"The first time you access the platform in your browser, it will take you through\ncreating an administrator for the platform and other configuration options.",[14,726,727,728,25],{},"For more information, follow ",[21,729,731],{"href":730},"\u002Fdocs\u002Finstall\u002Ffirst-run","this guide",[14,733,734],{},"Once you have finished setting up the admin user there are some Docker specific items to consider.",[27,736,738],{"id":737},"upgrade","Upgrade",[14,740,741],{},[94,742,743,744,747,748],{},"Note: If you are upgrading from version ",[123,745,746],{},"2.10.0"," or lower, please follow ",[21,749,731],{"href":750,"rel":751},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdocker-compose\u002Fblob\u002Fmain\u002FUPGRADE.md",[113],[88,753,754,772,804,824,849,867],{},[91,755,756,757,771],{},"Find the Docker Compose project name:\n",[255,758,760],{"className":257,"code":759,"language":259,"meta":260,"style":260},"docker compose ls\n",[123,761,762],{"__ignoreMap":260},[264,763,764,766,768],{"class":266,"line":267},[264,765,638],{"class":270},[264,767,641],{"class":274},[264,769,770],{"class":274}," ls\n","\nThe output will show the project name, as well as the location of Docker Compose file used for creating the project.",[91,773,774,775,778,779],{},"Stop the existing project (replace ",[123,776,777],{},"$projectName"," with your project name):\n",[255,780,782],{"className":257,"code":781,"language":259,"meta":260,"style":260},"docker compose -p $projectName down --rmi all\n",[123,783,784],{"__ignoreMap":260},[264,785,786,788,790,792,795,798,801],{"class":266,"line":267},[264,787,638],{"class":270},[264,789,641],{"class":274},[264,791,650],{"class":274},[264,793,794],{"class":409}," $projectName ",[264,796,797],{"class":274},"down",[264,799,800],{"class":274}," --rmi",[264,802,803],{"class":274}," all\n",[91,805,806,807],{},"Download the latest Docker Compose files:\n",[255,808,810],{"className":257,"code":809,"language":259,"meta":260,"style":260},"curl -L -o docker-compose.yml https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdocker-compose\u002Freleases\u002Flatest\u002Fdownload\u002Fdocker-compose.yml\n",[123,811,812],{"__ignoreMap":260},[264,813,814,816,818,820,822],{"class":266,"line":267},[264,815,271],{"class":270},[264,817,275],{"class":274},[264,819,278],{"class":274},[264,821,281],{"class":274},[264,823,284],{"class":274},[91,825,826,827,829,830,832,833],{},"Make sure the ",[123,828,252],{}," file is present and contains your installation-specific configuration. Download an example ",[123,831,252],{}," file if needed:\n",[255,834,836],{"className":257,"code":835,"language":259,"meta":260,"style":260},"curl -o .env.example https:\u002F\u002Fraw.githubusercontent.com\u002FFlowFuse\u002Fdocker-compose\u002Frefs\u002Fheads\u002Fmain\u002F.env.example\n",[123,837,838],{"__ignoreMap":260},[264,839,840,842,844,847],{"class":266,"line":267},[264,841,271],{"class":270},[264,843,278],{"class":274},[264,845,846],{"class":274}," .env.example",[264,848,299],{"class":274},[91,850,851,852],{},"Pull the latest version of the default stack container (and any other stacks you have configured)\n",[255,853,855],{"className":257,"code":854,"language":259,"meta":260,"style":260},"docker pull flowfuse\u002Fnode-red:latest\n",[123,856,857],{"__ignoreMap":260},[264,858,859,861,864],{"class":266,"line":267},[264,860,638],{"class":270},[264,862,863],{"class":274}," pull",[264,865,866],{"class":274}," flowfuse\u002Fnode-red:latest\n",[91,868,869,870,872],{},"Start the project depending on the TLS configuration (replace ",[123,871,777],{}," with your project name):",[131,874,875,903],{},[91,876,877,878],{},"automatic TLS:\n",[255,879,881],{"className":257,"code":880,"language":259,"meta":260,"style":260},"docker compose --profile autossl -p $projectName up -d\n",[123,882,883],{"__ignoreMap":260},[264,884,885,887,889,891,894,896,898,901],{"class":266,"line":267},[264,886,638],{"class":270},[264,888,641],{"class":274},[264,890,644],{"class":274},[264,892,893],{"class":274}," autossl",[264,895,650],{"class":274},[264,897,794],{"class":409},[264,899,900],{"class":274},"up",[264,902,659],{"class":274},[91,904,905,906],{},"any other scenario:\n",[255,907,909],{"className":257,"code":908,"language":259,"meta":260,"style":260},"docker compose -p $projectName up -d\n",[123,910,911],{"__ignoreMap":260},[264,912,913,915,917,919,921,923],{"class":266,"line":267},[264,914,638],{"class":270},[264,916,641],{"class":274},[264,918,650],{"class":274},[264,920,794],{"class":409},[264,922,900],{"class":274},[264,924,659],{"class":274},[27,926,928],{"id":927},"common-questions","Common Questions",[154,930,932],{"id":931},"how-to-use-external-database-server","How to use external database server?",[14,934,935],{},"FlowFuse platform uses PostgreSQL database to store its data. By default, the database is created and managed by the Docker Compose.\nIf you want to use an external database server, you need to:",[131,937,938,959],{},[91,939,940,941,115,944,947,948,115,951,954,955,958],{},"on your database server, create ",[123,942,943],{},"flowforge",[123,945,946],{},"ff-context"," databases as well as a user with access to both of them (see ",[123,949,950],{},"configs.postgres_db_setup",[123,952,953],{},"configs.postgres_context_setup"," in the ",[123,956,957],{},"docker-compose.yml"," file for the reference)",[91,960,961,962,964,965,477,968,477,971,974],{},"configure the connection to the database in the ",[123,963,252],{}," file. Set the ",[123,966,967],{},"DB_HOST",[123,969,970],{},"DB_USER",[123,972,973],{},"DB_PASSWORD"," variables to the connection details of the external database server",[14,976,977,978,981],{},"Once ready, ",[21,979,980],{"href":421},"start the application"," .",[154,983,985],{"id":984},"how-can-i-provide-my-own-tls-certificate","How can I provide my own TLS certificate?",[14,987,988,989,991],{},"If you have your own TLS certificate, you can use it in FlowFuse platform installation as well. See ",[21,990,80],{"href":152}," section for more details.",[14,993,994,995,457],{},"Additionally, if your TLS certificate is issued by a private Certificate Authority, you will need to perform some additional configuration to make hosted Node-RED instances trust the CA. See ",[21,996,997],{"href":455},"What additional configuration is required when the TLS certificate is issued by a private Certificate Authority",[154,999,456],{"id":1000},"what-additional-configuration-is-required-when-the-tls-certificate-is-issued-by-a-private-certificate-authority",[14,1002,1003],{},"When the FlowFuse platform is configured with a TLS certificate issued by a private Certificate Authority (CA), hosted Node-RED instances will not trust the CA by default. As a result, opening the editor for a hosted instance will fail with a certificate trust error.",[14,1005,1006],{},"To make hosted Node-RED instances trust the private CA, follow the steps below:",[88,1008,1009,1047,1111,1134],{},[91,1010,1011,1014,1015,1017,1018,1021,1022,1025,1026,399,1029],{},[94,1012,1013],{},"Update the environment file."," In the ",[123,1016,252],{}," file created during the installation process, set ",[123,1019,1020],{},"DOCKER_DRIVER_PRIVATE_CA_PATH"," to the path of your Certificate Authority certificate file. This must be the path to the file stored on the Docker host server. For example, if the ",[123,1023,1024],{},"ca.pem"," file is located at ",[123,1027,1028],{},"\u002Fusr\u002Flocal\u002Fssl\u002Fca.pem",[255,1030,1032],{"className":257,"code":1031,"language":259,"meta":260,"style":260},"DOCKER_DRIVER_PRIVATE_CA_PATH=\"\u002Fusr\u002Flocal\u002Fssl\u002Fca.pem\"\n",[123,1033,1034],{"__ignoreMap":260},[264,1035,1036,1038,1040,1043,1045],{"class":266,"line":267},[264,1037,1020],{"class":409},[264,1039,412],{"class":347},[264,1041,1042],{"class":347},"\"",[264,1044,1028],{"class":274},[264,1046,521],{"class":347},[91,1048,1049,1014,1052,1054,1055,1058,1059,1062,1063,1065,1066],{},[94,1050,1051],{},"Modify the Compose file.",[123,1053,957],{}," file used to create the FlowFuse Docker stack, uncomment the ",[123,1056,1057],{},"NODE_EXTRA_CA_CERTS"," environment variable and the corresponding volume mount on the ",[123,1060,1061],{},"forge"," service so the certificate is passed correctly to the platform. You can apply both changes with a single ",[123,1064,325],{}," command:",[255,1067,1069],{"className":257,"code":1068,"language":259,"meta":260,"style":260},"sed -i.bak -E -e 's\u002F^#([[:space:]]*- \"NODE_EXTRA_CA_CERTS=)\u002F\\1\u002F' -e 's\u002F^#([[:space:]]*- \\$\\{DOCKER_DRIVER_PRIVATE_CA_PATH\\})\u002F\\1\u002F' docker-compose.yml && rm docker-compose.yml.bak\n",[123,1070,1071],{"__ignoreMap":260},[264,1072,1073,1075,1078,1081,1084,1086,1089,1091,1093,1095,1098,1100,1102,1105,1108],{"class":266,"line":267},[264,1074,325],{"class":270},[264,1076,1077],{"class":274}," -i.bak",[264,1079,1080],{"class":274}," -E",[264,1082,1083],{"class":274}," -e",[264,1085,348],{"class":347},[264,1087,1088],{"class":274},"s\u002F^#([[:space:]]*- \"NODE_EXTRA_CA_CERTS=)\u002F\\1\u002F",[264,1090,354],{"class":347},[264,1092,1083],{"class":274},[264,1094,348],{"class":347},[264,1096,1097],{"class":274},"s\u002F^#([[:space:]]*- \\$\\{DOCKER_DRIVER_PRIVATE_CA_PATH\\})\u002F\\1\u002F",[264,1099,354],{"class":347},[264,1101,281],{"class":274},[264,1103,1104],{"class":347}," &&",[264,1106,1107],{"class":270}," rm",[264,1109,1110],{"class":274}," docker-compose.yml.bak\n",[91,1112,1113,1116,1117],{},[94,1114,1115],{},"Restart the Forge service"," to apply the changes:",[255,1118,1120],{"className":257,"code":1119,"language":259,"meta":260,"style":260},"docker compose restart forge\n",[123,1121,1122],{"__ignoreMap":260},[264,1123,1124,1126,1128,1131],{"class":266,"line":267},[264,1125,638],{"class":270},[264,1127,641],{"class":274},[264,1129,1130],{"class":274}," restart",[264,1132,1133],{"class":274}," forge\n",[91,1135,1136,1139],{},[94,1137,1138],{},"Apply changes to running instances."," Once the platform is online, manually suspend and start all running hosted instances so they pick up the new TLS settings.",[154,1141,1143],{"id":1142},"i-would-like-to-invite-my-team-members-to-the-platform-with-e-mail-how-can-i-do-that","I would like to invite my team members to the platform with e-mail, how can I do that?",[14,1145,1146,1147,1150,1151,1153,1154,1156,1157,1160],{},"In order to configure FlowFuse platform with external e-mail server, you need to adjust ",[123,1148,1149],{},"EMAIL_*"," variables in the ",[123,1152,252],{}," file.\nFind the ",[123,1155,252],{}," file end edit ",[123,1158,1159],{},"Email configuration"," section with following details:",[131,1162,1163,1172,1178,1187,1195,1201],{},[91,1164,1165,1168,1169,1171],{},[123,1166,1167],{},"EMAIL_ENABLED"," - set to ",[123,1170,398],{}," to enable e-mail functionality",[91,1173,1174,1177],{},[123,1175,1176],{},"EMAIL_HOST"," - provide SMTP server host",[91,1179,1180,1183,1184,102],{},[123,1181,1182],{},"EMAIL_PORT"," - provide SMTP server port (default is ",[123,1185,1186],{},"587",[91,1188,1189,1168,1192,1194],{},[123,1190,1191],{},"EMAIL_SECURE",[123,1193,398],{}," if the connection should be secured",[91,1196,1197,1200],{},[123,1198,1199],{},"EMAIL_USER"," - provide SMTP server username",[91,1202,1203,1206,1207],{},[123,1204,1205],{},"EMAIL_PASSWORD"," - provide SMTP for the user defined in ",[123,1208,1199],{},[14,1210,1211],{},"Restart the core application to apply the changes:",[255,1213,1214],{"className":257,"code":1119,"language":259,"meta":260,"style":260},[123,1215,1216],{"__ignoreMap":260},[264,1217,1218,1220,1222,1224],{"class":266,"line":267},[264,1219,638],{"class":270},[264,1221,641],{"class":274},[264,1223,1130],{"class":274},[264,1225,1133],{"class":274},[154,1227,1229],{"id":1228},"connection-refused-error","Connection Refused error",[14,1231,1232],{},"After starting the platform, I can't access it in the browser - I see \"Connection Refused error\"",[14,1234,1235],{},"If you are using the Digital Ocean Docker Droplet to host FlowFuse you will need to ensure that port 80 & 443 are opened in the UFW firewall before starting.",[14,1237,1238],{},"FlowFuse platform is running on ports 80 and 443, so you need to open these ports in the firewall. Below are examples of commands to open these ports:",[14,1240,1241],{},"Ubuntu:",[255,1243,1245],{"className":257,"code":1244,"language":259,"meta":260,"style":260},"sudo ufw apply http\nsudo ufw apply https\n",[123,1246,1247,1261],{"__ignoreMap":260},[264,1248,1249,1252,1255,1258],{"class":266,"line":267},[264,1250,1251],{"class":270},"sudo",[264,1253,1254],{"class":274}," ufw",[264,1256,1257],{"class":274}," apply",[264,1259,1260],{"class":274}," http\n",[264,1262,1263,1265,1267,1269],{"class":266,"line":287},[264,1264,1251],{"class":270},[264,1266,1254],{"class":274},[264,1268,1257],{"class":274},[264,1270,1271],{"class":274}," https\n",[14,1273,1274],{},"CentOS:",[255,1276,1278],{"className":257,"code":1277,"language":259,"meta":260,"style":260},"sudo firewall-cmd --zone=public --add-service=http --permanent\nsudo firewall-cmd --zone=public --add-service=https --permanent\nsudo firewall-cmd --reload\n",[123,1279,1280,1296,1309],{"__ignoreMap":260},[264,1281,1282,1284,1287,1290,1293],{"class":266,"line":267},[264,1283,1251],{"class":270},[264,1285,1286],{"class":274}," firewall-cmd",[264,1288,1289],{"class":274}," --zone=public",[264,1291,1292],{"class":274}," --add-service=http",[264,1294,1295],{"class":274}," --permanent\n",[264,1297,1298,1300,1302,1304,1307],{"class":266,"line":287},[264,1299,1251],{"class":270},[264,1301,1286],{"class":274},[264,1303,1289],{"class":274},[264,1305,1306],{"class":274}," --add-service=https",[264,1308,1295],{"class":274},[264,1310,1311,1313,1315],{"class":266,"line":524},[264,1312,1251],{"class":270},[264,1314,1286],{"class":274},[264,1316,1317],{"class":274}," --reload\n",[14,1319,1320],{},"Windows (command prompt):",[255,1322,1324],{"className":257,"code":1323,"language":259,"meta":260,"style":260},"netsh advfirewall firewall add rule name=\"Open Port 80\" dir=in action=allow protocol=TCP localport=80\nnetsh advfirewall firewall add rule name=\"Open Port 443\" dir=in action=allow protocol=TCP localport=443\n",[123,1325,1326,1369],{"__ignoreMap":260},[264,1327,1328,1331,1334,1337,1340,1343,1346,1348,1351,1353,1356,1359,1362,1365],{"class":266,"line":267},[264,1329,1330],{"class":270},"netsh",[264,1332,1333],{"class":274}," advfirewall",[264,1335,1336],{"class":274}," firewall",[264,1338,1339],{"class":274}," add",[264,1341,1342],{"class":274}," rule",[264,1344,1345],{"class":274}," name=",[264,1347,1042],{"class":347},[264,1349,1350],{"class":274},"Open Port 80",[264,1352,1042],{"class":347},[264,1354,1355],{"class":274}," dir=in",[264,1357,1358],{"class":274}," action=allow",[264,1360,1361],{"class":274}," protocol=TCP",[264,1363,1364],{"class":274}," localport=",[264,1366,1368],{"class":1367},"sbssI","80\n",[264,1370,1371,1373,1375,1377,1379,1381,1383,1385,1388,1390,1392,1394,1396,1398],{"class":266,"line":287},[264,1372,1330],{"class":270},[264,1374,1333],{"class":274},[264,1376,1336],{"class":274},[264,1378,1339],{"class":274},[264,1380,1342],{"class":274},[264,1382,1345],{"class":274},[264,1384,1042],{"class":347},[264,1386,1387],{"class":274},"Open Port 443",[264,1389,1042],{"class":347},[264,1391,1355],{"class":274},[264,1393,1358],{"class":274},[264,1395,1361],{"class":274},[264,1397,1364],{"class":274},[264,1399,1400],{"class":1367},"443\n",[14,1402,1403],{},"Windows (PowerShell):",[255,1405,1409],{"className":1406,"code":1407,"language":1408,"meta":260,"style":260},"language-powershell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","New-NetFireWallRule -DisplayName 'WSL 8080TCP' -Direction Inbound -LocalPort 8080 -Action Allow -Protocol TCP\nNew-NetFireWallRule -DisplayName 'WSL 8080TCP' -Direction Outbound -LocalPort 8080 -Action Allow -Protocol TCP\n","powershell",[123,1410,1411,1416],{"__ignoreMap":260},[264,1412,1413],{"class":266,"line":267},[264,1414,1415],{},"New-NetFireWallRule -DisplayName 'WSL 8080TCP' -Direction Inbound -LocalPort 8080 -Action Allow -Protocol TCP\n",[264,1417,1418],{"class":266,"line":287},[264,1419,1420],{},"New-NetFireWallRule -DisplayName 'WSL 8080TCP' -Direction Outbound -LocalPort 8080 -Action Allow -Protocol TCP\n",[154,1422,1424],{"id":1423},"i-installed-flowfuse-on-windows-with-wsl2-application-is-running-but-i-cant-access-it-in-the-browser","I installed FlowFuse on Windows with WSL2, application is running but I can't access it in the browser",[14,1426,1427,1428,1432],{},"Next to ",[21,1429,1431],{"href":1430},"#connection-refused-error","opening the ports in the firewall",",\nyou need to configure port forwarding from Windows host to WSL2 server.",[14,1434,1435],{},"To forward traffic from an external IP to your container, run the following PowerShell command (administrator privileges required):",[255,1437,1439],{"className":1406,"code":1438,"language":1408,"meta":260,"style":260},"netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=127.0.0.1\n",[123,1440,1441],{"__ignoreMap":260},[264,1442,1443],{"class":266,"line":267},[264,1444,1438],{},[14,1446,1447],{},"This command forwards traffic from port 80 on your external IP address to port 80 on your localhost, where the Nginx Proxy container is listening for connections.",[154,1449,1451],{"id":1450},"how-can-i-enable-persistent-storage-for-node-red-instances","How can I enable persistent storage for Node-RED instances?",[14,1453,1454],{},"Node-RED instances running in Docker do not have direct access to a persistent file system to store files or use for storing context data.",[14,1456,1457],{},"FlowFuse includes a File Storage service that can be enabled to provide persistent storage.",[14,1459,1460,1461,1464],{},"To disable the default File nodes, edit the Template and add ",[123,1462,1463],{},"10-file.js,23-watch.js"," to the \"Exclude nodes by filename\" section",[1466,1467],"img",{"src":1468,"width":1469},"\u002Fdocs\u002Finstall\u002Fimages\u002Ffile-node-template.png",500,[14,1471,1472],{},"FlowFuse Docker Compose files includes FlowFuse File Storage component by default and starts it along with the platform.",[14,1474,1475,1476,25],{},"Full details on configuring the File Storage service are available ",[21,1477,238],{"href":1478},"\u002Fdocs\u002Finstall\u002Ffile-storage",[27,1480,1482],{"id":1481},"uninstall","Uninstall",[131,1484,1485,1496,1503],{},[91,1486,1487,1488,1491,1492,1495],{},"Bring the services down with ",[123,1489,1490],{},"docker compose -p flowfuse down -v"," (note the extra ",[123,1493,1494],{},"-v"," to delete all the volumes, only include this if you do not want to reuse this install)",[91,1497,1498,1499,1502],{},"Use ",[123,1500,1501],{},"docker images"," to list container images",[91,1504,1498,1505,1508,1509],{},[123,1506,1507],{},"docker rmi [imagename]:[tag]"," to remove all images that start with ",[123,1510,1511],{},"flowfuse\u002F",[1513,1514,1515],"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 .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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":260,"searchDepth":530,"depth":530,"links":1517},[1518,1519,1525,1533,1537,1538,1539,1548],{"id":29,"depth":287,"text":30},{"id":83,"depth":287,"text":46,"children":1520},[1521,1524],{"id":156,"depth":524,"text":157,"children":1522},[1523],{"id":193,"depth":530,"text":194},{"id":200,"depth":524,"text":101},{"id":241,"depth":287,"text":242,"children":1526},[1527,1528,1529],{"id":245,"depth":524,"text":246},{"id":302,"depth":524,"text":303},{"id":366,"depth":524,"text":367,"children":1530},[1531,1532],{"id":379,"depth":530,"text":380},{"id":432,"depth":530,"text":433},{"id":610,"depth":287,"text":611,"children":1534},[1535,1536],{"id":627,"depth":530,"text":628},{"id":662,"depth":530,"text":663},{"id":720,"depth":287,"text":721},{"id":737,"depth":287,"text":738},{"id":927,"depth":287,"text":928,"children":1540},[1541,1542,1543,1544,1545,1546,1547],{"id":931,"depth":524,"text":932},{"id":984,"depth":524,"text":985},{"id":1000,"depth":524,"text":456},{"id":1142,"depth":524,"text":1143},{"id":1228,"depth":524,"text":1229},{"id":1423,"depth":524,"text":1424},{"id":1450,"depth":524,"text":1451},{"id":1481,"depth":287,"text":1482},"md",null,{},"Docker install",true,"install\u002Fdocker\u002FREADME.md","\u002Fdocs\u002Finstall\u002Fdocker",{"title":5,"description":16},"docs\u002Finstall\u002Fdocker\u002Findex","2026-08-04 15:31:36 +0200","2.33.2","eD4mc9t7NGKOnmk3YtObI_MyJKYOq0CaTJ_34fK4xtw",{"id":1562,"extension":1563,"meta":1564,"sections":1565,"stem":1954,"__hash__":1955},"featureCatalog\u002Ffeature-catalog.yml","yml",{},[1566,1617,1718,1780,1857,1936],{"id":1567,"title":1568,"features":1569},"ai-automation","AI & Automation",[1570,1580,1590,1600,1606,1612],{"id":1571,"title":1572,"description":1573,"docsLink":1574,"changelog":1575,"tiers":1579},"flowfuse-expert-ai","FlowFuse Expert AI","Build industrial apps with agents, and query the state of the factory with an agent. Adapt your current hardware and machines so agentic work can be done against them, without ripping and replacing what's already on the plant floor.","\u002Fdocs\u002Fuser\u002Fexpert\u002F",[1576],{"url":1577,"release":1578},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-update-banner\u002F","2.28",{"edge":1553,"hub":1553,"fleet":1553},{"id":1581,"title":1582,"description":1583,"docsLink":1584,"changelog":1585,"subfeature":1553,"showOnPricing":1588,"tiers":1589},"flowfuse-expert-support-mode","Support Mode","Chat-based assistance for FlowFuse and Node-RED, including Node-RED instance management through natural language.","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat\u002F#support-mode",[1586],{"url":1587,"release":1578},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-debug-log-context\u002F",false,{"edge":1553,"hub":1553,"fleet":1553},{"id":1591,"title":1592,"description":1593,"docsLink":1594,"changelog":1595,"subfeature":1553,"showOnPricing":1588,"tiers":1599},"flowfuse-expert-application-building","Application Building","Describe what you want to build and FlowFuse Expert assembles it on your workspace, adding tabs, wiring nodes, and configuring properties.","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat\u002F",[1596],{"url":1597,"release":1598},"\u002Fchangelog\u002F2026\u002F05\u002Fexpert-application-building\u002F","2.30",{"edge":1553,"hub":1553,"fleet":1553},{"id":1601,"title":1602,"description":1603,"docsLink":1604,"subfeature":1553,"beta":1553,"showOnPricing":1588,"tiers":1605},"flowfuse-expert-insights-mode","Insights Mode","Connects FlowFuse Expert to MCP servers in your Node-RED instances, enabling real-time data queries and actions through a single chat interface.","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat\u002F#insights-mode",{"edge":1553,"hub":1553,"fleet":1553},{"id":1607,"title":1608,"description":1609,"docsLink":1610,"tiers":1611},"mcp-servers","Agentic Operations","Expose your Node-RED flows as tools an AI agent can call directly, so agents can query the state of the factory or trigger actions without custom integration work.","\u002Fnode-red\u002Fflowfuse\u002Fmcp\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1613,"title":1614,"description":1615,"tiers":1616},"onnx-integration","ONNX Integration","Run trained machine learning models directly in your flows, including on edge hardware, without sending data out to an external inference service.",{"edge":1553,"hub":1553,"fleet":1553},{"id":1618,"title":1619,"features":1620},"build","Build",[1621,1627,1633,1643,1649,1655,1659,1665,1671,1679,1685,1689,1693,1702,1710],{"id":1622,"title":1623,"description":1624,"docsLink":1625,"tiers":1626},"edge-development","Edge Development","Develop and test Node-RED flows directly on edge devices with a remote editor proxy.","\u002Fdocs\u002Fdevice-agent\u002Fquickstart\u002F",{"edge":1553,"hub":1588,"fleet":1553},{"id":1628,"title":1629,"description":1630,"docsLink":1631,"tiers":1632},"private-npm-registry","Custom Node-RED Nodes","Create and manage your own private npm registry for Node-RED nodes, so you can share custom nodes across your team and devices without publishing them publicly.","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1634,"title":1635,"description":1636,"docsLink":1637,"changelog":1638,"tiers":1642},"flowfuse-tables","FlowFuse Tables","A managed PostgreSQL database for every application, so you can store and query structured data without standing up and maintaining your own database.","\u002Fdocs\u002Fuser\u002Fff-tables\u002F",[1639],{"url":1640,"release":1641},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-tables-automation\u002F","2.33",{"edge":1553,"hub":1553,"fleet":1553},{"id":1644,"title":1645,"description":1646,"docsLink":1647,"tiers":1648},"persistent-files","File Storage","Store and retrieve files from your Node-RED flows, with automatic replication and backup across your devices and hosted instances.","\u002Fdocs\u002Finstall\u002Ffile-storage\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1650,"title":1651,"description":1652,"docsLink":1653,"showOnPricing":1588,"tiers":1654},"persistent-context","Persistent Context","In-memory values defined in a Node-RED flow persist across project restarts and upgrades.","\u002Fdocs\u002Fuser\u002Fpersistent-context\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1656,"title":1657,"showOnPricing":1588,"tiers":1658},"static-assets","Static Assets",{"edge":1553,"hub":1553,"fleet":1553},{"id":1660,"title":1661,"description":1662,"docsLink":1663,"tiers":1664},"team-library","Team Library","Set up standard nodes and flows that can be shared with all team members across your organisation.","\u002Fdocs\u002Fuser\u002Fshared-library\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1666,"title":1667,"description":1668,"docsLink":1669,"tiers":1670},"personalised-multi-user-dashboards","Personalised Multi-User Dashboards","Build applications that provide unique data to each logged-in user using personalised multi-user dashboards.","https:\u002F\u002Fdashboard.flowfuse.com\u002Fuser\u002Fmulti-tenancy.html",{"edge":1553,"hub":1553,"fleet":1553},{"id":1672,"title":1673,"description":1674,"changelog":1675,"subfeature":1553,"showOnPricing":1588,"tiers":1678},"dashboards-view","Dashboards View","Browse and open every dashboard across your team from a dedicated Dashboards view, at both team and application level, without leaving FlowFuse.",[1676],{"url":1677,"release":1641},"\u002Fchangelog\u002F2026\u002F07\u002Fteam-and-application-dashboards\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1680,"title":1681,"description":1682,"docsLink":1683,"tiers":1684},"blueprints-converge","Blueprints","Ready-made starting points for your apps, from cross-team Converge templates to OT and IT specific blueprints.","\u002Fdocs\u002Fuser\u002Fconcepts\u002F#blueprint",{"edge":1553,"hub":1553,"fleet":1553},{"id":1686,"title":1687,"subfeature":1553,"showOnPricing":1588,"tiers":1688},"blueprints-ot-apps","Blueprints - OT APPS",{"edge":1553,"hub":1588,"fleet":1553},{"id":1690,"title":1691,"subfeature":1553,"showOnPricing":1588,"tiers":1692},"blueprints-it-apps","Blueprints - IT APPS",{"edge":1588,"hub":1553,"fleet":1588},{"id":1694,"title":1695,"description":1696,"changelog":1697,"showOnPricing":1588,"tiers":1701},"immersive-editor-snapshots","Snapshot Details in Immersive Editor","View and manage snapshot details directly inside the immersive editor without leaving your editing session.",[1698],{"url":1699,"release":1700},"\u002Fchangelog\u002F2026\u002F03\u002Fsnapshot-detail-modal-immersive-editor\u002F","2.29",{"edge":1553,"hub":1553,"fleet":1553},{"id":1703,"title":1704,"description":1705,"changelog":1706,"showOnPricing":1588,"tiers":1709},"immersive-editor-drawer","Customisable Immersive Editor Drawer","Pin, move, resize, or full-screen the immersive editor drawer. Your preferences are remembered between sessions.",[1707],{"url":1708,"release":1598},"\u002Fchangelog\u002F2026\u002F04\u002Fimmersive-editor-drawer\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1711,"title":1712,"description":1713,"changelog":1714,"showOnPricing":1588,"tiers":1717},"embedded-editor-tab-title","Embedded Editor Browser Tab Title","The browser tab title updates to reflect the active Node-RED canvas tab when working in the embedded editor.",[1715],{"url":1716,"release":1700},"\u002Fchangelog\u002F2026\u002F03\u002Fembedded-editor-tab-title\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1719,"title":1720,"features":1721},"deploy","Deploy",[1722,1728,1737,1743,1749,1755,1761,1767,1772],{"id":1723,"title":1724,"description":1725,"docsLink":1726,"tiers":1727},"hosted-instances","Cloud Instances","Run Node-RED instances managed and hosted by FlowFuse.","\u002Fdocs\u002Fuser\u002Fintroduction\u002F#creating-a-node-red-instance",{"edge":1553,"hub":1553,"fleet":1553},{"id":1729,"title":1730,"description":1731,"docsLink":1732,"changelog":1733,"tiers":1736},"edge-devices","Edge Instances","Deploy and mange your Node-RED instances on edge PLCs and gateways, with full visibility and control from the cloud.","\u002Fdocs\u002Fdevice-agent\u002Fintroduction\u002F",[1734],{"url":1735,"release":1578},"\u002Fchangelog\u002F2026\u002F02\u002Fdevice-agent-nodejs-options\u002F",{"edge":1553,"hub":1588,"fleet":1553},{"id":1738,"title":1739,"description":1740,"docsLink":1741,"tiers":1742},"custom-hostnames","Custom Hostnames","Access your Node-RED application via your own domain name.","\u002Fdocs\u002Fuser\u002Fcustom-hostnames\u002F",{"edge":1588,"hub":1553,"fleet":1588},{"id":1744,"title":1745,"description":1746,"docsLink":1747,"tiers":1748},"mqtt-broker","MQTT Broker","Manage and create MQTT clients to transport data for efficient messaging and communication within your applications.","\u002Fdocs\u002Fuser\u002Fteambroker\u002F",{"edge":1553,"hub":1588,"fleet":1553},{"id":1750,"title":1751,"description":1752,"docsLink":1753,"showOnPricing":1588,"tiers":1754},"project-nodes","Project Nodes aka seamless project comms","FlowFuse Project Nodes enable the passing of data and messages between your Node-RED projects.","\u002Fdocs\u002Fuser\u002Fprojectnodes\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1756,"title":1757,"description":1758,"docsLink":1759,"tiers":1760},"devops-pipelines","DevOps Pipelines","Set up different environments for development, testing, and production Node-RED instances to support a full software delivery lifecycle.","\u002Fdocs\u002Fuser\u002Fdevops-pipelines\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1762,"title":1763,"description":1764,"docsLink":1765,"tiers":1766},"git-integration","Git Integration","Back up your flows to a remote Git repository through a DevOps Pipeline. Supports GitHub and Azure DevOps repositories.","\u002Fdocs\u002Fuser\u002Fdevops-pipelines\u002F#git-repository-stage",{"edge":1588,"hub":1553,"fleet":1588},{"id":1768,"title":1769,"description":1770,"docsLink":1765,"subfeature":1553,"showOnPricing":1588,"tiers":1771},"git-integration-github","GitHub","Push and pull snapshots to GitHub repositories through DevOps Pipeline Git Stages.",{"edge":1588,"hub":1553,"fleet":1588},{"id":1773,"title":1774,"description":1775,"docsLink":1765,"changelog":1776,"subfeature":1553,"showOnPricing":1588,"tiers":1779},"git-integration-azure","Azure DevOps","Push and pull snapshots to Azure DevOps repositories through DevOps Pipeline Git Stages.",[1777],{"url":1778,"release":1700},"\u002Fchangelog\u002F2026\u002F03\u002Fazure-dev-ops-gitops\u002F",{"edge":1588,"hub":1553,"fleet":1588},{"id":1781,"title":1782,"features":1783},"operate-maintain","Operate & Maintain",[1784,1790,1796,1801,1809,1813,1817,1822,1828,1834,1839,1845,1849,1853],{"id":1785,"title":1786,"description":1787,"docsLink":1788,"tiers":1789},"snapshots","Snapshots & Version History","Automatic snapshots on remote devices and hosted instances, plus a full version history timeline so you can roll back to any prior state.","\u002Fdocs\u002Fuser\u002Fsnapshots\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1791,"title":1792,"description":1793,"docsLink":1794,"subfeature":1553,"showOnPricing":1588,"tiers":1795},"auto-snapshot-remote","Auto Snapshot (Remote)","Automatically capture a snapshot every time a remote instance is deployed, so you always have a recoverable history of what was running on each device.","\u002Fdocs\u002Fuser\u002Fsnapshots\u002F#auto-snapshots",{"edge":1553,"hub":1553,"fleet":1553},{"id":1797,"title":1798,"description":1799,"docsLink":1794,"subfeature":1553,"showOnPricing":1588,"tiers":1800},"auto-snapshot-hosted","Auto Snapshot (Hosted)","Automatically capture a snapshot every time a hosted instance is deployed, so you always have a recoverable history of what was running.",{"edge":1553,"hub":1553,"fleet":1553},{"id":1802,"title":1803,"description":1804,"changelog":1805,"subfeature":1553,"showOnPricing":1588,"tiers":1808},"snapshot-comparison","Snapshot Comparison","Compare two snapshots side-by-side with a navigable diff view. Step through every changed, added, or deleted node and see property and code diffs.",[1806],{"url":1807,"release":1700},"\u002Fchangelog\u002F2026\u002F04\u002Fsnapshot-diff-viewer\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1810,"title":1811,"subfeature":1553,"showOnPricing":1588,"tiers":1812},"version-history-timeline","Version History Timeline",{"edge":1553,"hub":1553,"fleet":1553},{"id":1814,"title":1815,"tiers":1816},"unlimited-workflow-executions","Unlimited Workflow Executions",{"edge":1553,"hub":1553,"fleet":1553},{"id":1818,"title":1819,"description":1820,"tiers":1821},"device-fleet-updates","Device Fleet Updates","Connect to edge devices to quickly assess and update logic. Debug one device and roll out improvements to your fleet in minutes, securely without requiring full device access for your whole organisation.",{"edge":1553,"hub":1588,"fleet":1553},{"id":1823,"title":1824,"description":1825,"docsLink":1826,"tiers":1827},"device-group-management","Device Group Management","Logically group devices assigned to an application and integrate device groups into your DevOps Pipeline for coordinated fleet updates.","\u002Fdocs\u002Fuser\u002Fdevice-groups\u002F",{"edge":1553,"hub":1588,"fleet":1553},{"id":1829,"title":1830,"description":1831,"docsLink":1832,"tiers":1833},"high-availability","High Availability","Leverage horizontal scaling for reliable and scalable processing of your data through Node-RED.","\u002Fdocs\u002Fuser\u002Fhigh-availability\u002F",{"edge":1588,"hub":1553,"fleet":1588},{"id":1835,"title":1836,"description":1837,"tiers":1838},"performance-monitoring","Performance Monitoring & Alerts","Track CPU, memory, and event loop performance across your instances and devices, with email alerts when something needs your attention.",{"edge":1553,"hub":1553,"fleet":1553},{"id":1840,"title":1841,"description":1842,"docsLink":1843,"subfeature":1553,"showOnPricing":1588,"tiers":1844},"instance-monitoring","Instance Monitoring","Enable alerts to be sent via email when your Node-RED instances encounter issues.","\u002Fdocs\u002Fuser\u002Finstance-settings\u002F#alerts",{"edge":1553,"hub":1553,"fleet":1553},{"id":1846,"title":1847,"subfeature":1553,"showOnPricing":1588,"tiers":1848},"email-alerts","Email Alerts",{"edge":1553,"hub":1553,"fleet":1553},{"id":1850,"title":1851,"showOnPricing":1588,"tiers":1852},"api-debug-length-limit","API\u002FDebug Length Limit",{"edge":1553,"hub":1553,"fleet":1553},{"id":1854,"title":1855,"tiers":1856},"protected-instances","Protected Instances",{"edge":1588,"hub":1553,"fleet":1588},{"id":1858,"title":1859,"features":1860},"govern-secure","Govern and Secure",[1861,1870,1876,1882,1887,1893,1899,1905,1913,1919,1925,1931],{"id":1862,"title":1863,"description":1864,"docsLink":1865,"changelog":1866,"tiers":1869},"single-sign-on","Single Sign-On (SSO)","Configure FlowFuse to work with your own SSO provider, allowing users to access FlowFuse with a single set of login credentials.","\u002Fdocs\u002Fadmin\u002Fsso\u002F",[1867],{"url":1868,"release":1641},"\u002Fchangelog\u002F2026\u002F07\u002Fapplication-sso-groups\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1871,"title":1872,"description":1873,"docsLink":1874,"tiers":1875},"two-factor-authentication","Two-Factor Authentication","Two-factor authentication adds an extra layer of security to your FlowFuse account.","\u002Fdocs\u002Fuser\u002Fuser-settings\u002F#two-factor-authentication",{"edge":1553,"hub":1553,"fleet":1553},{"id":1877,"title":1878,"description":1879,"docsLink":1880,"tiers":1881},"certified-nodes-it","Certified Nodes - IT","IT certified node bundle includes: Redis, MQTT, HTTP Request, AI nodes (Gemini, Claude, ChatGPT, Ollama), MCP Server","\u002Fblog\u002F2025\u002F07\u002Fcertified-nodes-v2\u002F",{"edge":1588,"hub":1553,"fleet":1553},{"id":1883,"title":1884,"description":1885,"tiers":1886},"certified-nodes-ot","Certified OT Connections - OPC-UA, Modbus, etc.","OT certified node bundle includes: OPC-UA, Modbus TCP & RTU, RTSP, EtherNet\u002FIP, AI nodes (Gemini, Claude, ChatGPT, Ollama), MCP Server",{"edge":1553,"hub":1588,"fleet":1588},{"id":1888,"title":1889,"description":1890,"docsLink":1891,"tiers":1892},"audit-log","Audit Log","Keep track of everything going on in your Node-RED instances and FlowFuse. Audit Logs provide details on what actions have taken place, when they happened, and who did them.","\u002Fdocs\u002Fuser\u002Flogs\u002F#audit-log",{"edge":1553,"hub":1553,"fleet":1553},{"id":1894,"title":1895,"description":1896,"docsLink":1897,"tiers":1898},"role-based-access-control","Role-Based Access Control","Control who can do what at both the team and application level, from viewers to admins.","\u002Fdocs\u002Fuser\u002Frole-based-access-control\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1900,"title":1901,"description":1902,"docsLink":1903,"subfeature":1553,"showOnPricing":1588,"tiers":1904},"application-level-rbac","Application-Level RBAC","Fine-grained access control per application, allowing team members to have different permission levels across different applications without requiring separate teams.","\u002Fdocs\u002Fuser\u002Frole-based-access-control\u002F#application-level-rbac",{"edge":1553,"hub":1553,"fleet":1553},{"id":1906,"title":1907,"description":1908,"changelog":1909,"subfeature":1553,"showOnPricing":1588,"tiers":1912},"scoped-personal-access-tokens","Scoped Personal Access Tokens","Restrict a Personal Access Token to specific teams, limit it to read-only operations, or control whether it carries admin privileges.",[1910],{"url":1911,"release":1641},"\u002Fchangelog\u002F2026\u002F07\u002Fscoped-pats\u002F",{"edge":1553,"hub":1553,"fleet":1553},{"id":1914,"title":1915,"description":1916,"docsLink":1917,"showOnPricing":1588,"tiers":1918},"team-members","Team Members","Invite multiple team members to collaborate on the same Node-RED flows.","\u002Fdocs\u002Fuser\u002Fteam\u002F#teams",{"edge":1553,"hub":1553,"fleet":1553},{"id":1920,"title":1921,"description":1922,"docsLink":1923,"showOnPricing":1588,"tiers":1924},"endpoint-security","Endpoint Security","Secure HTTP endpoints for hosted Node-RED instances using FlowFuse credentials.","\u002Fdocs\u002Fuser\u002Finstance-settings\u002F#security",{"edge":1553,"hub":1553,"fleet":1553},{"id":1926,"title":1927,"description":1928,"docsLink":1929,"tiers":1930},"baa-for-hipaa","BAA for HIPAA","FlowFuse can sign a Business Associate Agreement to ensure proper safeguarding of protected health information handled on your behalf.","\u002Fhandbook\u002Fsales\u002Fsubscription-agreement-1.5\u002F",{"edge":1588,"hub":1553,"fleet":1588},{"id":1932,"title":1933,"description":1934,"tiers":1935},"sbom","Software Bill of Materials","A complete list of all software components used in your Node-RED instances and hosted applications, including version numbers and license information.",{"edge":1588,"hub":1553,"fleet":1588},{"id":1937,"title":1938,"features":1939},"support","Support",[1940,1945,1949],{"id":1941,"title":1942,"docsLink":1943,"tiers":1944},"installation-support","Installation Support","\u002Fdocs\u002Finstall\u002Fintroduction\u002F#do-you-need-help-installation-service",{"edge":1553,"hub":1553,"fleet":1553},{"id":1946,"title":1947,"showOnPricing":1588,"tiers":1948},"live-chat-support","Live Chat Support",{"edge":1553,"hub":1553,"fleet":1553},{"id":1950,"title":1951,"docsLink":1952,"tiers":1953},"enterprise-support","Enterprise Support","\u002Fdocs\u002Fpremium-support\u002F",{"edge":1553,"hub":1553,"fleet":1553},"feature-catalog","0AnkhTIPCECCwP9NmbTWP5HvRYx4FTSao4lG93-HaWM",[1957,1964,1982,1992],{"name":1958,"order":267,"children":1959},"FlowFuse User Manuals",[1960],{"title":1961,"path":1962,"group":1958,"groupOrder":267,"order":287,"children":1963},"FlowFuse API","\u002Fdocs\u002Fapi",[],{"name":1965,"order":530,"children":1966},"FlowFuse Self-Hosted",[1967,1970],{"title":1968,"path":23,"group":1965,"groupOrder":530,"order":267,"children":1969},"Quick Start",[],{"title":1971,"path":1972,"group":1965,"groupOrder":530,"order":524,"children":1973},"Upgrading FlowFuse","\u002Fdocs\u002Fupgrade",[1974,1978],{"title":1975,"path":1976,"order":1550,"children":1977},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":1979,"path":1980,"order":1550,"children":1981},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"name":1938,"order":536,"children":1983},[1984,1988],{"title":1985,"path":1986,"group":1938,"groupOrder":536,"order":524,"children":1987},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":1989,"path":1990,"group":1938,"groupOrder":536,"order":1550,"children":1991},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":1993,"order":1550,"children":1994},"Other",[1995,2043,2055,2134,2181,2200,2267,2278],{"title":1996,"path":1997,"order":1550,"children":1998},"admin","\u002Fdocs\u002Fadmin",[1999,2003,2015,2023,2027,2031,2035,2039],{"title":2000,"path":2001,"order":267,"children":2002},"Administering FlowFuse","\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":2004,"path":2005,"order":1550,"children":2006},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[2007,2011],{"title":2008,"path":2009,"order":1550,"children":2010},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":2012,"path":2013,"order":1550,"children":2014},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":2016,"path":2017,"order":1550,"children":2018},"hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[2019],{"title":2020,"path":2021,"order":1550,"children":2022},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":2024,"path":2025,"order":1550,"children":2026},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":2028,"path":2029,"order":1550,"children":2030},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":2032,"path":2033,"order":1550,"children":2034},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":2036,"path":2037,"order":1550,"children":2038},"Telemetry","\u002Fdocs\u002Fadmin\u002Ftelemetry",[],{"title":2040,"path":2041,"order":1550,"children":2042},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"title":2044,"path":2045,"order":1550,"children":2046},"cloud","\u002Fdocs\u002Fcloud",[2047,2051],{"title":2048,"path":2049,"order":267,"children":2050},"Introduction","\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":2052,"path":2053,"order":1550,"children":2054},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"title":2056,"path":2057,"order":1550,"children":2058},"contribute","\u002Fdocs\u002Fcontribute",[2059,2062,2066,2070,2074,2078,2082,2090,2126,2130],{"title":2048,"path":2060,"order":267,"children":2061},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":2063,"path":2064,"order":1550,"children":2065},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":2067,"path":2068,"order":1550,"children":2069},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":2071,"path":2072,"order":1550,"children":2073},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":2075,"path":2076,"order":1550,"children":2077},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":2079,"path":2080,"order":1550,"children":2081},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":2083,"path":2084,"order":1550,"children":2085},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[2086],{"title":2087,"path":2088,"order":1550,"children":2089},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":2091,"path":2092,"order":1550,"children":2093},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[2094,2098,2102,2106,2110,2114,2118,2122],{"title":2095,"path":2096,"order":1550,"children":2097},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":2099,"path":2100,"order":1550,"children":2101},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":2103,"path":2104,"order":1550,"children":2105},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":2107,"path":2108,"order":1550,"children":2109},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":2111,"path":2112,"order":1550,"children":2113},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":2115,"path":2116,"order":1550,"children":2117},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":2119,"path":2120,"order":1550,"children":2121},"User Login Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",[],{"title":2123,"path":2124,"order":1550,"children":2125},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":2127,"path":2128,"order":1550,"children":2129},"Team Broker","\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":2131,"path":2132,"order":1550,"children":2133},"Working with Feature Flags","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",[],{"title":2135,"path":2136,"order":1550,"children":2137},"device-agent","\u002Fdocs\u002Fdevice-agent",[2138,2142,2145,2149,2153,2157],{"title":2139,"path":2140,"order":267,"children":2141},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":1968,"path":2143,"order":287,"children":2144},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":2146,"path":2147,"order":530,"children":2148},"Register your Remote Instance","\u002Fdocs\u002Fdevice-agent\u002Fregister",[],{"title":2150,"path":2151,"order":536,"children":2152},"Running the Agent","\u002Fdocs\u002Fdevice-agent\u002Frunning",[],{"title":2154,"path":2155,"order":542,"children":2156},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",[],{"title":2158,"path":2159,"order":1550,"children":2160},"install","\u002Fdocs\u002Fdevice-agent\u002Finstall",[2161,2166,2170,2173,2177],{"title":2162,"path":2163,"group":2164,"order":267,"children":2165},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview","DeviceAgentInstallation",[],{"title":2167,"path":2168,"group":2164,"order":287,"children":2169},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":5,"path":2171,"group":2164,"order":524,"children":2172},"\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",[],{"title":2174,"path":2175,"group":2164,"order":530,"children":2176},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":2178,"path":2179,"group":2164,"order":536,"children":2180},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":2182,"path":2183,"order":1550,"children":2184},"hardware","\u002Fdocs\u002Fhardware",[2185,2188,2192,2196],{"title":2162,"path":2186,"order":267,"children":2187},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":2189,"path":2190,"order":287,"children":2191},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":2193,"path":2194,"order":524,"children":2195},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":2197,"path":2198,"order":524,"children":2199},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"title":2158,"path":2201,"order":1550,"children":2202},"\u002Fdocs\u002Finstall",[2203,2206,2210,2213,2231,2234,2236,2239],{"title":2162,"path":2204,"order":267,"children":2205},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":2207,"path":2208,"order":1550,"children":2209},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":2211,"path":237,"order":1550,"children":2212},"DNS Setup",[],{"title":1552,"path":1555,"order":1550,"children":2214},[2215,2219,2223,2227],{"title":2216,"path":2217,"order":1550,"children":2218},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":2220,"path":2221,"order":1550,"children":2222},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":2224,"path":2225,"order":1550,"children":2226},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":2228,"path":2229,"order":1550,"children":2230},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":1159,"path":2232,"order":1550,"children":2233},"\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":721,"path":730,"order":1550,"children":2235},[],{"title":2237,"path":1478,"order":1550,"children":2238},"FlowFuse File Storage",[],{"title":2240,"path":2241,"order":1550,"children":2242},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[2243,2247,2251,2255,2259,2263],{"title":2244,"path":2245,"order":1550,"children":2246},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":2248,"path":2249,"order":1550,"children":2250},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":2252,"path":2253,"order":1550,"children":2254},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":2256,"path":2257,"order":1550,"children":2258},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":2260,"path":2261,"order":1550,"children":2262},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":2264,"path":2265,"order":1550,"children":2266},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":2268,"path":2269,"order":1550,"children":2270},"migration","\u002Fdocs\u002Fmigration",[2271,2274],{"title":2048,"path":2272,"order":267,"children":2273},"\u002Fdocs\u002Fmigration\u002Fintroduction",[],{"title":2275,"path":2276,"order":1550,"children":2277},"Node-RED Tools plugin","\u002Fdocs\u002Fmigration\u002Fnode-red-tools",[],{"title":2279,"path":2280,"order":1550,"children":2281},"user","\u002Fdocs\u002Fuser",[2282,2286,2290,2294,2298,2302,2306,2309,2313,2317,2320,2324,2336,2340,2344,2348,2352,2355,2359,2363,2367,2371,2375,2378,2382,2386,2389,2393],{"title":2283,"path":2284,"order":267,"children":2285},"Getting Started","\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":2287,"path":2288,"order":267,"children":2289},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":2291,"path":2292,"order":287,"children":2293},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":2295,"path":2296,"order":287,"children":2297},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":2299,"path":2300,"order":563,"children":2301},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",[],{"title":2303,"path":2304,"order":1550,"children":2305},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":1739,"path":2307,"order":1550,"children":2308},"\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":2310,"path":2311,"order":1550,"children":2312},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":2314,"path":2315,"order":1550,"children":2316},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":1757,"path":2318,"order":1550,"children":2319},"\u002Fdocs\u002Fuser\u002Fdevops-pipelines",[],{"title":2321,"path":2322,"order":1550,"children":2323},"Environment Variables","\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":2325,"path":2326,"order":1550,"children":2327},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[2328,2332],{"title":2329,"path":2330,"order":1550,"children":2331},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":2333,"path":2334,"order":1550,"children":2335},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":2337,"path":2338,"order":1550,"children":2339},"FlowFuse File Nodes","\u002Fdocs\u002Fuser\u002Ffilenodes",[],{"title":2341,"path":2342,"order":1550,"children":2343},"FlowFuse MQTT Nodes","\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":2345,"path":2346,"order":1550,"children":2347},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":2349,"path":2350,"order":1550,"children":2351},"FlowFuse Project Nodes","\u002Fdocs\u002Fuser\u002Fprojectnodes",[],{"title":1635,"path":2353,"order":1550,"children":2354},"\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":2356,"path":2357,"order":1550,"children":2358},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":2360,"path":2361,"order":1550,"children":2362},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":2364,"path":2365,"order":1550,"children":2366},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":2368,"path":2369,"order":1550,"children":2370},"Instance Settings","\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":2372,"path":2373,"order":1550,"children":2374},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":1895,"path":2376,"order":1550,"children":2377},"\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":2379,"path":2380,"order":1550,"children":2381},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":2383,"path":2384,"order":1550,"children":2385},"Snapshots","\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":2127,"path":2387,"order":1550,"children":2388},"\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":2390,"path":2391,"order":1550,"children":2392},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":2394,"path":2395,"order":1550,"children":2396},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],1786717928941]