Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. [How-to] Node.js für ioBroker richtig updaten

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

[How-to] Node.js für ioBroker richtig updaten

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
installationlinuxnodenode.jsnodejswindows
1.1k Beiträge 106 Kommentatoren 738.4k Aufrufe 112 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Dr. BakteriusD Online
    Dr. BakteriusD Online
    Dr. Bakterius
    Most Active
    schrieb am zuletzt editiert von
    #248

    Hey Leute! Das war ja auch keine Kritik von mir, habe @apollon77 aber wohl falsch verstanden. Ich bewundere und schätze eure Arbeit sehr und wenn ich dabei helfen kann, mach ich das auch gerne.

    Allerdings bin ich mir nicht sicher ob es so eine große Hilfe ist, jedes Problem gleich auf GitHub zu melden? Liegt vielleicht an einem Bedienfehler. Und da ist es nicht verkehrt zuerst mal im Forum "nachzufühlen" ob auch andere das Problem beobachten oder vielleicht sogar helfen können. Dann kann man immer noch den Entwickler "quälen". 😉

    AlCalzoneA 1 Antwort Letzte Antwort
    2
    • Dr. BakteriusD Dr. Bakterius

      Hey Leute! Das war ja auch keine Kritik von mir, habe @apollon77 aber wohl falsch verstanden. Ich bewundere und schätze eure Arbeit sehr und wenn ich dabei helfen kann, mach ich das auch gerne.

      Allerdings bin ich mir nicht sicher ob es so eine große Hilfe ist, jedes Problem gleich auf GitHub zu melden? Liegt vielleicht an einem Bedienfehler. Und da ist es nicht verkehrt zuerst mal im Forum "nachzufühlen" ob auch andere das Problem beobachten oder vielleicht sogar helfen können. Dann kann man immer noch den Entwickler "quälen". 😉

      AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #249

      @Dr-Bakterius sagte in [How-to] Node.js für ioBroker richtig updaten:

      Allerdings bin ich mir nicht sicher ob es so eine große Hilfe ist, jedes Problem gleich auf GitHub zu melden?

      Wenn es offensichtliche Fehler sind wie in deinem Fall (eine ältere Version wird als neue vorgeschlagen), dann definitiv. Aber bitte prüfen, ob das nicht schon auf der Liste steht.

      Bei Unklarheiten lieber vorher mal im Forum nachforschen, ob es nicht doch ein Bedienfehler o.ä. ist.

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      1 Antwort Letzte Antwort
      0
      • E Offline
        E Offline
        e-i-k-e
        schrieb am zuletzt editiert von
        #250

        Guten Abend,
        beitreibe ein redis Multihost System (1x Rock64, 5xRaspberry) und habe dieses soeben auf Node.js v10.16.3 aktualisiert (NPM: 6.9.0, jscontroller: 1.5.14).
        Auf dem Master wurde die Variante "npm rebuild" mit diversen Fehlern beendet, somit habe ich das "reinstall-Skript" ausgeführt. Es wurden nach und nach alle Adapter neu installiert, diese sind aktuell auch im Zustand "grün".
        Auf den Slave setze ich jeweils den Adapter RPI ein, um die GPIO zu steuern. Dies funktioniert nicht mehr, selbst wenn ich Manuel einen GPIO OUT über Objekte setze, wird dieser Zustand nicht umgesetzt. Den jeweiligen Adapter habe ich bereits händisch gelöscht und neu installiert, keine Verbesserung.
        Was könnte ich noch versuchen?

        StabilostickS 1 Antwort Letzte Antwort
        0
        • E e-i-k-e

          Guten Abend,
          beitreibe ein redis Multihost System (1x Rock64, 5xRaspberry) und habe dieses soeben auf Node.js v10.16.3 aktualisiert (NPM: 6.9.0, jscontroller: 1.5.14).
          Auf dem Master wurde die Variante "npm rebuild" mit diversen Fehlern beendet, somit habe ich das "reinstall-Skript" ausgeführt. Es wurden nach und nach alle Adapter neu installiert, diese sind aktuell auch im Zustand "grün".
          Auf den Slave setze ich jeweils den Adapter RPI ein, um die GPIO zu steuern. Dies funktioniert nicht mehr, selbst wenn ich Manuel einen GPIO OUT über Objekte setze, wird dieser Zustand nicht umgesetzt. Den jeweiligen Adapter habe ich bereits händisch gelöscht und neu installiert, keine Verbesserung.
          Was könnte ich noch versuchen?

          StabilostickS Offline
          StabilostickS Offline
          Stabilostick
          schrieb am zuletzt editiert von
          #251

          @e-i-k-e

          Hilft Dir das?

          https://forum.iobroker.net/post/270052

          E 1 Antwort Letzte Antwort
          1
          • StabilostickS Stabilostick

            @e-i-k-e

            Hilft Dir das?

            https://forum.iobroker.net/post/270052

            E Offline
            E Offline
            e-i-k-e
            schrieb am zuletzt editiert von e-i-k-e
            #252

            @Stabilostick
            Danke.
            Ich werde mal alle rpi2 Adapter löschen und neu installieren.


            Kurze Rückmeldung:

            Es hat funktioniert!
            Wichtig ist, dass auch der Adapter komplett gelöscht wird. Direkt über ioBroker hat es nicht funktioniert. Folgender Weg war erfolgreich.

            iobroker stop
            cd /opt/iobroker
            npm uninstall iobroker.rpi2 --silent --save --prefix 
            iobroker start
            
            
            1 Antwort Letzte Antwort
            0
            • apollon77A apollon77

              In diesem Post wollen wir Problemfälle bei "npm rebuild sammeln und deren Lösungen.

              1.) Binäre Dateien existieren, aber nicht als Link wie erwartet; manuelles löschen erforderlich
              Bei Fehlern wie:

              npm ERR! path /opt/iobroker/node_modules/.bin/iobroker
              npm ERR! code EEXIST
              npm ERR! Refusing to delete /opt/iobroker/node_modules/.bin/iobroker: is outside /opt/iobroker/node_modules/iobroker.js-controller and not a link
              npm ERR! File exists: /opt/iobroker/node_modules/.bin/iobroker
              npm ERR! Move it away, and try again.
              

              einfach das machen was da steht und die in der Meldung genannte Datei einfach löschen und "npm rebuild" neu starten. Diese Probleme können passieren wenn das node_modules Verzeichnis mal kopiert wurde, weil dabei (wenn man nicht die korrekten Parameter nutzt) symbolische Links entfernt werden und das macht Probleme.

              2.) Permission/Rechte-Fehler
              Bei Meldungen mit einem "EACCESS" als Fehlercode oder "Permission denied" am besten den Installationfixer laufen lassen (siehe erster Beitrag im Thread, Punkt 4). Das npm rebuild nicht mit sudo oder als root Nutzer ausführen.

              Wenn die Fehler in Verzeichnissen wie "/root/.npm/..." oder /home/user/.npm/..." auftreten dann diese Verzeichnisse einfach löschen und neu versuchen. Dann haben frühere Aktionen wohl das Cache-Verzeichnis kaputt gemacht.

              3.) npm rebuild Fehler mit "unix-dgram 0.2.3" (js-controller 1.x mit Node.js 10/12)
              Es ist ein Problemkandidat bekannt der bei "npm rebuild" zu einem Fehler führt, wodurch npm rebuild abbricht.

              > unix-dgram@0.2.3 install C:\Program Files\iobroker\SmartHome76\node_modules\unix-dgram
              > node-gyp rebuild
              
              c:\program files\iobroker\smarthome76\node_modules\unix-dgram\node_modules\nan\nan_maybe_43_inl.h(88): error C2039: "Fo
              rceSet": Ist kein Element von "v8::Object" (Quelldatei wird kompiliert ..\src\unix_dgram.cc) [C:\Program Files\iobroker
              \SmartHome76\node_modules\unix-dgram\build\unix_dgram.vcxproj]
              

              In dem speziellen Fall hilft nur eine drastische Methode:
              Im Verzeichnis node_modules/iobroker.js-controller/ folgendes ausführen:

              npm i unix-dgram@2.0.3
              

              Danach "npm rebuild" nochmals anstossen.

              4.) Fehler in npm-cache Verzeichnis*
              Es kann hier und da vorkommen das sich mal defekte Dateien im npm Cache Verzeichnis festgesetzt haben, das gibt das Fehler wie beispielsweise:

              npm ERR! Unexpected end of JSON input while parsing near '...1f861b63850035ddc87",'
              

              meistens dann bei Dateien in "/home/user/.npm/_cacache" (o.ä. Verzeichnissen mit "cache" im Namen). Dann hilft ggf ein

              npm cache clean --force
              

              oder das löschen dieses Verzeichnisses. Das npm Cache wird neu aufgebaut, was also etwas länger dauern kann.

              5.) defekte Adapter-Installationen beheben
              Es kann ebenso vorkommen das Adapter funktionieren aber ggf beim rebuild Probleme festgestellt werden. Meistens ist es das dann Dateien oder Abhängigkeiten fehlen. Das könnte zB so aussehen:

              npm ERR! path /opt/iobroker/node_modules/iobroker.discovery/node_modules/@types/iobroker/package.json
              npm ERR! code ENOENT
              npm ERR! errno -2
              npm ERR! syscall open
              npm ERR! enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.discovery/node_modules/@types/iobroker/package.json'
              npm ERR! enoent This is related to npm not being able to find a file.
              npm ERR! enoent
              

              Das wurde auch schon beim Javascript Adapter bezüglich dem Paket "uuid" berichtet.

              Dann hilft es meistens den Adapter manuell in der gleichen Version wie vorhanden nochmals" drüber zu installieren. Wenn man die Version nicht weiss kann man im Adapterverzeichnis unter node_modules/iobroker.adaptername/package.json nachsehen was als Version drin steht.

              Dann im ioBroker Verzeichnis ein

              npm install iobroker.adaptername@version --production
              

              ausführen.

              Danach nochmals "npm rebuild".

              S Offline
              S Offline
              slesa
              schrieb am zuletzt editiert von slesa
              #253

              @apollon77 Hallo, danke für all die Anleitungen. Sehr hilfreich.
              Man könnte noch vermerken, dass falls man danach erst gelesen hat, dass man zuerst auf http umschalten muss, das reinstall-Script starten ausreicht.

              1 Antwort Letzte Antwort
              0
              • A Offline
                A Offline
                AndyUM61
                schrieb am zuletzt editiert von
                #254

                Hallo,

                wie Lange dauert eigentlich ein npm rebuild?
                Da ich ja erhebliche Probleme habe, versuche ich gerade ein rebuild.

                Seid ca. 30 Minuten scheint sich aber nichts zu tun.
                Im Teminal steht seit dem :

                > iobroker.vis@1.2.1 install /opt/iobroker/node_modules/iobroker.vis                                                   
                > node main.js --install    
                

                Läuft da noch was ?

                Das ganze läuft im docker mit buanet/iobroker:latest

                Internette Grüße
                Andy

                RaspberryMatic (Raspberry Pi3), CUxD, ioBroker (Synology/ Docker)

                apollon77A 1 Antwort Letzte Antwort
                0
                • A AndyUM61

                  Hallo,

                  wie Lange dauert eigentlich ein npm rebuild?
                  Da ich ja erhebliche Probleme habe, versuche ich gerade ein rebuild.

                  Seid ca. 30 Minuten scheint sich aber nichts zu tun.
                  Im Teminal steht seit dem :

                  > iobroker.vis@1.2.1 install /opt/iobroker/node_modules/iobroker.vis                                                   
                  > node main.js --install    
                  

                  Läuft da noch was ?

                  Das ganze läuft im docker mit buanet/iobroker:latest

                  apollon77A Offline
                  apollon77A Offline
                  apollon77
                  schrieb am zuletzt editiert von
                  #255

                  @AndyUM61 An sich sollte das schnell gehen. Brich ab und mach nochmal

                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                  A 1 Antwort Letzte Antwort
                  0
                  • apollon77A apollon77

                    @AndyUM61 An sich sollte das schnell gehen. Brich ab und mach nochmal

                    A Offline
                    A Offline
                    AndyUM61
                    schrieb am zuletzt editiert von
                    #256

                    @apollon77
                    Also ich komme seid Freitag mit meinem ioBroker einfach nicht weiter:(.

                    Ich habe das eben noch einmal gestartet und er hängt wieder an der selben Stelle:

                    > iobroker.vis@1.2.1 install /opt/iobroker/node_modules/iobroker.vis                                                   
                    > node main.js --install    
                    
                    

                    irgend wann kommt dann "Socket geschlossen"??

                    Ich habe unter Error/ Bog schon einen Beitrag angelegt, aber so richtig konnte mir keiner helfen.

                    Bei mir bricht der ioBroker immer ab mit der Fehlermeldung:

                    2019-10-15 12:42:00.006  - error: host.iobroker uncaught exception: wakeUp is not defined
                    2019-10-15 12:42:00.007  - error: host.iobroker ReferenceError: wakeUp is not defined
                        at startScheduledInstance (/opt/iobroker/node_modules/iobroker.js-controller/main.js:2611:17)
                        at Job.procs.(anonymous function).schedule.schedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.js-controller/main.js:3121:65)
                        at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/schedule.js:173:10)
                        at /opt/iobroker/node_modules/node-schedule/lib/schedule.js:552:11
                        at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/schedule.js:510:7)
                        at ontimeout (timers.js:436:11)
                        at tryOnTimeout (timers.js:300:5)
                        at listOnTimeout (timers.js:263:5)
                        at Timer.processTimers (timers.js:223:10)
                    

                    Das macht er mindestens 2x am Tag um 12:01 Uhr und um 00:01 Uhr.
                    Im Admin ist aber kein Chron-Job zu diesen Zeitpunkten zu sehen.
                    Nach dem abgebrochenen rebuild kommt dieser Fehler auch gleich kurz nach dem Neustart.

                    Nach gefühlten 20 Neuinstallationen und Restores weiß ich einfach nicht mehr weiter:(.

                    Internette Grüße
                    Andy

                    RaspberryMatic (Raspberry Pi3), CUxD, ioBroker (Synology/ Docker)

                    apollon77A 1 Antwort Letzte Antwort
                    0
                    • A AndyUM61

                      @apollon77
                      Also ich komme seid Freitag mit meinem ioBroker einfach nicht weiter:(.

                      Ich habe das eben noch einmal gestartet und er hängt wieder an der selben Stelle:

                      > iobroker.vis@1.2.1 install /opt/iobroker/node_modules/iobroker.vis                                                   
                      > node main.js --install    
                      
                      

                      irgend wann kommt dann "Socket geschlossen"??

                      Ich habe unter Error/ Bog schon einen Beitrag angelegt, aber so richtig konnte mir keiner helfen.

                      Bei mir bricht der ioBroker immer ab mit der Fehlermeldung:

                      2019-10-15 12:42:00.006  - error: host.iobroker uncaught exception: wakeUp is not defined
                      2019-10-15 12:42:00.007  - error: host.iobroker ReferenceError: wakeUp is not defined
                          at startScheduledInstance (/opt/iobroker/node_modules/iobroker.js-controller/main.js:2611:17)
                          at Job.procs.(anonymous function).schedule.schedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.js-controller/main.js:3121:65)
                          at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/schedule.js:173:10)
                          at /opt/iobroker/node_modules/node-schedule/lib/schedule.js:552:11
                          at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/schedule.js:510:7)
                          at ontimeout (timers.js:436:11)
                          at tryOnTimeout (timers.js:300:5)
                          at listOnTimeout (timers.js:263:5)
                          at Timer.processTimers (timers.js:223:10)
                      

                      Das macht er mindestens 2x am Tag um 12:01 Uhr und um 00:01 Uhr.
                      Im Admin ist aber kein Chron-Job zu diesen Zeitpunkten zu sehen.
                      Nach dem abgebrochenen rebuild kommt dieser Fehler auch gleich kurz nach dem Neustart.

                      Nach gefühlten 20 Neuinstallationen und Restores weiß ich einfach nicht mehr weiter:(.

                      apollon77A Offline
                      apollon77A Offline
                      apollon77
                      schrieb am zuletzt editiert von
                      #257

                      @AndyUM61 Jupp dieser Fehler wurde sich gerade gemeldet. Schau mal in js-Controller 2.0 Beta thread. Der Fehler ist in 2.0.31 gefixt was als nächstes ins latest kommt. Oder installiert vom GitHub (siehe Beta thread)

                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                      A 1 Antwort Letzte Antwort
                      0
                      • apollon77A apollon77

                        @AndyUM61 Jupp dieser Fehler wurde sich gerade gemeldet. Schau mal in js-Controller 2.0 Beta thread. Der Fehler ist in 2.0.31 gefixt was als nächstes ins latest kommt. Oder installiert vom GitHub (siehe Beta thread)

                        A Offline
                        A Offline
                        AndyUM61
                        schrieb am zuletzt editiert von
                        #258

                        @apollon77
                        Na das hört sich doch gut an.
                        Da haben also doch noch Andere auch dieses Problem;).

                        Dann mal Herzlichen Dank für deine Antwort!

                        Internette Grüße
                        Andy

                        RaspberryMatic (Raspberry Pi3), CUxD, ioBroker (Synology/ Docker)

                        1 Antwort Letzte Antwort
                        0
                        • StabilostickS Stabilostick

                          MOD-EDIT: Dieser Thread und insbesondere diese Anleitung ist von 2019 und somit veraltet

                          aktuell ist
                          https://forum.iobroker.net/topic/35090/howto-nodejs-installation-und-upgrades-unter-debian


                          Update März 2023: Die aktuelle Anleitung findet ihr hier : https://forum.iobroker.net/topic/64032/update-nodejs-best-practise-supported-14-16-und-18

                          1. Einleitung

                          Node.js ist die Laufzeitumgebung der Programmiersprache JavaScript, in der ioBroker geschrieben ist. Ohne Node.js funktioniert ioBroker nicht.

                          Wie bei vielen Open-Source-Technologien üblich, entwickelt sich Node.js schnell weiter. Kleinere Updates, die die Stabilität und Sicherheit steigern oder gar neue Funktionen hinzufügen, erscheinen fast wöchentlich.

                          Node.js-Versionen mit gerader Hauptversionsnummer werden als LTS-Versionen (Long Term Support) bezeichnet und einige Jahre gepflegt (z.B. 8.x). In 2017 war das Node.js 8, 2018 kam Node.js 10, dann 12.x hinzu und im Oktober 2021 wird Node.js 14 den LTS-Status erhalten.

                          Im gleichem Zug erreichen frühere LTS-Versionen ihr Lebensende (EOL, End of Life). So hat Node.js 6 im April 2019 den EOL-Status erhalten und bekommt damit keine Updates mehr, Nodejs 8.x ist seit November 2019 raus.

                          Alle Node.js-Versionen mit ungeraden Versionsnummern sind Entwicklungsversionen und sollten nicht produktiv genutzt werden.

                          Auch ioBroker wird stetig weiterentwickelt und nutzt die neuen Funktionen aktueller Node.js-Versionen. Obwohl der ioBroker js-controller mit Versionen 1.4.x bzw. 1.5.x noch Node.js 4 unterstützt, fordern neue Adapter immer häufiger mindestens Node.js 8 als Grundvoraussetzung.

                          Ab der Version 2.0 des js-controllers (das Freigabedatum ist noch nicht bekannt) sind die Anpassungen so tiefgreifend, dass die Node.js-Versionen 4 und 6 nicht mehr unterstützt werden können.

                          Ab Version 3.0/3.1 vom Controller, der gerade (Stand 24.4.2020) im Latest Repository ist, wird Nodejs 10.x Minimum sein.

                          Alle paar Jahre steht also für eine ioBroker-Installation ein Update von Node.js an. Dieser Artikel soll zusammenfassen wir man dazu am besten vorgeht.

                          2. Wer sollte updaten?

                          Aktuell empfehlen wir, bei ioBroker-Neuinstallationen mindestens Node.js 10, besser noch 12.x. zu verwenden. Es sind wenige Adapter bekannt, die nicht mit Node 10/12 funktionieren: Details dazu in https://forum.iobroker.net/topic/30561/status-iobroker-und-node-js-12-x

                          Windows-Anwendern empfehlen wir, auf jeden Fall am Test des neuen Windows-Installers teilzunehmen: https://forum.iobroker.net/post/266623
                          Der zukünftige Windows-Installer für ioBroker wird eine Funktion erhalten, bestehende Installationen automatisch auf aktuelle js-controller- und Node.js-Versionen zu migrieren, ohne dass man die Kommandozeile bemühen muss.

                          Bevor man beginnt, sollte man in der Befehlszeile mit dem Befehl

                          node -v
                          

                          überprüfen, welche Version von Node.js gerade installiert ist. Eine gute Idee ist es, diese Versionsangabe auch mit der Node.js-Version im Übersichts-Fenster des ioBroker-Admins für diesen Host zu vergleichen. Sollten sich die Versionen unterscheiden, sind mehrere Node.js-Varianten installiert, was zu Problemen führen kann.

                          Grundsätzlich gilt: Sollte das ioBroker-System stabil laufen, muss Node.js auch nicht auf Gedeih und Verderb upgedated werden. Wenn aber die Installation bestimmter Adapter fehlschlägt (wohlmöglich sogar mit entsprechender Fehlermeldung) oder eine Node-Version < 4 für einen js-controller > Version 1.4.x eingesetzt wird, sollte über ein Node.js-Update nachgedacht werden. Es sind auch Probleme für die Node.js-Versionen 8.0 - 8.12 mit volllaufendem RAM bekannt, so dass wir auch hier ein Update empfehlen.

                          Wie bereits gesagt: Sollte das ioBroker-System stabil laufen und ist die Installation technisch nicht gefordert, muss Node.js auch nicht auf Gedeih und Verderb upgedated werden.

                          3. Was sollte ich vor dem Update tun?

                          Hinweis: Falls die Version des js-controllers <= 1.5.12 ist, muss VOR dem Update in den Einstellungen der Admin-Instanz "Verschlüsselung (https) benutzen" ausgeschaltet werden. Das in ioBroker bis dahin integrierte Zertifikat kann zu Problemen beim Starten des Admin bei Node.js-Versionen >= 10 führen.

                          Damit es nach dem Update zu keinen Inkompatibilitäten oder Probleme kommt sollte man alle Adapter prüfen und aktualisieren. Vor allem Adapter mit nativen Bestandteilen, wie alles mit Serialport oder Bluetooth können Probleme bereiten. Hier am besten die Adapter-Readme's per Admin oder im GitHub prüfen, ob neue Versionen zur Verfügung stehen die die geplante Node.js Version explizit erst unterstützen. Auch wenn diese Versionen ggf. noch im "Latest" Repository sind muss man diese vorher aktualisieren. Alternativ wartet man mit der ganzen Update-Aktion bis die neuen Versionen im "Stable" Repository sind, schreibt den Entwickler dazu an oder fragt im Forum nach.

                          Wenn man diesen Schritt nicht durchführt kann es zu unnötigen Problemen beim update der Adapter kommen!

                          4. Step-by-step-Anleitung für Unix-Systeme

                          • Zuerst muss natürlich unbedingt ein Backup erstellt werden. Dazu kann z.B. der BackItUp-Adapter genutzt oder der Kommandozeilenbefehl

                            cd /opt/iobroker
                            iobroker backup
                            

                            ausgeführt werden. Das Backup sollte aktuell sein, damit möglichst keine Daten verloren gehen.

                          • Anschließend ioBroker stoppen, damit Updates keine Nebeneffekte oder Abstürze verursachen.

                            iobroker stop
                            

                            Bitte anschließend im Webbrowser prüfen, dass der ioBroker-Admin danach wirklich nicht mehr startet. Sollte er weiterhin aufrufbar sein, dann den Rechner neu starten und nochmals „iobroker stop“ ausführen und erneut testen. Für die Techniker unter uns: Man kann auch mit einem Tool wie "top" prüfen, ob noch Prozesse existieren, die mit "io." beginnen. Die dann mit einem beherzten "sudo kill -9 <ProzessID>" zwangsbeenden.

                          • Jetzt aktualisiert man Node.js auf die gewünschte neue Version.

                            Unter Linux reicht es, dazu den Nodesource-Installationsbefehl für das jeweilige Betriebssystem auszuführen. Verschiedene Varianten sind unter https://github.com/nodesource/distributions#debinstall gelistet.

                            Zum Beispiel lauten die Befehle für einen Raspberry Pi der ein Debian bzw. Raspbian-Image verwendet wie folgt, wenn man nicht als root-User (z.B. richtig mit dem User "pi") angemeldet ist:

                            curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
                            sudo apt-get install -y nodejs
                            

                          Für nodejs 12 einfach in der URL oben anstelle der 10 eine 12 reinpacken.

                          Für macOS gibt einen Installer auf https://nodejs.org/en/download/ , den man einfach ausführt.

                          Ob die Aktualisierung geklappt hat, kann man wieder mit dem Befehl

                          node -v
                          

                          überprüfen.

                          • Da die Installation von Node.js einige Einstellungen am System verändert haben kann, ist es jetzt ratsam, den ioBroker-Installationsfixer aufzurufen. Das geschieht mit dem Befehl

                            curl -sL https://iobroker.net/fix.sh | bash -
                            

                            Er stellt unter anderem die für den Betrieb von ioBroker notwendigen Sicherheitseinstellungen wieder her.

                          • Bei einer Aktualisierung von Node.js müssen bereits installierte JavaScript- Module im ioBroker-Ordner aktualisiert werden, da sonst Fehler bei deren Ausführung auftreten.

                            Um diese zu aktualisieren gibt es mehrere Möglichkeiten:

                            a) ab js-controller 3.0: Automatischer Rebuild
                            ioBroker versucht seit dem js-controller 3.0 automatisch Adapter zu erkennen die nicht starten weil Sie aktualisiert werden müssen. Dies funktioniert so das die typischen Fehlermeldungen erkannt werden und ioBroker dann die Aktualisierung versucht. Zuerst wird ein "rebuild" des betroffenen Adapters ausgeführt, falls das nicht hilft werden die Adapter-Abhängigkeiten aktualisiert. Daher kann es sein das der Adapter mehrfach ersucht wird neu zu starten. Hier bitte Geduld haben!
                            Bei einigen Adaptern (zB iot die optionale native Abhängigkeiten haben) funktioniert die automatische Erkennung nicht und das rebuild muss manuell angestoßen werden. Hier zu gibt es iobroker rebuild adaptername und falls das nicht reicht iobroker rebuild adaptername --install. Das einfach manuell ausführen. Damit sollte alles idealerweise automatisiert erledigt sein. Falls hie rirgendetwas gar nicht geht dann helfen die weiteren Optionen.

                            b) npm rebuild
                            Der erste Versuch sollte immer mit dem Befehl "npm rebuild" im ioBroker Verzeichnis stattfinden, weil dies am saubersten funktioniert und direkt von der Paketverwaltung ausgeführt wird. Im Idealfall dauert das ein paar Minuten und es könnten ein paar Warnungen gelistet werden.
                            Falls es aber Fehler gibt, werden wir zusammen versuchen im nächsten Post alle bekannten Fälle mit Ihren Lösungsansätzen zu sammeln. Wenn das funktioniert ist dies der schnellste und sauberste Weg.

                            c) reinstall-Skript
                            Sollte das nicht klappen, beinhaltet der js-Controller ein reinstall-Skript ("reinstall.sh" bzw. ab js-controller 1.5.x "reinstall.js"). Dieses Skript erkennt alle installierten ioBroker-Adapter, löscht diese dann aus dem node_modules-Verzeichnis und installiert sie neu. Dieser Ansatz ist etwas aufwändiger als "npm rebuild", erfüllt aber den gleichen Zweck. Das funktioniert generell gut, man sollte den Prozess aber nicht abbrechen. Falls es doch passiert oder es Probleme beim Starten nach dieser Prozedur gibt, dann am besten den Weg im nächsten Punkt wählen.
                            Das reinstall.sh-Skript welches im js-controller 1.4 mitgeliefert wurde hat ein Formatierungsproblem und muss vorher noch für Linux mit den Befehlen

                            cd /opt/iobroker
                            sudo mv reinstall.sh reinstall.dos
                            sudo tr -d '\r' < reinstall.dos > reinstall.sh
                            sudo chmod +x reinstall.sh
                            

                            korrigiert werden, damit es funktioniert.

                            d) Reset aller Module in node_modules
                            Eine weitere Variante, die gründlich ist, aber etwas Zeit kostet, ist der Ansatz einfach alles Alte unter Beibehaltung der Daten und Einstellungen neu zu installieren. Wichtig ist, das iobroker-data Verzeichnis nicht zu verändern. Häufig können mit dieser Vorgehensweise auch andere (verborgene) Installationsfehler repariert werden.

                            Dazu löscht man zuerst das gesamte node_modules Verzeichnis im ioBroker-Verzeichnis.

                            cd /opt/iobroker
                            sudo rm -r node_modules/ 
                            

                            Nachdem der Befehl abgesetzt wurde, fragt das Programm, ob in den Ordner "hinabgestiegen" werden soll (sofern es ein tieferer Unterordner ist) und ob der (schreibgeschützte) Ordner wirklich gelöscht werden soll - beides bestätigt man mit "Ja" (j) oder "Yes" (y).

                            Danach installiert man den Controller in der relevanten Version (hier z.B. 2.2.8 der zum Zeitpunkt des Schreibens die aktuelle "Stable"-Version ist):

                            npm install iobroker.js-controller@2.2.8 --production
                            

                            Anschließend startet man ioBroker.

                            iobroker start
                            

                            ioBroker wird korrekterweise feststellen, dass die Adapter, die er starten will, nicht installiert sind - und diese einfach automatisch nachinstallieren. Je nach System kann dies einige Zeit dauern - gern auch ein paar Stunden (oder bei langsamen SD-Karten die ganze Nacht). Aber danach ist alles aktualisiert. Der Installationsfortschritt ist im Admin im Log-Fenster zu sehen.

                            Zu beachten ist, dass Adapter, die man manuell von GitHub installiert hat, den Fehler Can not parse null/io-package.json:Error: ENOENT: no suche file or directory ... im ioBroker-Log erzeugen.
                            Diese Adapter nach Abschluss der automatischen Installationssequenz wie gehabt über das Adapterfenster manuell von GitHub nachinstallieren und nach der Installation die bestehende diesbezügliche Instanz von Hand starten.

                            Ratsam ist es auch, im Log nach der Installation nach dem Wort yourself zu suchen. Hier werden ggf. npm-Module angezeigt, die nicht automatisch installiert wurden. Sie können/sollten manuell über die Kommandozeile mit npm i <Packetname>@<version>, ausgeführt im iobroker-Ordner, nachinstalliert werden. Dazu zuerst den ioBroker stoppen, npm ausführen und dann den ioBroker wieder starten.

                            Wenn man dabei npm als root-User per Hand in der Kommandozeile ausgeführt hat, schlage ich zur Korrektur eventueller Berechtigungsfehler vor, vor dem Start von ioBroker das Fixerscript laufen zu lassen.

                            cd /opt/iobroker
                            iobroker stop
                            npm i <Packetname>@<version>
                            curl -sL https://iobroker.net/fix.sh | bash -
                            iobroker start
                            

                            e) Neuinstallation mit Restore
                            Eine kleine Abwandlung der letzten Variante ist eine Neuinstallation. Hierbei sichert man das "iobroker-data" Verzeichnis (oder nutzt das Backup von oben). Dann löscht man das gesamte ioBroker-Verzeichnis und nutzt den Installer.

                            cp -r /opt/iobroker/iobroker-data <Pfad_zum_sicheren_Ort> 
                            sudo rm -r /opt/iobroker/ 
                            sudo mkdir /opt/iobroker
                            cd /opt/iobroker
                            curl -sL https://iobroker.net/install.sh | bash -
                            

                            Direkt danach stoppt man ioBroker wieder (der ja nach der Installation automatisch gestartet wird).

                            iobroker stop
                            

                            Dann löscht man den neu erstellen „iobroker-data“- Ordner und kopiert anschließend das gesicherte alte „iobroker-data“-Verzeichnis mit den darin enthaltenen Datenbanken und Dateien dorthin zurück.

                            rm -r /opt/iobroker/iobroker-data
                            cp -r <Pfad_zum_sicheren_Ort> /opt/iobroker/iobroker-data  
                            

                            Anschließend wieder ioBroker starten. Der Rest läuft dann wie bei c) und dauert seine Zeit.

                          5. Zu guter Letzt

                          Bitte gebt euer Feedback, was bei euch wie gut funktioniert, was ihr immer nutzt und was die Probleme und eure Lösungen sind.

                          Viele Grüße,
                          apollon77
                          stabilostick

                          smartboartS Offline
                          smartboartS Offline
                          smartboart
                          schrieb am zuletzt editiert von smartboart
                          #259

                          @Stabilostick sagte in [How-to] Node.js für ioBroker richtig updaten:

                          d) Neuinstallation mit Restore
                          Eine kleine Abwandlung der letzten Variante ist eine Neuinstallation. Hierbei sichert man das "iobroker-data" Verzeichnis (oder nutzt das Backup von oben). Dann löscht man das gesamte ioBroker-Verzeichnis und nutzt den Installer.

                          Hi, wie würde dieser Part mit einem Multihost System also mit dem Master und vor allem file und states mit Redis aussehen? In welchem step aktiviere ich das multihost system und die umstellung auf Redis?

                          apollon77A 1 Antwort Letzte Antwort
                          0
                          • smartboartS smartboart

                            @Stabilostick sagte in [How-to] Node.js für ioBroker richtig updaten:

                            d) Neuinstallation mit Restore
                            Eine kleine Abwandlung der letzten Variante ist eine Neuinstallation. Hierbei sichert man das "iobroker-data" Verzeichnis (oder nutzt das Backup von oben). Dann löscht man das gesamte ioBroker-Verzeichnis und nutzt den Installer.

                            Hi, wie würde dieser Part mit einem Multihost System also mit dem Master und vor allem file und states mit Redis aussehen? In welchem step aktiviere ich das multihost system und die umstellung auf Redis?

                            apollon77A Offline
                            apollon77A Offline
                            apollon77
                            schrieb am zuletzt editiert von
                            #260

                            @smartboart An sich ist das easy: Identisch. In iobroker-data ist die Konfig des Hosts drin und damit auch die Info welcher DB-Typ genutzt wird und wohin man connnecten muss. Also iobroker-data zurückkopieren und starten. Dann sollte das gleiche passieren.

                            Hier dann aber master zuerst und in der Zeit die Slaves stoppen. Und danach die Slaves nacheinander

                            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                            smartboartS 2 Antworten Letzte Antwort
                            0
                            • apollon77A apollon77

                              @smartboart An sich ist das easy: Identisch. In iobroker-data ist die Konfig des Hosts drin und damit auch die Info welcher DB-Typ genutzt wird und wohin man connnecten muss. Also iobroker-data zurückkopieren und starten. Dann sollte das gleiche passieren.

                              Hier dann aber master zuerst und in der Zeit die Slaves stoppen. Und danach die Slaves nacheinander

                              smartboartS Offline
                              smartboartS Offline
                              smartboart
                              schrieb am zuletzt editiert von
                              #261

                              @apollon77 danke für die schnelle Antwort..

                              1 Antwort Letzte Antwort
                              0
                              • apollon77A apollon77

                                @smartboart An sich ist das easy: Identisch. In iobroker-data ist die Konfig des Hosts drin und damit auch die Info welcher DB-Typ genutzt wird und wohin man connnecten muss. Also iobroker-data zurückkopieren und starten. Dann sollte das gleiche passieren.

                                Hier dann aber master zuerst und in der Zeit die Slaves stoppen. Und danach die Slaves nacheinander

                                smartboartS Offline
                                smartboartS Offline
                                smartboart
                                schrieb am zuletzt editiert von smartboart
                                #262

                                @apollon77 wie kann ich eigentlich erkennen, das der Widerherstellungsprozess nach iobroker start wieder läuft? Bzw. das alle Adapter installiert werden? irgenwie passiert hier nix...habe es mit top überprüft..
                                Folgendes nach iobroker start bzw. ausgabe bei iobroker status.
                                Unbenannt.JPG

                                1 Antwort Letzte Antwort
                                0
                                • apollon77A Offline
                                  apollon77A Offline
                                  apollon77
                                  schrieb am zuletzt editiert von
                                  #263

                                  Im ioBroker Logfile des Hosts oder im Admin Log Tab

                                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                  smartboartS 1 Antwort Letzte Antwort
                                  0
                                  • apollon77A apollon77

                                    Im ioBroker Logfile des Hosts oder im Admin Log Tab

                                    smartboartS Offline
                                    smartboartS Offline
                                    smartboart
                                    schrieb am zuletzt editiert von smartboart
                                    #264

                                    @apollon77 ok, es geht erst wenn ich mit iobroker custom auf file umstelle
                                    jetzt startet iobroker auch und ich es sehe es im log... Also ganz ohne umstellung funktioniert es bei redis system nicht ..

                                    liegt wahrscheinlich dadran, dass der jscontroller nach neuinstall nicht auf V2 ist...Wie es in meinem System schon der fall war..

                                    apollon77A 1 Antwort Letzte Antwort
                                    0
                                    • smartboartS smartboart

                                      @apollon77 ok, es geht erst wenn ich mit iobroker custom auf file umstelle
                                      jetzt startet iobroker auch und ich es sehe es im log... Also ganz ohne umstellung funktioniert es bei redis system nicht ..

                                      liegt wahrscheinlich dadran, dass der jscontroller nach neuinstall nicht auf V2 ist...Wie es in meinem System schon der fall war..

                                      apollon77A Offline
                                      apollon77A Offline
                                      apollon77
                                      schrieb am zuletzt editiert von
                                      #265

                                      @smartboart Ääähm ja ein Slave neu installiert wenn der Master schon 2.0 ist dann muss der Slave auch 2.0 sein. Dann würde alles automatisch gehen nach iobroker-data kopieren

                                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                      smartboartS 1 Antwort Letzte Antwort
                                      0
                                      • apollon77A apollon77

                                        @smartboart Ääähm ja ein Slave neu installiert wenn der Master schon 2.0 ist dann muss der Slave auch 2.0 sein. Dann würde alles automatisch gehen nach iobroker-data kopieren

                                        smartboartS Offline
                                        smartboartS Offline
                                        smartboart
                                        schrieb am zuletzt editiert von smartboart
                                        #266

                                        @apollon77 nein ...ich habe den Master neu installiert.Hatte alles aktuell.
                                        und auf den neuen Controller umgestellt. Wegen der nervigen node gyp fehler habe ich heute nach Anleitung d: neuinstallation mit restore alles neu installiert.
                                        Slave war gestoppt. Mein file und state system war auf redis. Hier hat es beim iobroker start dann gehakt. siehe Bild oben.
                                        Dann umgestellt states und objekt wieder auf file. iobroker start hat dann geklappt. Dann war auch der Admin wieder erreichbar und alles wurde neuinstalliert. Anschl. wieder auf redis .. dann wars gut...das war jaEingangs meine Frage ob der Vorgang anderes is bei nem master mit file und state in redis, was ja erst seit dem neuen Controller geht..Und nun endlich wieder node-gyp Fehlerfrei...

                                        arteckA 1 Antwort Letzte Antwort
                                        0
                                        • StabilostickS Stabilostick

                                          MOD-EDIT: Dieser Thread und insbesondere diese Anleitung ist von 2019 und somit veraltet

                                          aktuell ist
                                          https://forum.iobroker.net/topic/35090/howto-nodejs-installation-und-upgrades-unter-debian


                                          Update März 2023: Die aktuelle Anleitung findet ihr hier : https://forum.iobroker.net/topic/64032/update-nodejs-best-practise-supported-14-16-und-18

                                          1. Einleitung

                                          Node.js ist die Laufzeitumgebung der Programmiersprache JavaScript, in der ioBroker geschrieben ist. Ohne Node.js funktioniert ioBroker nicht.

                                          Wie bei vielen Open-Source-Technologien üblich, entwickelt sich Node.js schnell weiter. Kleinere Updates, die die Stabilität und Sicherheit steigern oder gar neue Funktionen hinzufügen, erscheinen fast wöchentlich.

                                          Node.js-Versionen mit gerader Hauptversionsnummer werden als LTS-Versionen (Long Term Support) bezeichnet und einige Jahre gepflegt (z.B. 8.x). In 2017 war das Node.js 8, 2018 kam Node.js 10, dann 12.x hinzu und im Oktober 2021 wird Node.js 14 den LTS-Status erhalten.

                                          Im gleichem Zug erreichen frühere LTS-Versionen ihr Lebensende (EOL, End of Life). So hat Node.js 6 im April 2019 den EOL-Status erhalten und bekommt damit keine Updates mehr, Nodejs 8.x ist seit November 2019 raus.

                                          Alle Node.js-Versionen mit ungeraden Versionsnummern sind Entwicklungsversionen und sollten nicht produktiv genutzt werden.

                                          Auch ioBroker wird stetig weiterentwickelt und nutzt die neuen Funktionen aktueller Node.js-Versionen. Obwohl der ioBroker js-controller mit Versionen 1.4.x bzw. 1.5.x noch Node.js 4 unterstützt, fordern neue Adapter immer häufiger mindestens Node.js 8 als Grundvoraussetzung.

                                          Ab der Version 2.0 des js-controllers (das Freigabedatum ist noch nicht bekannt) sind die Anpassungen so tiefgreifend, dass die Node.js-Versionen 4 und 6 nicht mehr unterstützt werden können.

                                          Ab Version 3.0/3.1 vom Controller, der gerade (Stand 24.4.2020) im Latest Repository ist, wird Nodejs 10.x Minimum sein.

                                          Alle paar Jahre steht also für eine ioBroker-Installation ein Update von Node.js an. Dieser Artikel soll zusammenfassen wir man dazu am besten vorgeht.

                                          2. Wer sollte updaten?

                                          Aktuell empfehlen wir, bei ioBroker-Neuinstallationen mindestens Node.js 10, besser noch 12.x. zu verwenden. Es sind wenige Adapter bekannt, die nicht mit Node 10/12 funktionieren: Details dazu in https://forum.iobroker.net/topic/30561/status-iobroker-und-node-js-12-x

                                          Windows-Anwendern empfehlen wir, auf jeden Fall am Test des neuen Windows-Installers teilzunehmen: https://forum.iobroker.net/post/266623
                                          Der zukünftige Windows-Installer für ioBroker wird eine Funktion erhalten, bestehende Installationen automatisch auf aktuelle js-controller- und Node.js-Versionen zu migrieren, ohne dass man die Kommandozeile bemühen muss.

                                          Bevor man beginnt, sollte man in der Befehlszeile mit dem Befehl

                                          node -v
                                          

                                          überprüfen, welche Version von Node.js gerade installiert ist. Eine gute Idee ist es, diese Versionsangabe auch mit der Node.js-Version im Übersichts-Fenster des ioBroker-Admins für diesen Host zu vergleichen. Sollten sich die Versionen unterscheiden, sind mehrere Node.js-Varianten installiert, was zu Problemen führen kann.

                                          Grundsätzlich gilt: Sollte das ioBroker-System stabil laufen, muss Node.js auch nicht auf Gedeih und Verderb upgedated werden. Wenn aber die Installation bestimmter Adapter fehlschlägt (wohlmöglich sogar mit entsprechender Fehlermeldung) oder eine Node-Version < 4 für einen js-controller > Version 1.4.x eingesetzt wird, sollte über ein Node.js-Update nachgedacht werden. Es sind auch Probleme für die Node.js-Versionen 8.0 - 8.12 mit volllaufendem RAM bekannt, so dass wir auch hier ein Update empfehlen.

                                          Wie bereits gesagt: Sollte das ioBroker-System stabil laufen und ist die Installation technisch nicht gefordert, muss Node.js auch nicht auf Gedeih und Verderb upgedated werden.

                                          3. Was sollte ich vor dem Update tun?

                                          Hinweis: Falls die Version des js-controllers <= 1.5.12 ist, muss VOR dem Update in den Einstellungen der Admin-Instanz "Verschlüsselung (https) benutzen" ausgeschaltet werden. Das in ioBroker bis dahin integrierte Zertifikat kann zu Problemen beim Starten des Admin bei Node.js-Versionen >= 10 führen.

                                          Damit es nach dem Update zu keinen Inkompatibilitäten oder Probleme kommt sollte man alle Adapter prüfen und aktualisieren. Vor allem Adapter mit nativen Bestandteilen, wie alles mit Serialport oder Bluetooth können Probleme bereiten. Hier am besten die Adapter-Readme's per Admin oder im GitHub prüfen, ob neue Versionen zur Verfügung stehen die die geplante Node.js Version explizit erst unterstützen. Auch wenn diese Versionen ggf. noch im "Latest" Repository sind muss man diese vorher aktualisieren. Alternativ wartet man mit der ganzen Update-Aktion bis die neuen Versionen im "Stable" Repository sind, schreibt den Entwickler dazu an oder fragt im Forum nach.

                                          Wenn man diesen Schritt nicht durchführt kann es zu unnötigen Problemen beim update der Adapter kommen!

                                          4. Step-by-step-Anleitung für Unix-Systeme

                                          • Zuerst muss natürlich unbedingt ein Backup erstellt werden. Dazu kann z.B. der BackItUp-Adapter genutzt oder der Kommandozeilenbefehl

                                            cd /opt/iobroker
                                            iobroker backup
                                            

                                            ausgeführt werden. Das Backup sollte aktuell sein, damit möglichst keine Daten verloren gehen.

                                          • Anschließend ioBroker stoppen, damit Updates keine Nebeneffekte oder Abstürze verursachen.

                                            iobroker stop
                                            

                                            Bitte anschließend im Webbrowser prüfen, dass der ioBroker-Admin danach wirklich nicht mehr startet. Sollte er weiterhin aufrufbar sein, dann den Rechner neu starten und nochmals „iobroker stop“ ausführen und erneut testen. Für die Techniker unter uns: Man kann auch mit einem Tool wie "top" prüfen, ob noch Prozesse existieren, die mit "io." beginnen. Die dann mit einem beherzten "sudo kill -9 <ProzessID>" zwangsbeenden.

                                          • Jetzt aktualisiert man Node.js auf die gewünschte neue Version.

                                            Unter Linux reicht es, dazu den Nodesource-Installationsbefehl für das jeweilige Betriebssystem auszuführen. Verschiedene Varianten sind unter https://github.com/nodesource/distributions#debinstall gelistet.

                                            Zum Beispiel lauten die Befehle für einen Raspberry Pi der ein Debian bzw. Raspbian-Image verwendet wie folgt, wenn man nicht als root-User (z.B. richtig mit dem User "pi") angemeldet ist:

                                            curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
                                            sudo apt-get install -y nodejs
                                            

                                          Für nodejs 12 einfach in der URL oben anstelle der 10 eine 12 reinpacken.

                                          Für macOS gibt einen Installer auf https://nodejs.org/en/download/ , den man einfach ausführt.

                                          Ob die Aktualisierung geklappt hat, kann man wieder mit dem Befehl

                                          node -v
                                          

                                          überprüfen.

                                          • Da die Installation von Node.js einige Einstellungen am System verändert haben kann, ist es jetzt ratsam, den ioBroker-Installationsfixer aufzurufen. Das geschieht mit dem Befehl

                                            curl -sL https://iobroker.net/fix.sh | bash -
                                            

                                            Er stellt unter anderem die für den Betrieb von ioBroker notwendigen Sicherheitseinstellungen wieder her.

                                          • Bei einer Aktualisierung von Node.js müssen bereits installierte JavaScript- Module im ioBroker-Ordner aktualisiert werden, da sonst Fehler bei deren Ausführung auftreten.

                                            Um diese zu aktualisieren gibt es mehrere Möglichkeiten:

                                            a) ab js-controller 3.0: Automatischer Rebuild
                                            ioBroker versucht seit dem js-controller 3.0 automatisch Adapter zu erkennen die nicht starten weil Sie aktualisiert werden müssen. Dies funktioniert so das die typischen Fehlermeldungen erkannt werden und ioBroker dann die Aktualisierung versucht. Zuerst wird ein "rebuild" des betroffenen Adapters ausgeführt, falls das nicht hilft werden die Adapter-Abhängigkeiten aktualisiert. Daher kann es sein das der Adapter mehrfach ersucht wird neu zu starten. Hier bitte Geduld haben!
                                            Bei einigen Adaptern (zB iot die optionale native Abhängigkeiten haben) funktioniert die automatische Erkennung nicht und das rebuild muss manuell angestoßen werden. Hier zu gibt es iobroker rebuild adaptername und falls das nicht reicht iobroker rebuild adaptername --install. Das einfach manuell ausführen. Damit sollte alles idealerweise automatisiert erledigt sein. Falls hie rirgendetwas gar nicht geht dann helfen die weiteren Optionen.

                                            b) npm rebuild
                                            Der erste Versuch sollte immer mit dem Befehl "npm rebuild" im ioBroker Verzeichnis stattfinden, weil dies am saubersten funktioniert und direkt von der Paketverwaltung ausgeführt wird. Im Idealfall dauert das ein paar Minuten und es könnten ein paar Warnungen gelistet werden.
                                            Falls es aber Fehler gibt, werden wir zusammen versuchen im nächsten Post alle bekannten Fälle mit Ihren Lösungsansätzen zu sammeln. Wenn das funktioniert ist dies der schnellste und sauberste Weg.

                                            c) reinstall-Skript
                                            Sollte das nicht klappen, beinhaltet der js-Controller ein reinstall-Skript ("reinstall.sh" bzw. ab js-controller 1.5.x "reinstall.js"). Dieses Skript erkennt alle installierten ioBroker-Adapter, löscht diese dann aus dem node_modules-Verzeichnis und installiert sie neu. Dieser Ansatz ist etwas aufwändiger als "npm rebuild", erfüllt aber den gleichen Zweck. Das funktioniert generell gut, man sollte den Prozess aber nicht abbrechen. Falls es doch passiert oder es Probleme beim Starten nach dieser Prozedur gibt, dann am besten den Weg im nächsten Punkt wählen.
                                            Das reinstall.sh-Skript welches im js-controller 1.4 mitgeliefert wurde hat ein Formatierungsproblem und muss vorher noch für Linux mit den Befehlen

                                            cd /opt/iobroker
                                            sudo mv reinstall.sh reinstall.dos
                                            sudo tr -d '\r' < reinstall.dos > reinstall.sh
                                            sudo chmod +x reinstall.sh
                                            

                                            korrigiert werden, damit es funktioniert.

                                            d) Reset aller Module in node_modules
                                            Eine weitere Variante, die gründlich ist, aber etwas Zeit kostet, ist der Ansatz einfach alles Alte unter Beibehaltung der Daten und Einstellungen neu zu installieren. Wichtig ist, das iobroker-data Verzeichnis nicht zu verändern. Häufig können mit dieser Vorgehensweise auch andere (verborgene) Installationsfehler repariert werden.

                                            Dazu löscht man zuerst das gesamte node_modules Verzeichnis im ioBroker-Verzeichnis.

                                            cd /opt/iobroker
                                            sudo rm -r node_modules/ 
                                            

                                            Nachdem der Befehl abgesetzt wurde, fragt das Programm, ob in den Ordner "hinabgestiegen" werden soll (sofern es ein tieferer Unterordner ist) und ob der (schreibgeschützte) Ordner wirklich gelöscht werden soll - beides bestätigt man mit "Ja" (j) oder "Yes" (y).

                                            Danach installiert man den Controller in der relevanten Version (hier z.B. 2.2.8 der zum Zeitpunkt des Schreibens die aktuelle "Stable"-Version ist):

                                            npm install iobroker.js-controller@2.2.8 --production
                                            

                                            Anschließend startet man ioBroker.

                                            iobroker start
                                            

                                            ioBroker wird korrekterweise feststellen, dass die Adapter, die er starten will, nicht installiert sind - und diese einfach automatisch nachinstallieren. Je nach System kann dies einige Zeit dauern - gern auch ein paar Stunden (oder bei langsamen SD-Karten die ganze Nacht). Aber danach ist alles aktualisiert. Der Installationsfortschritt ist im Admin im Log-Fenster zu sehen.

                                            Zu beachten ist, dass Adapter, die man manuell von GitHub installiert hat, den Fehler Can not parse null/io-package.json:Error: ENOENT: no suche file or directory ... im ioBroker-Log erzeugen.
                                            Diese Adapter nach Abschluss der automatischen Installationssequenz wie gehabt über das Adapterfenster manuell von GitHub nachinstallieren und nach der Installation die bestehende diesbezügliche Instanz von Hand starten.

                                            Ratsam ist es auch, im Log nach der Installation nach dem Wort yourself zu suchen. Hier werden ggf. npm-Module angezeigt, die nicht automatisch installiert wurden. Sie können/sollten manuell über die Kommandozeile mit npm i <Packetname>@<version>, ausgeführt im iobroker-Ordner, nachinstalliert werden. Dazu zuerst den ioBroker stoppen, npm ausführen und dann den ioBroker wieder starten.

                                            Wenn man dabei npm als root-User per Hand in der Kommandozeile ausgeführt hat, schlage ich zur Korrektur eventueller Berechtigungsfehler vor, vor dem Start von ioBroker das Fixerscript laufen zu lassen.

                                            cd /opt/iobroker
                                            iobroker stop
                                            npm i <Packetname>@<version>
                                            curl -sL https://iobroker.net/fix.sh | bash -
                                            iobroker start
                                            

                                            e) Neuinstallation mit Restore
                                            Eine kleine Abwandlung der letzten Variante ist eine Neuinstallation. Hierbei sichert man das "iobroker-data" Verzeichnis (oder nutzt das Backup von oben). Dann löscht man das gesamte ioBroker-Verzeichnis und nutzt den Installer.

                                            cp -r /opt/iobroker/iobroker-data <Pfad_zum_sicheren_Ort> 
                                            sudo rm -r /opt/iobroker/ 
                                            sudo mkdir /opt/iobroker
                                            cd /opt/iobroker
                                            curl -sL https://iobroker.net/install.sh | bash -
                                            

                                            Direkt danach stoppt man ioBroker wieder (der ja nach der Installation automatisch gestartet wird).

                                            iobroker stop
                                            

                                            Dann löscht man den neu erstellen „iobroker-data“- Ordner und kopiert anschließend das gesicherte alte „iobroker-data“-Verzeichnis mit den darin enthaltenen Datenbanken und Dateien dorthin zurück.

                                            rm -r /opt/iobroker/iobroker-data
                                            cp -r <Pfad_zum_sicheren_Ort> /opt/iobroker/iobroker-data  
                                            

                                            Anschließend wieder ioBroker starten. Der Rest läuft dann wie bei c) und dauert seine Zeit.

                                          5. Zu guter Letzt

                                          Bitte gebt euer Feedback, was bei euch wie gut funktioniert, was ihr immer nutzt und was die Probleme und eure Lösungen sind.

                                          Viele Grüße,
                                          apollon77
                                          stabilostick

                                          T Offline
                                          T Offline
                                          tomturo
                                          schrieb am zuletzt editiert von
                                          #267

                                          @Stabilostick said in [How-to] Node.js für ioBroker richtig updaten:

                                          curl -sL https://iobroker.net/fix.sh | bash -

                                          Absolut Klasse Anleitung!! Hat mir den Ar.... gerettet 🙂

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          720

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe