Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Docker Container restart iobroker per script

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Docker Container restart iobroker per script

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      alka last edited by alka

      leider funktioniert die veraltete Lösung per
      exec ('iobroker restart');
      nicht mehr

      ich benötige jedoch eine Möglichkeit, einen Neustart von DAU's auszulösen zu lassen
      Iobroker läuft auf der Synology im Docker-Container (Syno aus- und einschalten wäre mir zu brutal...), die Varianten über die Syno-GUI oder Portainer überfordern die Zielpersonen leider

      Hintergrund:
      bei Inkonsistenzen im System soll der Raspi mit CCU3 neu gestartet werden (per script problemlos), danach herrscht jedoch im iobroker (angefangen bei den Rega's/RPC's bis zu den vielen scripten welche damit arbeiten manchmal einiges chaos
      natürlich lassen sich die einzelnen Adapter alle einzeln neu starten und zum Schluss die Javascript-Adapter, ein kompletter iobroker-restart deckt aber alles ab und würde praktisch 'sauber und frisch' laufen können

      wäre schön, wenn es da eine Lösung für mich gäbe und mir die auch jemand verrät 🙂

      Glasfaser F UncleSam 3 Replies Last reply Reply Quote 0
      • Glasfaser
        Glasfaser @alka last edited by Glasfaser

        @alka said in restart iobroker per script?:

        würde praktisch 'sauber und frisch' laufen können

        ..... wäre doch nur das Log betroffen , das heißt beim Neustart des Dockers sind natürlich nicht so viele Fehler drinn von der CCU oder stört dich das Log !?

        überfordern die Zielpersonen leider

        und wer ist das ?

        A 1 Reply Last reply Reply Quote 0
        • A
          alka @Glasfaser last edited by

          @glasfaser
          möchtest du jetzt, das ich Familienmitglieder oute? ist doch problembezogen unwichtig

          ähm, wieso nur log betroffen? das log gibt doch nur die Fehler wieder, welche passieren
          wie ich bereits schrieb, müssen die hm-bezogenen Adapter neu gestartet werden sowie anschließend alle scripte die zB die Datenpunkte dort auslesen/einsammeln/verwerten

          es wäre sehr freundlich, wenn ich zielführende Antworten oder zum Antworten notwendige Nachfragen bekäme

          Glasfaser 1 Reply Last reply Reply Quote 0
          • Glasfaser
            Glasfaser @alka last edited by

            @alka said in restart iobroker per script?:

            @glasfaser
            möchtest du jetzt, das ich Familienmitglieder oute? ist doch problembezogen unwichtig

            Das nicht , aber weiß ich bzw. andere die deine Abfrage lesen , ob derjeniege sich mit Putty auskennt um iobroker im Docker neu zu starten ?

            Weil du schreibst

            die Syno-GUI oder Portainer überfordern

            A 1 Reply Last reply Reply Quote 0
            • A
              alka @Glasfaser last edited by

              @glasfaser
              also wer mit der Syno-Gui und/oder der Portainer-Oberfläche nix anfangen kann (bzw. uU sogar heftig Schaden anrichtet) hat mit Befehlszeilen/Ptty usw. gleich zweimal nix am Hut

              ich benötige eine Ein-Klick (bzw zwei-klick da ich ja auch schon beim alten eine Nachfrage drin hatte) Lösung, welche sich in der VIS befindet

              Thomas Braun 1 Reply Last reply Reply Quote 0
              • Thomas Braun
                Thomas Braun Most Active @alka last edited by

                @alka
                Funktioniert

                exec ('sudo -u iobroker iobroker restart');
                

                denn nicht?

                A AlCalzone 2 Replies Last reply Reply Quote 0
                • A
                  alka @Thomas Braun last edited by

                  @thomas-braun said in restart iobroker per script?:

                  exec ('sudo -u iobroker iobroker restart');

                  sudo: Die Audit-Nachricht kann nicht gesendet werden: Die Operation ist nicht erlaubt error: failed switching to "iobroker": operation not permitted

                  1 Reply Last reply Reply Quote 0
                  • F
                    fastfoot @alka last edited by

                    @alka Ich glaube nicht dass das von innerhalb iobroker klappen kann(Adapter ausgenommen), lasse mich da aber gerne eines Besseren belehren.
                    Was aber klappt ist Folgendes:

                    • im Container ein Skript restart.sh
                    FILE=/opt/iobroker/.restart
                    rm "$FILE"
                    while [ ! -f "$FILE" ]
                    do
                       sleep 60
                    done
                    
                    rm "$FILE"
                    /opt/iobroker/iobroker restart javascript.0
                    /opt/iobroker/iobroker restart Dein_Adapter.0
                    
                    • Starten des Skript mit nohup restart.sh &
                    • In iobroker ein Skript mit exec('>/opt/iobroker/.restart') welches auf die VIS reagiert

                    Was Besseres fällt mir nicht ein, aber als Workaround sollte es so schon funktionieren

                    1 Reply Last reply Reply Quote 0
                    • UncleSam
                      UncleSam Developer @alka last edited by

                      @alka said in restart iobroker per script?:

                      leider funktioniert die veraltete Lösung per
                      exec ('iobroker restart');
                      nicht mehr

                      Das stimmt so nicht.

                      Iobroker läuft auf der Synology im Docker-Container (Syno aus- und einschalten wäre mir zu brutal...), die Varianten über die Syno-GUI oder Portainer überfordern die Zielpersonen leider

                      Da liegt das Problem: in Containern kannst du ioBroker nicht gleich behandeln wie als eigenständiger Prozess auf einem "normalen" Linux.

                      Wie du hier sehen kannst, geht nur pkill -u iobroker und das ist für dich keine Option - iobroker sollte ja danach wieder laufen!

                      Portainer hat eine HTTP API, aber die scheint recht kompliziert, damit könntest du den Container neu starten lassen. Du könntest auch einfach direkt auf die Docker API zugreifen, aber auch das ist wahrscheinlich eher kompliziert (Docker im Container installieren (dind), dann Socket mounten und dann mit dem docker restart CONTAINER den Container neu starten).

                      Fazit: die Lösung von @fastfoot ist wohl die einfachste.

                      A 1 Reply Last reply Reply Quote 0
                      • A
                        alka @UncleSam last edited by

                        ich danke euch beiden
                        zumindest wäre dies eine Möglichkeit, falls mir nicht noch etwas besseres unterkommt

                        Das stimmt so nicht.
                        ...
                        Da liegt das Problem: in Containern kannst du ioBroker nicht gleich behandeln wie als eigenständiger Prozess auf einem "normalen" Linux.

                        naja, zumindest hatte es jedoch mal so funktioniert - in einer älteren Konstellation hatte ich schon einmal eine solche Art von Restart-Knopf angelegt und es hat funktioniert

                        es ist halt so: die gesamte Hausanlage ist per javascript extrem automatisiert. Aber ich bin nicht mehr der jüngste und etwas angeschlagen - wenn ich mal unerwartet in die Klinik muss und einige Zeit nicht in der Lage bin mich zu kümmern, muss das Haussystem ja weiter laufen. Da soll weder ein Hänger der CCU noch ein ausfallendes Gerät Störungen in den Abläufen verursachen. In größeren Abständen kann sich evtl jemand kümmern, falls es mich ins Nirwana haut oder sich eben doch niemand kümmern will/kann dann kann auch alles wieder 'händisch' betrieben werden - aber kurzfristig muss es halt simpel lösbar sein.

                        Evtl versuche ich die Sache auch noch mal anders herum - Restart der CCU, danach die HM-Instanzen neu starten, anschließend die script-instanzen
                        Das könnte ich dann auch selbst nutzen, zB wenn nach Änderungen auf der CCU (Räume, neue Geräte...) die hm-Adapter mal wieder 'verwirrt' sind und die scripte mitreißen. Immer mal wieder finde ich zwar etwas was abfangbar ist und baue es entsprechend ein - aber irgendwas übersieht man immer wenn es noch nie auftrat...

                        Glasfaser 1 Reply Last reply Reply Quote 0
                        • AlCalzone
                          AlCalzone Developer @Thomas Braun last edited by

                          @thomas-braun said in restart iobroker per script?:

                          sudo -u iobroker

                          Alle exec-Befehle aus iobroker laufen bereits als der User ioBroker. Das ist also nicht nötig.

                          A 1 Reply Last reply Reply Quote 1
                          • A
                            alka @AlCalzone last edited by

                            @alcalzone
                            siehe Post 1 - ich versuche jedoch bei Hilfeangeboten diese umzusetzen, auch wenn es scheinbar wider eigenes Wissen wäre (manchmal ist man ja einfach auf dem Holzweg)

                            1 Reply Last reply Reply Quote 0
                            • Glasfaser
                              Glasfaser @alka last edited by

                              @alka said in restart iobroker per script?:

                              in einer älteren Konstellation hatte ich schon einmal eine solche Art von Restart-Knopf angelegt und es hat funktioniert

                              @andre

                              A 1 Reply Last reply Reply Quote 0
                              • A
                                alka @Glasfaser last edited by

                                @glasfaser
                                damit kann ich grad nichts anfangen? zumindest etwas zu remote-restart konnte ich beim querlesen nicht finden
                                ich nutze portainer schon länger (und ja, ich kann problemlos die portainer-Funktionen wie restart nutzen), meine System-Installation läuft und verwaltet 9491 Objekte/ 8347 Zustände, bei 54 hm-Geräten und ca 30 nicht-hm-Geräten mit vieleicht 30 scripts (einige viele tausend Zeilen code)

                                UncleSam Glasfaser 2 Replies Last reply Reply Quote 0
                                • UncleSam
                                  UncleSam Developer @alka last edited by

                                  @alka said in restart iobroker per script?:

                                  und ja, ich kann problemlos die portainer-Funktionen wie restart nutzen

                                  Eine Idee: kannst du mal mit dem Browser Portainer öffnen und dann die Entwicklerwerkzeuge des Browsers (Chrome/Edge mit F12) öffnen. Dann mal den Container neu starten. Dann solltest du sehen, welchen Request die Website macht. Wenn du Glück hast, kannst du das auch aus deinem Skript ausführen.

                                  A 1 Reply Last reply Reply Quote 0
                                  • Glasfaser
                                    Glasfaser @alka last edited by

                                    @alka said in restart iobroker per script?:

                                    @glasfaser
                                    damit kann ich grad nichts anfangen?

                                    Ich habe nur André damit informiert.

                                    1 Reply Last reply Reply Quote 0
                                    • andre
                                      andre Developer last edited by

                                      Habt ihr schon mal probiert den Container mit automatischem Restart auszustatten (restart Policy) und einfach alle Prozesse im Container zu killen (pkill -u iobroker && pkill -u root)?
                                      Alternativ sehe ich ein issue im Github mit dem Wunsch einen restart Parameter über das Maintenance Script (Beta) einzubauen... 🙂

                                      MfG,
                                      André

                                      1 Reply Last reply Reply Quote 1
                                      • A
                                        alka @UncleSam last edited by alka

                                        @unclesam said in restart iobroker per script?:

                                        Eine Idee: kannst du mal mit dem Browser Portainer

                                        auch der restart per Portainer beendet erst und startet dann, da der Portainer weiterläuft ist das ja kein Problem beide Befehle nacheinander zu senden

                                        sinnvoll geht es mMn nur so oder ähnlich wie von @fastfoot beschrieben, werde es so lösen
                                        ideal wäre natürlich wenn in Zukunft die iobroker-Installation so etwas bereits mitbringen würde

                                        edit:
                                        allerdings sind der restart von adapter/javascript usw. ja problemlos innerhalb des iobroker zu bewältigen
                                        mir ging es um den restart des kompletten iobroker-systems

                                        edit2:
                                        innerhalb iobroker ist es ja eigentlich relativ einfach, alle instanzen einzusammeln und neu zu starten - einzig muss es dafür eine zusätzliche javascript-instanz geben, welche die eigentlichen javascript-instanzen wieder startet
                                        wieviel Kapazität frisst denn so einen instanz im system?

                                        F 1 Reply Last reply Reply Quote 0
                                        • F
                                          fastfoot @alka last edited by

                                          @alka said in restart iobroker per script?:

                                          edit:
                                          allerdings sind der restart von adapter/javascript usw. ja problemlos innerhalb des iobroker zu bewältigen

                                          wie würdest du das tun? Ich wüsste jetzt nicht wie ich das bewerkstelligen sollte

                                          mir ging es um den restart des kompletten iobroker-systems

                                          ich wollte mit meinem Vorschlag nicht mit dem Hammer draufschlagen, deshalb nur die Restarts. Natürlich funktioniert auch ein kill aller Prozesse(pkill io), was den Container bei entsprechender Einstellung dann automatisch neustartet, wie von @andre vorgeschlagen. Viel cooler wäre natürlich ein eingebauter Reset eines Containers wie von Andre in Aussicht gestellt. Das Warten auf einen Event mittels Skript und sleep ist nicht gerade neuester Stand der Technik und war auch mehr als Workaround gedacht, ob der Linux Watchdog im Container funktioniert, wollte ich nicht testen, reine Faulheit

                                          edit2:
                                          innerhalb iobroker ist es ja eigentlich relativ einfach, alle instanzen einzusammeln und neu zu starten - einzig muss es dafür eine zusätzliche javascript-instanz geben, welche die eigentlichen javascript-instanzen wieder startet
                                          wieviel Kapazität frisst denn so einen instanz im system?

                                          also bei mir sind das 250MB, war aber auch schon weniger, hängt evtl. mit der Anzahl der Skripte und zusätzlich installierten Module zusammen, wobei eine frisch initiierte Instanz ohne laufende Skripte auch soviel verbraucht wie meine Hauptinstanz

                                          A 1 Reply Last reply Reply Quote 0
                                          • A
                                            alka @fastfoot last edited by

                                            @fastfoot said in restart iobroker per script?:

                                            wie würdest du das tun?
                                            Beispiel einzeln in javascript.1 abschalten:

                                            setState('system.adapter.javascript.0.alive',false);
                                            setState('system.adapter.hm-rega.0.alive',false);
                                            

                                            anschließend, evtl mit timeout, wieder einschalten (die adapter jedoch nicht einzeln sondern entweder als Liste festlegen und abarbeiten oder sogar autom. einlesen

                                            F 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

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

                                            538
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            11
                                            62
                                            4861
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo