[{"data":1,"prerenderedAt":1609},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fadmin\u002Ftelemetry\u002F":3,"docs-nav":1156},{"id":4,"title":5,"body":6,"description":16,"extension":1144,"layout":1145,"meta":1146,"navGroup":1145,"navGroupOrder":1145,"navOrder":1145,"navTitle":1147,"navigation":1148,"originalPath":1149,"path":1150,"redirect":1145,"seo":1151,"stem":1152,"updated":1153,"version":1154,"__hash__":1155},"docs\u002Fdocs\u002Fadmin\u002Ftelemetry.md","Usage Telemetry",{"type":7,"value":8,"toc":1132},"minimark",[9,13,17,20,23,33,38,43,46,54,60,95,99,102,664,781,788,792,795,803,810,814,817,820,866,869,968,1083,1094,1099,1102,1128],[10,11,5],"h1",{"id":12},"usage-telemetry",[14,15,16],"p",{},"The platform shares anonymous usage information with us at FlowFuse. This helps\nus understand how the platform is being used, what areas need improvement\nand how we should prioritise future work.",[14,18,19],{},"Ultimately, it helps us produce a better platform for all its users.",[14,21,22],{},"We do not collect:",[24,25,26,30],"ul",{},[27,28,29],"li",{},"Any personally identifiable information. We do store a secure hash of the sending IP address - but the plain value is never stored",[27,31,32],{},"Any specific details of the flows running on the platform.",[34,35,37],"h2",{"id":36},"core-telemetry","Core Telemetry",[39,40,42],"h3",{"id":41},"configuring-telemetry","Configuring Telemetry",[14,44,45],{},"By default, usage telemetry is enabled on the platform. The administrator can\nopt-out of sharing information as part of the initial setup, or through the Admin\nSettings section of the platform UI.",[14,47,48,49,53],{},"It is also possible to disable in the ",[50,51,52],"code",{},"flowforge.yml"," configuration file. This\noverrides whatever option is set in the Admin Settings UI.",[14,55,56],{},[57,58,59],"strong",{},"IMPORTANT: Licensed installations cannot disable telemetry",[61,62,67],"pre",{"className":63,"code":64,"language":65,"meta":66,"style":66},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","telemetry:\n  enabled: false\n","yaml","",[50,68,69,82],{"__ignoreMap":66},[70,71,74,78],"span",{"class":72,"line":73},"line",1,[70,75,77],{"class":76},"swJcz","telemetry",[70,79,81],{"class":80},"sMK4o",":\n",[70,83,85,88,91],{"class":72,"line":84},2,[70,86,87],{"class":76},"  enabled",[70,89,90],{"class":80},":",[70,92,94],{"class":93},"sfNiH"," false\n",[39,96,98],{"id":97},"collected-data","Collected Data",[14,100,101],{},"The following pieces of information are included in the telemetry sent back to us:",[61,103,107],{"className":104,"code":105,"language":106,"meta":66,"style":66},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"instanceId\": \"5db51f99-c6fb-4340-9c19-78adce58cc1b\",\n  \"os\": { \"type\": \"Darwin\", \"release\": \"20.5.0\", \"arch\": \"x64\" },\n  \"env\": { \"nodejs\": \"v16.19.1\", \"flowforge\": \"1.0.0\" },\n  \"platform\": {\n    \"counts\": {\n      \"users\": 6,\n      \"teams\": 5,\n      \"projects\": 4,\n      \"devices\": 9,\n      \"projectSnapshots\": 16,\n      \"projectTemplates\": 7,\n      \"projectStacks\": 2,\n      \"libraryEntries\": 0,\n      \"sharedLibraryEntries\": 2\n    },\n    \"config\": {\n      \"driver\": \"localfs\",\n      \"broker\": {\n        \"enabled\": true\n      },\n      \"fileStore\": {\n        \"enabled\": true\n      },\n      \"email\": {\n        \"enabled\": false\n      }\n    },\n    \"license\": {\n      \"id\": \"4c105579-782b-4d53-af62-cf7fa69f6b43\",\n      \"type\": \"DEV\"\n    }\n  }\n}\n","json",[50,108,109,114,140,212,262,277,292,311,328,345,362,379,396,413,430,445,451,465,486,500,516,522,536,549,554,568,581,587,592,606,627,646,652,658],{"__ignoreMap":66},[70,110,111],{"class":72,"line":73},[70,112,113],{"class":80},"{\n",[70,115,116,119,123,126,128,131,135,137],{"class":72,"line":84},[70,117,118],{"class":80},"  \"",[70,120,122],{"class":121},"spNyl","instanceId",[70,124,125],{"class":80},"\"",[70,127,90],{"class":80},[70,129,130],{"class":80}," \"",[70,132,134],{"class":133},"sfazB","5db51f99-c6fb-4340-9c19-78adce58cc1b",[70,136,125],{"class":80},[70,138,139],{"class":80},",\n",[70,141,143,145,148,150,152,155,157,161,163,165,167,170,172,175,177,180,182,184,186,189,191,193,195,198,200,202,204,207,209],{"class":72,"line":142},3,[70,144,118],{"class":80},[70,146,147],{"class":121},"os",[70,149,125],{"class":80},[70,151,90],{"class":80},[70,153,154],{"class":80}," {",[70,156,130],{"class":80},[70,158,160],{"class":159},"sBMFI","type",[70,162,125],{"class":80},[70,164,90],{"class":80},[70,166,130],{"class":80},[70,168,169],{"class":133},"Darwin",[70,171,125],{"class":80},[70,173,174],{"class":80},",",[70,176,130],{"class":80},[70,178,179],{"class":159},"release",[70,181,125],{"class":80},[70,183,90],{"class":80},[70,185,130],{"class":80},[70,187,188],{"class":133},"20.5.0",[70,190,125],{"class":80},[70,192,174],{"class":80},[70,194,130],{"class":80},[70,196,197],{"class":159},"arch",[70,199,125],{"class":80},[70,201,90],{"class":80},[70,203,130],{"class":80},[70,205,206],{"class":133},"x64",[70,208,125],{"class":80},[70,210,211],{"class":80}," },\n",[70,213,215,217,220,222,224,226,228,231,233,235,237,240,242,244,246,249,251,253,255,258,260],{"class":72,"line":214},4,[70,216,118],{"class":80},[70,218,219],{"class":121},"env",[70,221,125],{"class":80},[70,223,90],{"class":80},[70,225,154],{"class":80},[70,227,130],{"class":80},[70,229,230],{"class":159},"nodejs",[70,232,125],{"class":80},[70,234,90],{"class":80},[70,236,130],{"class":80},[70,238,239],{"class":133},"v16.19.1",[70,241,125],{"class":80},[70,243,174],{"class":80},[70,245,130],{"class":80},[70,247,248],{"class":159},"flowforge",[70,250,125],{"class":80},[70,252,90],{"class":80},[70,254,130],{"class":80},[70,256,257],{"class":133},"1.0.0",[70,259,125],{"class":80},[70,261,211],{"class":80},[70,263,265,267,270,272,274],{"class":72,"line":264},5,[70,266,118],{"class":80},[70,268,269],{"class":121},"platform",[70,271,125],{"class":80},[70,273,90],{"class":80},[70,275,276],{"class":80}," {\n",[70,278,280,283,286,288,290],{"class":72,"line":279},6,[70,281,282],{"class":80},"    \"",[70,284,285],{"class":159},"counts",[70,287,125],{"class":80},[70,289,90],{"class":80},[70,291,276],{"class":80},[70,293,295,298,302,304,306,309],{"class":72,"line":294},7,[70,296,297],{"class":80},"      \"",[70,299,301],{"class":300},"sbssI","users",[70,303,125],{"class":80},[70,305,90],{"class":80},[70,307,308],{"class":300}," 6",[70,310,139],{"class":80},[70,312,314,316,319,321,323,326],{"class":72,"line":313},8,[70,315,297],{"class":80},[70,317,318],{"class":300},"teams",[70,320,125],{"class":80},[70,322,90],{"class":80},[70,324,325],{"class":300}," 5",[70,327,139],{"class":80},[70,329,331,333,336,338,340,343],{"class":72,"line":330},9,[70,332,297],{"class":80},[70,334,335],{"class":300},"projects",[70,337,125],{"class":80},[70,339,90],{"class":80},[70,341,342],{"class":300}," 4",[70,344,139],{"class":80},[70,346,348,350,353,355,357,360],{"class":72,"line":347},10,[70,349,297],{"class":80},[70,351,352],{"class":300},"devices",[70,354,125],{"class":80},[70,356,90],{"class":80},[70,358,359],{"class":300}," 9",[70,361,139],{"class":80},[70,363,365,367,370,372,374,377],{"class":72,"line":364},11,[70,366,297],{"class":80},[70,368,369],{"class":300},"projectSnapshots",[70,371,125],{"class":80},[70,373,90],{"class":80},[70,375,376],{"class":300}," 16",[70,378,139],{"class":80},[70,380,382,384,387,389,391,394],{"class":72,"line":381},12,[70,383,297],{"class":80},[70,385,386],{"class":300},"projectTemplates",[70,388,125],{"class":80},[70,390,90],{"class":80},[70,392,393],{"class":300}," 7",[70,395,139],{"class":80},[70,397,399,401,404,406,408,411],{"class":72,"line":398},13,[70,400,297],{"class":80},[70,402,403],{"class":300},"projectStacks",[70,405,125],{"class":80},[70,407,90],{"class":80},[70,409,410],{"class":300}," 2",[70,412,139],{"class":80},[70,414,416,418,421,423,425,428],{"class":72,"line":415},14,[70,417,297],{"class":80},[70,419,420],{"class":300},"libraryEntries",[70,422,125],{"class":80},[70,424,90],{"class":80},[70,426,427],{"class":300}," 0",[70,429,139],{"class":80},[70,431,433,435,438,440,442],{"class":72,"line":432},15,[70,434,297],{"class":80},[70,436,437],{"class":300},"sharedLibraryEntries",[70,439,125],{"class":80},[70,441,90],{"class":80},[70,443,444],{"class":300}," 2\n",[70,446,448],{"class":72,"line":447},16,[70,449,450],{"class":80},"    },\n",[70,452,454,456,459,461,463],{"class":72,"line":453},17,[70,455,282],{"class":80},[70,457,458],{"class":159},"config",[70,460,125],{"class":80},[70,462,90],{"class":80},[70,464,276],{"class":80},[70,466,468,470,473,475,477,479,482,484],{"class":72,"line":467},18,[70,469,297],{"class":80},[70,471,472],{"class":300},"driver",[70,474,125],{"class":80},[70,476,90],{"class":80},[70,478,130],{"class":80},[70,480,481],{"class":133},"localfs",[70,483,125],{"class":80},[70,485,139],{"class":80},[70,487,489,491,494,496,498],{"class":72,"line":488},19,[70,490,297],{"class":80},[70,492,493],{"class":300},"broker",[70,495,125],{"class":80},[70,497,90],{"class":80},[70,499,276],{"class":80},[70,501,503,506,509,511,513],{"class":72,"line":502},20,[70,504,505],{"class":80},"        \"",[70,507,508],{"class":76},"enabled",[70,510,125],{"class":80},[70,512,90],{"class":80},[70,514,515],{"class":80}," true\n",[70,517,519],{"class":72,"line":518},21,[70,520,521],{"class":80},"      },\n",[70,523,525,527,530,532,534],{"class":72,"line":524},22,[70,526,297],{"class":80},[70,528,529],{"class":300},"fileStore",[70,531,125],{"class":80},[70,533,90],{"class":80},[70,535,276],{"class":80},[70,537,539,541,543,545,547],{"class":72,"line":538},23,[70,540,505],{"class":80},[70,542,508],{"class":76},[70,544,125],{"class":80},[70,546,90],{"class":80},[70,548,515],{"class":80},[70,550,552],{"class":72,"line":551},24,[70,553,521],{"class":80},[70,555,557,559,562,564,566],{"class":72,"line":556},25,[70,558,297],{"class":80},[70,560,561],{"class":300},"email",[70,563,125],{"class":80},[70,565,90],{"class":80},[70,567,276],{"class":80},[70,569,571,573,575,577,579],{"class":72,"line":570},26,[70,572,505],{"class":80},[70,574,508],{"class":76},[70,576,125],{"class":80},[70,578,90],{"class":80},[70,580,94],{"class":80},[70,582,584],{"class":72,"line":583},27,[70,585,586],{"class":80},"      }\n",[70,588,590],{"class":72,"line":589},28,[70,591,450],{"class":80},[70,593,595,597,600,602,604],{"class":72,"line":594},29,[70,596,282],{"class":80},[70,598,599],{"class":159},"license",[70,601,125],{"class":80},[70,603,90],{"class":80},[70,605,276],{"class":80},[70,607,609,611,614,616,618,620,623,625],{"class":72,"line":608},30,[70,610,297],{"class":80},[70,612,613],{"class":300},"id",[70,615,125],{"class":80},[70,617,90],{"class":80},[70,619,130],{"class":80},[70,621,622],{"class":133},"4c105579-782b-4d53-af62-cf7fa69f6b43",[70,624,125],{"class":80},[70,626,139],{"class":80},[70,628,630,632,634,636,638,640,643],{"class":72,"line":629},31,[70,631,297],{"class":80},[70,633,160],{"class":300},[70,635,125],{"class":80},[70,637,90],{"class":80},[70,639,130],{"class":80},[70,641,642],{"class":133},"DEV",[70,644,645],{"class":80},"\"\n",[70,647,649],{"class":72,"line":648},32,[70,650,651],{"class":80},"    }\n",[70,653,655],{"class":72,"line":654},33,[70,656,657],{"class":80},"  }\n",[70,659,661],{"class":72,"line":660},34,[70,662,663],{"class":80},"}\n",[665,666,667,680],"table",{},[668,669,670],"thead",{},[671,672,673,677],"tr",{},[674,675,676],"th",{},"Property",[674,678,679],{},"Description",[681,682,683,693,702,711,721,731,741,751,761,771],"tbody",{},[671,684,685,690],{},[686,687,688],"td",{},[50,689,122],{},[686,691,692],{},"A unique identifier for the FlowFuse instance.",[671,694,695,699],{},[686,696,697],{},[50,698,147],{},[686,700,701],{},"Information about the operating system",[671,703,704,708],{},[686,705,706],{},[50,707,219],{},[686,709,710],{},"Node.js and FlowFuse versions",[671,712,713,718],{},[686,714,715],{},[50,716,717],{},"platform.counts",[686,719,720],{},"A snapshot of the number of users, teams, projects (instances), etc, in use on the platform.",[671,722,723,728],{},[686,724,725],{},[50,726,727],{},"platform.config.driver",[686,729,730],{},"Which backend driver is being used",[671,732,733,738],{},[686,734,735],{},[50,736,737],{},"platform.config.broker.enabled",[686,739,740],{},"A flag indicating whether the the internal comms broker is enabled",[671,742,743,748],{},[686,744,745],{},[50,746,747],{},"platform.config.fileStore.enabled",[686,749,750],{},"A flag indicating whether the file store is enabled",[671,752,753,758],{},[686,754,755],{},[50,756,757],{},"platform.config.email.enabled",[686,759,760],{},"A flag indicating whether email is enabled",[671,762,763,768],{},[686,764,765],{},[50,766,767],{},"platform.license.id",[686,769,770],{},"The ID of the license loaded",[671,772,773,778],{},[686,774,775],{},[50,776,777],{},"platform.license.type",[686,779,780],{},"The type of the license",[14,782,783,784,787],{},"When the data is collected, we also store the timestamp the data was received and\na ",[57,785,786],{},"hash"," of the sending IP address - we do not store the plain value.",[39,789,791],{"id":790},"schedule","Schedule",[14,793,794],{},"For the core tracking, the platform will send the telemetry data:",[24,796,797,800],{},[27,798,799],{},"30 seconds after the platform starts up (but only if the platform has already been initialised)",[27,801,802],{},"Once every 24 hours at a time randomly picked when the platform starts",[14,804,805,806,809],{},"The data is sent via an HTTP Post to ",[50,807,808],{},"https:\u002F\u002Fping.flowforge.com",".",[34,811,813],{"id":812},"frontend-telemetry","Frontend Telemetry",[14,815,816],{},"The FlowFuse UI can be configured to track usage to help understand how users are navigating the pages.",[14,818,819],{},"It supports integration with two different services:",[24,821,822,841,851],{},[27,823,824,831,832,836,837,840],{},[825,826,830],"a",{"href":827,"rel":828},"https:\u002F\u002Fposthog.com\u002F",[829],"nofollow","PostHog"," ",[833,834,835],"em",{},"(recommended)",": You will require your own API key to pass into the ",[50,838,839],{},"yml",", which will begin the logging of user interactions.",[27,842,843,831,848,850],{},[825,844,847],{"href":845,"rel":846},"https:\u002F\u002Fsentry.io\u002F",[829],"Sentry",[833,849,835],{},": You will need to specify your Sentry DSN for the frontend and back-end",[27,852,853,858,859,862,863,865],{},[825,854,857],{"href":855,"rel":856},"https:\u002F\u002Fplausible.io\u002F",[829],"Plausible",": ",[833,860,861],{},"(deprecated since 0.9 and will be removed in the future)",": You can setup your own account, and pass the relevant domain to the ",[50,864,839],{}," in the telemetry configuration. As this option is deprecated, details of how to configure are no longer provided.",[39,867,42],{"id":868},"configuring-telemetry-1",[665,870,871,880],{},[668,872,873],{},[671,874,875,878],{},[674,876,877],{},"Option",[674,879,679],{},[681,881,882,895,908,920,944,955],{},[671,883,884,889],{},[686,885,886],{},[50,887,888],{},"telemetry.enabled",[686,890,891,892],{},"Enables the anonymous usage telemetry of the platform. Default: ",[50,893,894],{},"true",[671,896,897,902],{},[686,898,899],{},[50,900,901],{},"telemetry.backend.sentry.dsn",[686,903,904,905],{},"The API key provided to you from your own sentry account. Default: ",[50,906,907],{},"null",[671,909,910,915],{},[686,911,912],{},[50,913,914],{},"telemetry.frontend.posthog.apikey",[686,916,917,918],{},"The API key provided to you from your own PostHog account. Default: ",[50,919,907],{},[671,921,922,927],{},[686,923,924],{},[50,925,926],{},"telemetry.frontend.posthog.capture_pageview",[686,928,929,930,933,934,937,938,941,942],{},"FlowFuse is designed as to provide custom posthog ",[50,931,932],{},"$pageview"," events that provide more detail on navigation than the default, and suit a single page application better. As such, we recommend setting this to false in order to prevent duplicate ",[50,935,936],{},"pageleave","\u002F",[50,939,940],{},"pageview"," events firing. Default: ",[50,943,894],{},[671,945,946,951],{},[686,947,948],{},[50,949,950],{},"telemetry.frontend.sentry.dsn",[686,952,904,953],{},[50,954,907],{},[671,956,957,962],{},[686,958,959],{},[50,960,961],{},"telemetry.frontend.sentry.production_mode",[686,963,964,965],{},"Should this instance be treated as production (lower session count recorded). Default: ",[50,966,967],{},"false",[61,969,971],{"className":63,"code":970,"language":65,"meta":66,"style":66},"telemetry:\n  enabled: true\n  frontend:\n    posthog:\n      apikey: \u003Capi-key>\n      capture_pageview: false\n    sentry:\n      dsn: \u003Cdsn-key>\n      production_mode: true\n  backend:\n    sentry:\n      dsn: \u003Cdsn-key>\n    prometheus:\n      enabled: true\n",[50,972,973,979,987,994,1001,1011,1020,1027,1037,1046,1053,1059,1067,1074],{"__ignoreMap":66},[70,974,975,977],{"class":72,"line":73},[70,976,77],{"class":76},[70,978,81],{"class":80},[70,980,981,983,985],{"class":72,"line":84},[70,982,87],{"class":76},[70,984,90],{"class":80},[70,986,515],{"class":93},[70,988,989,992],{"class":72,"line":142},[70,990,991],{"class":76},"  frontend",[70,993,81],{"class":80},[70,995,996,999],{"class":72,"line":214},[70,997,998],{"class":76},"    posthog",[70,1000,81],{"class":80},[70,1002,1003,1006,1008],{"class":72,"line":264},[70,1004,1005],{"class":76},"      apikey",[70,1007,90],{"class":80},[70,1009,1010],{"class":133}," \u003Capi-key>\n",[70,1012,1013,1016,1018],{"class":72,"line":279},[70,1014,1015],{"class":76},"      capture_pageview",[70,1017,90],{"class":80},[70,1019,94],{"class":93},[70,1021,1022,1025],{"class":72,"line":294},[70,1023,1024],{"class":76},"    sentry",[70,1026,81],{"class":80},[70,1028,1029,1032,1034],{"class":72,"line":313},[70,1030,1031],{"class":76},"      dsn",[70,1033,90],{"class":80},[70,1035,1036],{"class":133}," \u003Cdsn-key>\n",[70,1038,1039,1042,1044],{"class":72,"line":330},[70,1040,1041],{"class":76},"      production_mode",[70,1043,90],{"class":80},[70,1045,515],{"class":93},[70,1047,1048,1051],{"class":72,"line":347},[70,1049,1050],{"class":76},"  backend",[70,1052,81],{"class":80},[70,1054,1055,1057],{"class":72,"line":364},[70,1056,1024],{"class":76},[70,1058,81],{"class":80},[70,1060,1061,1063,1065],{"class":72,"line":381},[70,1062,1031],{"class":76},[70,1064,90],{"class":80},[70,1066,1036],{"class":133},[70,1068,1069,1072],{"class":72,"line":398},[70,1070,1071],{"class":76},"    prometheus",[70,1073,81],{"class":80},[70,1075,1076,1079,1081],{"class":72,"line":415},[70,1077,1078],{"class":76},"      enabled",[70,1080,90],{"class":80},[70,1082,515],{"class":93},[14,1084,1085,1086,1089,1090,1093],{},"Sentry reads the environment variable ",[50,1087,1088],{},"SENTRY_ENV",", falling back to ",[50,1091,1092],{},"NODE_ENV"," to set the environment for both frontend and backend.",[1095,1096,1098],"h4",{"id":1097},"telemetry-during-build","Telemetry During Build",[14,1100,1101],{},"Configure .env with the auth token, org, and project name for the frontend project.",[61,1103,1105],{"className":63,"code":1104,"language":65,"meta":66,"style":66},"# Used for BUILD time sentry reporting\nSENTRY_AUTH_TOKEN=\nSENTRY_ORG=\nSENTRY_PROJECT=\n",[50,1106,1107,1113,1118,1123],{"__ignoreMap":66},[70,1108,1109],{"class":72,"line":73},[70,1110,1112],{"class":1111},"sHwdD","# Used for BUILD time sentry reporting\n",[70,1114,1115],{"class":72,"line":84},[70,1116,1117],{"class":133},"SENTRY_AUTH_TOKEN=\n",[70,1119,1120],{"class":72,"line":142},[70,1121,1122],{"class":133},"SENTRY_ORG=\n",[70,1124,1125],{"class":72,"line":214},[70,1126,1127],{"class":133},"SENTRY_PROJECT=\n",[1129,1130,1131],"style",{},"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}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":66,"searchDepth":214,"depth":214,"links":1133},[1134,1139],{"id":36,"depth":84,"text":37,"children":1135},[1136,1137,1138],{"id":41,"depth":142,"text":42},{"id":97,"depth":142,"text":98},{"id":790,"depth":142,"text":791},{"id":812,"depth":84,"text":813,"children":1140},[1141],{"id":868,"depth":142,"text":42,"children":1142},[1143],{"id":1097,"depth":214,"text":1098},"md",null,{},"Telemetry",true,"admin\u002Ftelemetry.md","\u002Fdocs\u002Fadmin\u002Ftelemetry",{"title":5,"description":16},"docs\u002Fadmin\u002Ftelemetry","2024-07-19 20:21:52 +0530","2.33.2","qtsuji8NvN6Qd8nGnfPpA7Z-vVnhrGSCJlGf3a9uawI",[1157,1164,1183,1194],{"name":1158,"order":73,"children":1159},"FlowFuse User Manuals",[1160],{"title":1161,"path":1162,"group":1158,"groupOrder":73,"order":84,"children":1163},"FlowFuse API","\u002Fdocs\u002Fapi",[],{"name":1165,"order":214,"children":1166},"FlowFuse Self-Hosted",[1167,1171],{"title":1168,"path":1169,"group":1165,"groupOrder":214,"order":73,"children":1170},"Quick Start","\u002Fdocs\u002Fquick-start",[],{"title":1172,"path":1173,"group":1165,"groupOrder":214,"order":142,"children":1174},"Upgrading FlowFuse","\u002Fdocs\u002Fupgrade",[1175,1179],{"title":1176,"path":1177,"order":1145,"children":1178},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":1180,"path":1181,"order":1145,"children":1182},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"name":1184,"order":264,"children":1185},"Support",[1186,1190],{"title":1187,"path":1188,"group":1184,"groupOrder":264,"order":142,"children":1189},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":1191,"path":1192,"group":1184,"groupOrder":264,"order":1145,"children":1193},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":1195,"order":1145,"children":1196},"Other",[1197,1243,1255,1334,1382,1401,1475,1486],{"title":1198,"path":1199,"order":1145,"children":1200},"admin","\u002Fdocs\u002Fadmin",[1201,1205,1217,1225,1229,1233,1237,1239],{"title":1202,"path":1203,"order":73,"children":1204},"Administering FlowFuse","\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":1206,"path":1207,"order":1145,"children":1208},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[1209,1213],{"title":1210,"path":1211,"order":1145,"children":1212},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":1214,"path":1215,"order":1145,"children":1216},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":1218,"path":1219,"order":1145,"children":1220},"hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[1221],{"title":1222,"path":1223,"order":1145,"children":1224},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":1226,"path":1227,"order":1145,"children":1228},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":1230,"path":1231,"order":1145,"children":1232},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":1234,"path":1235,"order":1145,"children":1236},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":1147,"path":1150,"order":1145,"children":1238},[],{"title":1240,"path":1241,"order":1145,"children":1242},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"title":1244,"path":1245,"order":1145,"children":1246},"cloud","\u002Fdocs\u002Fcloud",[1247,1251],{"title":1248,"path":1249,"order":73,"children":1250},"Introduction","\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":1252,"path":1253,"order":1145,"children":1254},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"title":1256,"path":1257,"order":1145,"children":1258},"contribute","\u002Fdocs\u002Fcontribute",[1259,1262,1266,1270,1274,1278,1282,1290,1326,1330],{"title":1248,"path":1260,"order":73,"children":1261},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":1263,"path":1264,"order":1145,"children":1265},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":1267,"path":1268,"order":1145,"children":1269},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":1271,"path":1272,"order":1145,"children":1273},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":1275,"path":1276,"order":1145,"children":1277},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":1279,"path":1280,"order":1145,"children":1281},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":1283,"path":1284,"order":1145,"children":1285},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[1286],{"title":1287,"path":1288,"order":1145,"children":1289},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":1291,"path":1292,"order":1145,"children":1293},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[1294,1298,1302,1306,1310,1314,1318,1322],{"title":1295,"path":1296,"order":1145,"children":1297},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":1299,"path":1300,"order":1145,"children":1301},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":1303,"path":1304,"order":1145,"children":1305},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":1307,"path":1308,"order":1145,"children":1309},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":1311,"path":1312,"order":1145,"children":1313},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":1315,"path":1316,"order":1145,"children":1317},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":1319,"path":1320,"order":1145,"children":1321},"User Login Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",[],{"title":1323,"path":1324,"order":1145,"children":1325},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":1327,"path":1328,"order":1145,"children":1329},"Team Broker","\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":1331,"path":1332,"order":1145,"children":1333},"Working with Feature Flags","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",[],{"title":1335,"path":1336,"order":1145,"children":1337},"device-agent","\u002Fdocs\u002Fdevice-agent",[1338,1342,1345,1349,1353,1357],{"title":1339,"path":1340,"order":73,"children":1341},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":1168,"path":1343,"order":84,"children":1344},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":1346,"path":1347,"order":214,"children":1348},"Register your Remote Instance","\u002Fdocs\u002Fdevice-agent\u002Fregister",[],{"title":1350,"path":1351,"order":264,"children":1352},"Running the Agent","\u002Fdocs\u002Fdevice-agent\u002Frunning",[],{"title":1354,"path":1355,"order":279,"children":1356},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",[],{"title":1358,"path":1359,"order":1145,"children":1360},"install","\u002Fdocs\u002Fdevice-agent\u002Finstall",[1361,1366,1370,1374,1378],{"title":1362,"path":1363,"group":1364,"order":73,"children":1365},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview","DeviceAgentInstallation",[],{"title":1367,"path":1368,"group":1364,"order":84,"children":1369},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":1371,"path":1372,"group":1364,"order":142,"children":1373},"Docker Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",[],{"title":1375,"path":1376,"group":1364,"order":214,"children":1377},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":1379,"path":1380,"group":1364,"order":264,"children":1381},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":1383,"path":1384,"order":1145,"children":1385},"hardware","\u002Fdocs\u002Fhardware",[1386,1389,1393,1397],{"title":1362,"path":1387,"order":73,"children":1388},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":1390,"path":1391,"order":84,"children":1392},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":1394,"path":1395,"order":142,"children":1396},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":1398,"path":1399,"order":142,"children":1400},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"title":1358,"path":1402,"order":1145,"children":1403},"\u002Fdocs\u002Finstall",[1404,1407,1411,1415,1435,1439,1443,1447],{"title":1362,"path":1405,"order":73,"children":1406},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":1408,"path":1409,"order":1145,"children":1410},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":1412,"path":1413,"order":1145,"children":1414},"DNS Setup","\u002Fdocs\u002Finstall\u002Fdns-setup",[],{"title":1416,"path":1417,"order":1145,"children":1418},"Docker install","\u002Fdocs\u002Finstall\u002Fdocker",[1419,1423,1427,1431],{"title":1420,"path":1421,"order":1145,"children":1422},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":1424,"path":1425,"order":1145,"children":1426},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":1428,"path":1429,"order":1145,"children":1430},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":1432,"path":1433,"order":1145,"children":1434},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":1436,"path":1437,"order":1145,"children":1438},"Email configuration","\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":1440,"path":1441,"order":1145,"children":1442},"First Run Setup","\u002Fdocs\u002Finstall\u002Ffirst-run",[],{"title":1444,"path":1445,"order":1145,"children":1446},"FlowFuse File Storage","\u002Fdocs\u002Finstall\u002Ffile-storage",[],{"title":1448,"path":1449,"order":1145,"children":1450},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[1451,1455,1459,1463,1467,1471],{"title":1452,"path":1453,"order":1145,"children":1454},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":1456,"path":1457,"order":1145,"children":1458},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":1460,"path":1461,"order":1145,"children":1462},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":1464,"path":1465,"order":1145,"children":1466},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":1468,"path":1469,"order":1145,"children":1470},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":1472,"path":1473,"order":1145,"children":1474},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":1476,"path":1477,"order":1145,"children":1478},"migration","\u002Fdocs\u002Fmigration",[1479,1482],{"title":1248,"path":1480,"order":73,"children":1481},"\u002Fdocs\u002Fmigration\u002Fintroduction",[],{"title":1483,"path":1484,"order":1145,"children":1485},"Node-RED Tools plugin","\u002Fdocs\u002Fmigration\u002Fnode-red-tools",[],{"title":1487,"path":1488,"order":1145,"children":1489},"user","\u002Fdocs\u002Fuser",[1490,1494,1498,1502,1506,1510,1514,1518,1522,1526,1530,1534,1546,1550,1554,1558,1562,1566,1570,1574,1578,1582,1586,1590,1594,1598,1601,1605],{"title":1491,"path":1492,"order":73,"children":1493},"Getting Started","\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":1495,"path":1496,"order":73,"children":1497},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":1499,"path":1500,"order":84,"children":1501},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":1503,"path":1504,"order":84,"children":1505},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":1507,"path":1508,"order":347,"children":1509},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",[],{"title":1511,"path":1512,"order":1145,"children":1513},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":1515,"path":1516,"order":1145,"children":1517},"Custom Hostnames","\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":1519,"path":1520,"order":1145,"children":1521},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":1523,"path":1524,"order":1145,"children":1525},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":1527,"path":1528,"order":1145,"children":1529},"DevOps Pipelines","\u002Fdocs\u002Fuser\u002Fdevops-pipelines",[],{"title":1531,"path":1532,"order":1145,"children":1533},"Environment Variables","\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":1535,"path":1536,"order":1145,"children":1537},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[1538,1542],{"title":1539,"path":1540,"order":1145,"children":1541},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":1543,"path":1544,"order":1145,"children":1545},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":1547,"path":1548,"order":1145,"children":1549},"FlowFuse File Nodes","\u002Fdocs\u002Fuser\u002Ffilenodes",[],{"title":1551,"path":1552,"order":1145,"children":1553},"FlowFuse MQTT Nodes","\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":1555,"path":1556,"order":1145,"children":1557},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":1559,"path":1560,"order":1145,"children":1561},"FlowFuse Project Nodes","\u002Fdocs\u002Fuser\u002Fprojectnodes",[],{"title":1563,"path":1564,"order":1145,"children":1565},"FlowFuse Tables","\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":1567,"path":1568,"order":1145,"children":1569},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":1571,"path":1572,"order":1145,"children":1573},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":1575,"path":1576,"order":1145,"children":1577},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":1579,"path":1580,"order":1145,"children":1581},"Instance Settings","\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":1583,"path":1584,"order":1145,"children":1585},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":1587,"path":1588,"order":1145,"children":1589},"Role-Based Access Control","\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":1591,"path":1592,"order":1145,"children":1593},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":1595,"path":1596,"order":1145,"children":1597},"Snapshots","\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":1327,"path":1599,"order":1145,"children":1600},"\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":1602,"path":1603,"order":1145,"children":1604},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":1606,"path":1607,"order":1145,"children":1608},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],1786546036919]