From 693db79721e148531c11f72be52b7179f7de2767 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 17 Aug 2026 11:01:37 +0100 Subject: [PATCH 1/2] Remove old Certified Nodes process --- .../contributing/certified-nodes.md | 41 ------------------- .../engineering/ops/certified-nodes.md | 2 +- 2 files changed, 1 insertion(+), 42 deletions(-) delete mode 100644 nuxt/content/handbook/engineering/contributing/certified-nodes.md diff --git a/nuxt/content/handbook/engineering/contributing/certified-nodes.md b/nuxt/content/handbook/engineering/contributing/certified-nodes.md deleted file mode 100644 index 90edeb3e13..0000000000 --- a/nuxt/content/handbook/engineering/contributing/certified-nodes.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "Certified Nodes" ---- - -# Certified Nodes - -FlowFuse maintains a catalogue of nodes from the community that we put through regular checks -to ensure they are of high quality and standards for use by our customers. - -The catalogue is maintained in the [certified-nr-nodes](https://github.com/FlowFuse/certified-nr-nodes)(🔒) repository. - -A daily GH action runs the audit process across all nodes and regenerates the `catalogue.json` file served to Node-RED -instances within FlowFuse. - -## Proposing a new node to be included - -1. [Raise an issue](https://github.com/FlowFuse/certified-nr-nodes/issues/new)(🔒) with details of the node to be added. -2. Assign the issue to the CTO (or in his absence, another member of the Engineering Team). - -## Adding a new node to the list - -Full details on the technical process are provided in the [certified-nr-nodes](https://github.com/FlowFuse/certified-nr-nodes)(🔒) readme. - -1. Perform due diligence on the module; how popular is it, is it well maintained, is there a backlog of open issues etc. -2. Add the module to the list held in `modules.json` -3. Run the audit locally to check the current state of the module. Review the results and assess whether we can accept it into the catalogue in its current state. -4. Raise a PR with the updated module list and audit output for the module. -5. Review the PR with the CTO/Engineering Team - - -## Generating Tokens for Access to Certified Nodes Registry - -Licensed Self Hosting customers can request access to the Certified Nodes registry via support. These are the steps to generate a token for them - -1. On FlowFuse Cloud in the FlowFuse Team, locate the `ff-certified-nodes` instance in the `Internal Tools` Application -2. Open the editor and locate the function node in the `Authentication` tab -3. The comments at the top of the tab explain how to generate a token using the customer name and a randomly generated password (recommend using the `pwgen` command to create random password) -4. Add the username, password and token (as comment) to the `tokens` object in the function node -5. Provide the token to the customer to add in the `Admin Settings` -> `FlowFuse Nodes` section in their Forge instance - -![screen shot of Admin Settings page where token is entered](../images/ff-cert-nodes-token.png) \ No newline at end of file diff --git a/nuxt/content/handbook/engineering/ops/certified-nodes.md b/nuxt/content/handbook/engineering/ops/certified-nodes.md index bafecc5fe6..286a13f119 100644 --- a/nuxt/content/handbook/engineering/ops/certified-nodes.md +++ b/nuxt/content/handbook/engineering/ops/certified-nodes.md @@ -91,7 +91,7 @@ These arrays feed `certNodesITCat` ("FlowFuse Hub Certified Nodes") and `certNod 4. Deploy. -The **Authentication** tab is also where customer instances/users (tokens) are managed — see [Generating Tokens for Access to Certified Nodes Registry](../contributing/certified-nodes.md#generating-tokens-for-access-to-certified-nodes-registry). +The **Authentication** tab is also where customer instances/users (tokens) are managed — see [Enroll Customers](#enroll-customers) section. ### Result From 01a8444a0e819346a71fe1871f6d33413512643f Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 17 Aug 2026 11:45:01 +0100 Subject: [PATCH 2/2] Fix redirects --- nuxt/redirects.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nuxt/redirects.ts b/nuxt/redirects.ts index 209fa3f9c2..ab703d0531 100644 --- a/nuxt/redirects.ts +++ b/nuxt/redirects.ts @@ -74,7 +74,8 @@ export const redirects: Record = { '/handbook/development/frontend/layouts/': { redirect: { to: '/handbook/engineering/frontend/layouts/', statusCode: 301 } }, '/handbook/development/frontend/services/': { redirect: { to: '/handbook/engineering/frontend/services/', statusCode: 301 } }, '/handbook/development/frontend/testing/': { redirect: { to: '/handbook/engineering/frontend/testing/', statusCode: 301 } }, - '/handbook/development/contributing/certified-nodes/': { redirect: { to: '/handbook/engineering/contributing/certified-nodes/', statusCode: 301 } }, + '/handbook/development/contributing/certified-nodes/': { redirect: { to: '/handbook/engineering/ops/certified-nodes/', statusCode: 301 } }, + '/handbook/engineering/contributing/certified-nodes/': { redirect: { to: '/handbook/engineering/ops/certified-nodes/', statusCode: 301 } }, '/handbook/development/contributing/ff-tables/': { redirect: { to: '/handbook/engineering/contributing/ff-tables/', statusCode: 301 } }, '/handbook/development/contributing/team-npm-registry/': { redirect: { to: '/handbook/engineering/contributing/team-npm-registry/', statusCode: 301 } }, '/handbook/development/releases/dashboard-2/': { redirect: { to: '/handbook/engineering/releases/dashboard-2/', statusCode: 301 } },