Can we add our own private nodes in addition to the search section provided by node-red in the pallet loading section?

Hello to everyone,
I just wanted to ask if it could be. Can we add our own private nodes in addition to the search section provided by node-red in the pallet loading section? Not everyone should see the nodes here, only company employees should see them. Or do you have a better idea that you know of?

Thanks in advance.

Yes. You can host your own catalogue of private nodes. Here is one approach GitHub - hardillb/node-red-private-catalogue-builder: node-red-private-catalogue-builder. Also see this thread Creation of Catalog

1 Like

thank you for your attention Mr. Dceejay.

Setting up a stand-alone catalog service is one way to go -- or you could just create a flow in node-red!

Here is one that I used to just filter out the nodes I wanted users to install from the original catalog list:

Sample Flow
[
    {
        "id": "829c111f.31f9c",
        "type": "http in",
        "z": "636b4cd7.6c8974",
        "name": "",
        "url": "/catalog.json",
        "method": "get",
        "upload": false,
        "swaggerDoc": "",
        "x": 180,
        "y": 500,
        "wires": [
            [
                "84e9294b.c06cd8"
            ]
        ]
    },
    {
        "id": "84e9294b.c06cd8",
        "type": "http request",
        "z": "636b4cd7.6c8974",
        "name": "https://catalogue.nodered.org/catalogue.json",
        "method": "GET",
        "ret": "obj",
        "url": "https://catalogue.nodered.org/catalogue.json",
        "tls": "",
        "x": 510,
        "y": 480,
        "wires": [
            [
                "69bb335a.fdd94c"
            ]
        ]
    },
    {
        "id": "69bb335a.fdd94c",
        "type": "change",
        "z": "636b4cd7.6c8974",
        "name": "curated node filter",
        "rules": [
            {
                "t": "set",
                "p": "payload.name",
                "pt": "msg",
                "to": "zPaper Nodes Catalog",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload.modules",
                "pt": "msg",
                "to": "(\t    $contribs := [\t        \"node-red-contrib-aftership\",\t        \"node-red-contrib-aws\",\t        \"node-red-contrib-github\",\t        \"node-red-contrib-google\",\t        \"node-red-contrib-jira\",\t        \"node-red-contrib-moment\",\t        \"node-red-contrib-npm\",\t        \"node-red-contrib-pdf\",\t        \"node-red-contrib-redis-ssl-support\",\t        \"node-red-contrib-salesforce\",\t        \"node-red-contrib-salesforce-connection-emitter\",\t        \"node-red-contrib-salesforce-platform-event\",\t        \"node-red-contrib-slack\",\t        \"node-red-contrib-xsltransform\",\t        \"node-red-contrib-zip\",\t        \"node-red-contrib-uibuilder\",\t        \"node-red-dashboard\"\t    ];\t    payload.modules[id.$match(/^node-red-node-/) or id in $contribs]\t)",
                "tot": "jsonata"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 830,
        "y": 480,
        "wires": [
            [
                "e0bfde23.781e7"
            ]
        ]
    },
    {
        "id": "bd1a45f8.074d88",
        "type": "http response",
        "z": "636b4cd7.6c8974",
        "name": "",
        "statusCode": "",
        "headers": {},
        "x": 1170,
        "y": 500,
        "wires": []
    },
    {
        "id": "e0bfde23.781e7",
        "type": "switch",
        "z": "636b4cd7.6c8974",
        "name": "req?",
        "property": "req",
        "propertyType": "msg",
        "rules": [
            {
                "t": "null"
            },
            {
                "t": "nnull"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 1030,
        "y": 480,
        "wires": [
            [
                "c5fce441.cc9598"
            ],
            [
                "bd1a45f8.074d88"
            ]
        ]
    },
    {
        "id": "c5fce441.cc9598",
        "type": "debug",
        "z": "636b4cd7.6c8974",
        "name": "catalog.json",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "x": 1190,
        "y": 460,
        "wires": []
    },
    {
        "id": "d508b24d.b2dff",
        "type": "inject",
        "z": "636b4cd7.6c8974",
        "name": "invoke the endpoint",
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 190,
        "y": 460,
        "wires": [
            [
                "84e9294b.c06cd8"
            ]
        ]
    },
    {
        "id": "d83abe6.a20f84",
        "type": "comment",
        "z": "636b4cd7.6c8974",
        "name": "Generate a curated list of nodes for Palette Manager",
        "info": "",
        "x": 230,
        "y": 400,
        "wires": []
    },
    {
        "id": "379ea62b.75d2fa",
        "type": "comment",
        "z": "636b4cd7.6c8974",
        "name": "Modify this list as necessary",
        "info": "",
        "x": 840,
        "y": 440,
        "wires": []
    },
    {
        "id": "1e4c116b.28152f",
        "type": "comment",
        "z": "636b4cd7.6c8974",
        "name": "Retrieve the full list of nodes from the flows library",
        "info": "",
        "x": 520,
        "y": 440,
        "wires": []
    }
]
1 Like

i will review. thank you.