Node Red - Installtion neuer Nodes über Palette nicht möglich

Ich möchte in HA - NodeRed über den Palette Manager einen neuen Node installieren. Die Installation wird abgebrochen mit diversen npm Fehlern (npm ist aber sowieso nicht in HA-NodeRed enthalten. Auf der Info Seite für den Node steht Installation über Palette . . sollte also möglich sein!

Ebenfalls das Entfernen bestehender Nodes ist nicht mögich.

NodeRed = V1.4.1

HA = 26.2.1

Da ich selber gerne und intensiv Node-RED nutze, habe ich mal etwas recherchiert.
So weiß ich evtl. was zu tun ist, wenn mich dieses Problem ereilt.
Ich betreibe Node-RED als HA-Addon mit der Versionsnr. 20.2.4

Hast du Node-RED als LXC unter Proxmox installiert? Wenn ja, gilt Folgendes, ansonsten weiter unten weiterlesen.

Wenn du Node-RED als LXC in Proxmox betreibst, hast du den großen Vorteil, dass du nicht an die Versionierung des Home Assistant Add-ons gebunden bist. In einem LXC kannst du Node-RED und die zugrunde liegende Node.js-Version unabhängig und aktuell halten.

Aktuelle Versionen (Stand Februar 2026)

  • Node-RED: Die aktuelle stabile Version ist v4.1.x (vereinzelt wird bereits an v5.0 gearbeitet). Da du in deiner HA-Instanz noch v1.4.1 siehst, bist du dort technisch mehrere Jahre im Rückstand.
  • Node.js: Für Node-RED v4 wird dringend Node.js v20 (LTS) oder v22 (LTS) empfohlen. Node.js v18 befindet sich bereits im Maintenance-Modus.

So bringst du den LXC auf den neuesten Stand

Wenn du den LXC über die bekannten tteck Proxmox Helper-Scripts erstellt hast, ist das Update extrem einfach. Falls nicht, kannst du das offizielle Installations-Script nutzen, das erkennt, ob Node-RED bereits installiert ist und ein Upgrade durchführt.

Methode A: Über die LXC-Konsole (Empfohlen)

Logge dich in die Konsole deines Node-RED LXC ein und führe diesen Befehl aus:

Bashbash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Was dieser Befehl tut:

  1. Er prüft deine aktuelle Node.js Version und aktualisiert sie auf die stabilste LTS (meist v22).
  2. Er sichert deine Flows und Einstellungen.
  3. Er aktualisiert Node-RED auf die neueste Version (v4.1.x).
  4. Er fragt dich, ob du die Nodes in deiner Palette ebenfalls aktualisieren möchtest.

Methode B: Über das Proxmox Helper-Script

Falls du das tteck-Script nutzt, kannst du oft einfach im LXC den Befehl update eingeben. Sollte das nicht funktionieren, hilft der Befehl direkt von der Proxmox-Host-Shell (nicht im LXC!):

Bash# Nur ausführen, wenn der LXC ursprünglich mit den tteck-Scripts erstellt wurde bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/node-red.sh)"

Warum das deine Probleme löst

Deine Fehlermeldungen beim Installieren von Nodes in HA (V1.4.1) liegen höchstwahrscheinlich daran, dass moderne Nodes aus der Library eine Node.js-Version benötigen, die deine alte Version nicht bietet.

Nach dem Umzug/Update im LXC:

  1. Verbinde den LXC wieder mit HA über den Home Assistant WebSocket Node (node-red-contrib-home-assistant-websocket).
  2. Du musst in HA lediglich die IP deines LXC-Containers als Server angeben und einen neuen Access-Token generieren.
  3. Der Palette Manager im LXC wird dann wieder reibungslos funktionieren, da er vollen Zugriff auf npm hat.

Möchtest du, dass ich dir die Schritte zeige, wie du deine Flows aus der alten HA-Installation sicher in den neuen LXC exportierst?

  • Das Problem, das du beschreibst, tritt in Home Assistant häufig auf, wenn die zugrunde liegende Node.js-Version des Add-ons neuer ist als die Anforderungen bestimmter (oft älterer) installierter Nodes. Da der Palette Manager im Hintergrund npm nutzt, bricht der gesamte Vorgang ab, sobald npm über eine Inkompatibilität stolpert – selbst wenn du eigentlich nur einen neuen Node hinzufügen oder einen alten löschen möchtest.


1. Die Ursache finden (Engine-Konflikt)

Oft blockiert ein Node wie @azure/msal-node oder ein veralteter „Contrib“-Node den Prozess, weil dieser explizit eine alte Node.js-Version (z. B. v14 oder v18) verlangt, HA-NodeRed aber bereits auf einer neueren Version (z. B. v20 oder v22) läuft.

2. Lösung über die Add-on Konfiguration (Empfohlen)

Da der Palette Manager blockiert ist, kannst du Nodes „erzwingen“ oder deinstallieren, indem du die Konfiguration des Add-ons nutzt:

  1. Gehe in HA zu Einstellungen > Add-ons > Node-RED.
  2. Wechsle oben auf den Reiter Konfiguration.
  3. Suche das Feld npm_packages.
  4. Zum Installieren: Füge den Namen des Nodes dort hinzu (mit einem - davor).
  5. Zum Entfernen: Wenn dort bereits Nodes gelistet sind, die Probleme machen, lösche sie aus der Liste.
  6. Speichern und das Add-on neu starten.

3. Manuelles Bereinigen der package.json

Wenn Schritt 2 nicht hilft, ist der Fehler meist direkt in der package.json im Node-RED-Verzeichnis verankert.

  1. Nutze das Add-on File Editor oder VS Code Server.
  2. Navigiere zum Ordner /config/node-red/ (oder manchmal unter /addon_configs/a0d7b954_nodered/ bei neueren Installationen).
  3. Öffne die Datei package.json.
  4. Entferne unter "dependencies" die Zeile des Nodes, der die Probleme verursacht oder den du löschen möchtest.
  5. Speichere die Datei und starte das Node-RED Add-on neu.

4. Falls ein Node „In Use“ ist

Nodes lassen sich nicht löschen, wenn sie noch in einem Flow verwendet werden.

  • Wichtig: Auch Konfigurations-Nodes (z. B. Server-Einstellungen für MQTT oder Alexa) zählen als „in use“.
  • Suche im Node-RED Editor über das Menü (rechts oben) > Configuration nodes, um versteckte Überreste zu finden und zu löschen.

Zusammenfassung der Systemdaten

Du nutzt Node-RED V1.4.1 (was innerhalb des Add-ons eine ältere Standalone-Version widerspiegelt) und HA 2026.2.1. In dieser Kombination ist es sehr wahrscheinlich, dass ein installierter Node nicht mit der aktuellen Node.js-Umgebung des Add-ons kompatibel ist.

3 „Gefällt mir“

Hier hast du einen kleinen Fehler drin bei dem Bash Befehl, dass erste „BASH“ gehört weg der Befehl lautet so! :wink:

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
2 „Gefällt mir“

Whow so viel Durchblick hätte ich auch gerne, zumal ich Node Red wirklich sehr gerne nutze!

Meine HA Installation läuft auf einem Pi5 mit NVME - also kommt ja wohl nur die Behebung des Problems über das Add-on in Frage. Mir ist nur noch nicht klar, welchen Node ich entfernen muss?

Ich habe Node Red gelöscht und neu installiert angezeigt wird Version 4.1.4 - aber löschen kann ich immer noch nicht.

Das ist die aktuelle Version von NR! Was willst du löschen eine Node oder Node Red?

Node Red möchte ich auf keinen Fall löschen - im Gegenteil ich möchte neue Nodes installieren - aber weder Neuinstallation noch löschen alter Nodes funktioniert - im Anhang Fehlermeldung, beim Versuch eine Hysteresis Node zu installieren.

Gehe mal hier rein https://flows.nodered.org/ und suche mal dort die Node die du installieren willst und zeige den Link hier! Dann kann man dann schauen wegen der Node.

Habe jetzt mal geschaut in der NR v4.1.4 findet man keine Hysteresis Node, kann sein das es die nicht mehr gibt in der aktuellen Version! Für was willst du die verwendet?

Ich möchte die Pumpe für meine Solarthermie schalten - mache ich zwar bereits mit Node Red - aber ich dachte mit Hysteresis Funktion ist es eleganter

Dann schauen oben bei dem Link und gib dort bei der Suche ein ob du die Node findest!

Ja - finde ich mit dem Hinweis “Installation über Palette”

aber folgende Fehlermeldung: siehe Screenshot

wie kann ich die drei deprecated entfernen?

Das wird sich auch nicht mehr installieren lassen, das letzte Update ist fast 6 Jahre alt!

Node Info

Version: 0.3.0

Updated 5 years, 9 months ago

OK - danke für die Unterstützung

Ich vermute mal da werden bei der Installation Abhängigkeiten abgehen, den in 6 Jahren hat sich auch bei NR einiges getan und auch npm wird ständig weiter entwickelt!
Wenn du mal genauer beschreibt was du da machen möchtest und auch mal deine Nods hier zeigst, glaube @Schorsch wird dann sicher eine alternative finden!

Danke für Deine Geduld - ab 80° soll die Pumpe einschalten und über die Trägerflüssigkeit das warme Wasser erhitzen - bei unter 40° soll die Pumpe abschalten, damit mir das Warmwasser nicht runtergekühlt wird. Über den blauen Node (WhatsApp)

kann ich ein und ausschalten, ob ich zur Kontrolle eine WhatsApp Meldung bekomme.

Das erscheint mir logisch und ich hatte ehrlich gesagt auch Bedenken, daß die Node so alt ist! . . aber . . wie kann ich feststellen, ob eine Node kompatibel ist? wieso wurde mir die Node bei der Suche in der Palette Verwaltung überhaupt angezeigt?

Evtl. funktioniert auch Folgendes, ohne „Spezial-Node“

Hier ist der komplette Code für eine robuste Hysterese-Logik. Diese nutzt eine Switch-Node für die Logik und eine Filter-Node, damit nicht dauernd Signale an HA gesendet werden:

[
    {
        "id": "hysterese_switch",
        "type": "switch",
        "z": "5d5d89d9ce771768",
        "name": "Hysterese Logik 40 <> 80",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "lte",
                "v": "40",
                "vt": "num"
            },
            {
                "t": "gte",
                "v": "80",
                "vt": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 390,
        "y": 5220,
        "wires": [
            [
                "set_on"
            ],
            [
                "set_off"
            ]
        ]
    },
    {
        "id": "set_on",
        "type": "change",
        "z": "5d5d89d9ce771768",
        "name": "AN",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "on",
                "tot": "str"
            }
        ],
        "x": 600,
        "y": 5200,
        "wires": [
            [
                "filter_rbe"
            ]
        ]
    },
    {
        "id": "set_off",
        "type": "change",
        "z": "5d5d89d9ce771768",
        "name": "AUS",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "off",
                "tot": "str"
            }
        ],
        "x": 600,
        "y": 5240,
        "wires": [
            [
                "filter_rbe"
            ]
        ]
    },
    {
        "id": "filter_rbe",
        "type": "rbe",
        "z": "5d5d89d9ce771768",
        "name": "Nur bei Änderung",
        "func": "rbe",
        "gap": "",
        "start": "",
        "property": "payload",
        "x": 800,
        "y": 5220,
        "wires": [
            [
                "debug_out"
            ]
        ]
    },
    {
        "id": "debug_out",
        "type": "debug",
        "z": "5d5d89d9ce771768",
        "name": "Endergebnis",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1000,
        "y": 5220,
        "wires": []
    },
    {
        "id": "bda0ae7476fa14c4",
        "type": "poll-state",
        "z": "5d5d89d9ce771768",
        "name": "Kollektor",
        "server": "e5c22e49.d93e4",
        "version": 3,
        "exposeAsEntityConfig": "",
        "updateInterval": "300",
        "updateIntervalType": "num",
        "updateIntervalUnits": "seconds",
        "outputInitially": false,
        "outputOnChanged": false,
        "entityId": "Kollektor",
        "stateType": "str",
        "ifState": "",
        "ifStateType": "str",
        "ifStateOperator": "is",
        "outputs": 1,
        "outputProperties": [
            {
                "property": "payload",
                "propertyType": "msg",
                "value": "string",
                "valueType": "entityState"
            },
            {
                "property": "data",
                "propertyType": "msg",
                "value": "",
                "valueType": "entity"
            },
            {
                "property": "topic",
                "propertyType": "msg",
                "value": "",
                "valueType": "triggerId"
            }
        ],
        "x": 180,
        "y": 5220,
        "wires": [
            [
                "hysterese_switch"
            ]
        ]
    },
    {
        "id": "e5c22e49.d93e4",
        "type": "server",
        "name": "Home Assistant",
        "addon": false,
        "rejectUnauthorizedCerts": true,
        "ha_boolean": "",
        "connectionDelay": false,
        "cacheJson": false,
        "heartbeat": false,
        "heartbeatInterval": "",
        "areaSelector": "friendlyName",
        "deviceSelector": "friendlyName",
        "entitySelector": "friendlyName",
        "statusSeparator": "",
        "enableGlobalContextStore": false
    },
    {
        "id": "c10442088b65022b",
        "type": "global-config",
        "env": [],
        "modules": {
            "node-red-contrib-home-assistant-websocket": "0.80.3"
        }
    }
]
1 „Gefällt mir“

sehr cool und geil - vielen Dank - ich werde ja regelrecht verwöhnt - ich hoffe, die Sonne scheint bald wieder, damit ich testen kann - ich werde berichten

2 „Gefällt mir“

Verwöhnt nicht, das ist hier im Forum der Standard das jeder jedem hilft wenn er es kann! :slight_smile:

3 „Gefällt mir“