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

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Docker Container restart iobroker per script

NEWS

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

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

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

Docker Container restart iobroker per script

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
62 Beiträge 11 Kommentatoren 7.0k Aufrufe 9 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.
  • AlCalzoneA AlCalzone

    @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 Offline
    A Offline
    alka
    schrieb am zuletzt editiert von
    #12

    @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 Antwort Letzte Antwort
    0
    • A alka

      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...

      GlasfaserG Offline
      GlasfaserG Offline
      Glasfaser
      schrieb am zuletzt editiert von
      #13

      @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

      Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

      A 1 Antwort Letzte Antwort
      0
      • GlasfaserG Glasfaser

        @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 Offline
        A Offline
        alka
        schrieb am zuletzt editiert von
        #14

        @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)

        UncleSamU GlasfaserG 2 Antworten Letzte Antwort
        0
        • A alka

          @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)

          UncleSamU Offline
          UncleSamU Offline
          UncleSam
          Developer
          schrieb am zuletzt editiert von
          #15

          @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.

          Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
          ♡-lichen Dank an meine Sponsoren

          A 1 Antwort Letzte Antwort
          0
          • A alka

            @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)

            GlasfaserG Offline
            GlasfaserG Offline
            Glasfaser
            schrieb am zuletzt editiert von
            #16

            @alka said in restart iobroker per script?:

            @glasfaser
            damit kann ich grad nichts anfangen?

            Ich habe nur André damit informiert.

            Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

            1 Antwort Letzte Antwort
            0
            • andreA Offline
              andreA Offline
              andre
              Developer
              schrieb am zuletzt editiert von
              #17

              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é

              Bitte keine Support-Fragen per PN! Nutzt die öffentliche Kanäle damit auch andere von den Antworten profitieren können!

              1 Antwort Letzte Antwort
              1
              • UncleSamU UncleSam

                @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 Offline
                A Offline
                alka
                schrieb am zuletzt editiert von alka
                #18

                @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 Antwort Letzte Antwort
                0
                • A 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 Offline
                  F Offline
                  fastfoot
                  schrieb am zuletzt editiert von
                  #19

                  @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

                  iobroker läuft unter Docker auf QNAP TS-451+
                  SkriptRecovery: https://forum.iobroker.net/post/930558

                  A 1 Antwort Letzte Antwort
                  0
                  • F fastfoot

                    @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 Offline
                    A Offline
                    alka
                    schrieb am zuletzt editiert von
                    #20

                    @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 Antwort Letzte Antwort
                    0
                    • A alka

                      @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 Offline
                      F Offline
                      fastfoot
                      schrieb am zuletzt editiert von
                      #21

                      @alka said in restart iobroker per script?:

                      @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

                      och, wie einfach. Dachte immer die alive-DP seien readonly. Ich würde dann aber über diese Restarts gehen anstatt den gesamten Container abzuschiessen, falls irgend möglich. Wäre auch für die Bediener userfreundlicher

                      iobroker läuft unter Docker auf QNAP TS-451+
                      SkriptRecovery: https://forum.iobroker.net/post/930558

                      A 1 Antwort Letzte Antwort
                      0
                      • F fastfoot

                        @alka said in restart iobroker per script?:

                        @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

                        och, wie einfach. Dachte immer die alive-DP seien readonly. Ich würde dann aber über diese Restarts gehen anstatt den gesamten Container abzuschiessen, falls irgend möglich. Wäre auch für die Bediener userfreundlicher

                        A Offline
                        A Offline
                        alka
                        schrieb am zuletzt editiert von
                        #22

                        @fastfoot
                        ja, zudem ich gerade herausgefunden habe wer/was mir dort Probleme bereitet hat:
                        https://forum.iobroker.net/topic/40949/problem-fehler-in-mit-history-adapter
                        dieses script ist aus verschiedenen Gründen notwendig, verhindert aber eine saubere Restart-Aktion

                        1 Antwort Letzte Antwort
                        0
                        • GlasfaserG Offline
                          GlasfaserG Offline
                          Glasfaser
                          schrieb am zuletzt editiert von Glasfaser
                          #23

                          @alka said in restart iobroker per script?:

                          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

                          Sorry , habe den Thread übersehen das du geantwortet hast !

                          Hier im Thread Script um Befehl auf Synology ausführen, habe ich per SSH Befehl Synology Hyperbackup gestartet.

                          Mit dem hier geänderten Script von mir , kannst du den Container neustarten .

                          //Glasfaser  17.01.2021
                          //
                          //Synology Docker Container von ioBroker aus neustarten 
                          //Im JS Adapter zusätzliche NPM-Module, den Eintrag: simple-ssh
                          //im SSH Befehl name=iobroker : auf dein Containernamen ändern 
                          //user root so lassen 
                          
                          
                          
                          on({id: "0_userdata.0.Test123", change: 'ne', val: true }, function (obj) {
                          
                          log ("--> Neustart Docker gestartet!");
                          console.log('+++ Neustart Docker +++');
                            setState('0_userdata.0.Test123', false);
                            
                          var SSH = require('simple-ssh');
                          
                          var ssh = new SSH({
                             host: 'meineIP',
                             user: 'root',
                             pass: 'passwort'
                          });
                          
                          ssh.exec('/usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container version=1 method=restart name=iobroker', {
                             out: function(stdout) {
                                 console.log(stdout);
                                 
                          
                             }
                          }).start();
                          
                          }
                          );
                          

                          EDIT:

                          Könntest du den Thread Titel vielleicht ändern auf : Docker Container restart iobroker per script?

                          Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                          F 1 Antwort Letzte Antwort
                          0
                          • GlasfaserG Glasfaser

                            @alka said in restart iobroker per script?:

                            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

                            Sorry , habe den Thread übersehen das du geantwortet hast !

                            Hier im Thread Script um Befehl auf Synology ausführen, habe ich per SSH Befehl Synology Hyperbackup gestartet.

                            Mit dem hier geänderten Script von mir , kannst du den Container neustarten .

                            //Glasfaser  17.01.2021
                            //
                            //Synology Docker Container von ioBroker aus neustarten 
                            //Im JS Adapter zusätzliche NPM-Module, den Eintrag: simple-ssh
                            //im SSH Befehl name=iobroker : auf dein Containernamen ändern 
                            //user root so lassen 
                            
                            
                            
                            on({id: "0_userdata.0.Test123", change: 'ne', val: true }, function (obj) {
                            
                            log ("--> Neustart Docker gestartet!");
                            console.log('+++ Neustart Docker +++');
                              setState('0_userdata.0.Test123', false);
                              
                            var SSH = require('simple-ssh');
                            
                            var ssh = new SSH({
                               host: 'meineIP',
                               user: 'root',
                               pass: 'passwort'
                            });
                            
                            ssh.exec('/usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container version=1 method=restart name=iobroker', {
                               out: function(stdout) {
                                   console.log(stdout);
                                   
                            
                               }
                            }).start();
                            
                            }
                            );
                            

                            EDIT:

                            Könntest du den Thread Titel vielleicht ändern auf : Docker Container restart iobroker per script?

                            F Offline
                            F Offline
                            fastfoot
                            schrieb am zuletzt editiert von
                            #24

                            @glasfaser said in restart iobroker per script?:

                            Mit dem hier geänderten Script von mir , kannst du den Container neustarten .

                            das ist wesentlich eleganter als meine Lösung, beschränkt die Anwendung aber leider auf einen Restart unter Synology NAS. Mal sehen ob sich für QNAP auch so etwas finden lässt :-)

                            iobroker läuft unter Docker auf QNAP TS-451+
                            SkriptRecovery: https://forum.iobroker.net/post/930558

                            O GlasfaserG 2 Antworten Letzte Antwort
                            0
                            • F fastfoot

                              @glasfaser said in restart iobroker per script?:

                              Mit dem hier geänderten Script von mir , kannst du den Container neustarten .

                              das ist wesentlich eleganter als meine Lösung, beschränkt die Anwendung aber leider auf einen Restart unter Synology NAS. Mal sehen ob sich für QNAP auch so etwas finden lässt :-)

                              O Abwesend
                              O Abwesend
                              oFbEQnpoLKKl6mbY5e13
                              schrieb am zuletzt editiert von
                              #25

                              @fastfoot
                              Ja, bitte! :+1: :grimacing:

                              1 Antwort Letzte Antwort
                              0
                              • F fastfoot

                                @glasfaser said in restart iobroker per script?:

                                Mit dem hier geänderten Script von mir , kannst du den Container neustarten .

                                das ist wesentlich eleganter als meine Lösung, beschränkt die Anwendung aber leider auf einen Restart unter Synology NAS. Mal sehen ob sich für QNAP auch so etwas finden lässt :-)

                                GlasfaserG Offline
                                GlasfaserG Offline
                                Glasfaser
                                schrieb am zuletzt editiert von
                                #26

                                @fastfoot

                                eventuell dort etwas dabei ?

                                https://qnap-dev.github.io/container-station-api/container.html

                                Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                                1 Antwort Letzte Antwort
                                0
                                • GlasfaserG Offline
                                  GlasfaserG Offline
                                  Glasfaser
                                  schrieb am zuletzt editiert von
                                  #27

                                  @fastfoot

                                  Laut DOKU

                                  Example request of Docker
                                  
                                  $ curl -sq -XPUT -b cookies.txt \
                                      http://${QIP}:${QPORT}/containerstation/api/v1/container/docker/<container_id>/restart
                                  

                                  Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                                  F 1 Antwort Letzte Antwort
                                  1
                                  • GlasfaserG Glasfaser

                                    @fastfoot

                                    Laut DOKU

                                    Example request of Docker
                                    
                                    $ curl -sq -XPUT -b cookies.txt \
                                        http://${QIP}:${QPORT}/containerstation/api/v1/container/docker/<container_id>/restart
                                    
                                    F Offline
                                    F Offline
                                    fastfoot
                                    schrieb am zuletzt editiert von
                                    #28

                                    @glasfaser said in restart iobroker per script?:

                                    @fastfoot

                                    Laut DOKU

                                    Example request of Docker
                                    
                                    $ curl -sq -XPUT -b cookies.txt \
                                        http://${QIP}:${QPORT}/containerstation/api/v1/container/docker/<container_id>/restart
                                    

                                    Danke! Ein sehr guter starting point, bekomme aber immer einen Authorization error :-) weiss auch noch nicht was es mit der cookies.txt auf sich hat, aber das bekomme ich hin

                                    iobroker läuft unter Docker auf QNAP TS-451+
                                    SkriptRecovery: https://forum.iobroker.net/post/930558

                                    F 1 Antwort Letzte Antwort
                                    0
                                    • F fastfoot

                                      @glasfaser said in restart iobroker per script?:

                                      @fastfoot

                                      Laut DOKU

                                      Example request of Docker
                                      
                                      $ curl -sq -XPUT -b cookies.txt \
                                          http://${QIP}:${QPORT}/containerstation/api/v1/container/docker/<container_id>/restart
                                      

                                      Danke! Ein sehr guter starting point, bekomme aber immer einen Authorization error :-) weiss auch noch nicht was es mit der cookies.txt auf sich hat, aber das bekomme ich hin

                                      F Offline
                                      F Offline
                                      fastfoot
                                      schrieb am zuletzt editiert von
                                      #29

                                      @fastfoot said in restart iobroker per script?:

                                      ..., bekomme aber immer einen Authorization error :-) weiss auch noch nicht was es mit der cookies.txt auf sich hat, aber das bekomme ich hin

                                      man sollte auch einloggen :-) Funktioniert astrein, morgen oder so gibts ein kleines Skript, dann klappt der Restart auch auf der QNAP. Nicht dass ich das bräuchte, aber denkbar wäre jetzt auch eine VIS mit einer Übersicht aller Container etc... wird alles als JSON geliefert, freu...

                                      iobroker läuft unter Docker auf QNAP TS-451+
                                      SkriptRecovery: https://forum.iobroker.net/post/930558

                                      O 1 Antwort Letzte Antwort
                                      0
                                      • F fastfoot

                                        @fastfoot said in restart iobroker per script?:

                                        ..., bekomme aber immer einen Authorization error :-) weiss auch noch nicht was es mit der cookies.txt auf sich hat, aber das bekomme ich hin

                                        man sollte auch einloggen :-) Funktioniert astrein, morgen oder so gibts ein kleines Skript, dann klappt der Restart auch auf der QNAP. Nicht dass ich das bräuchte, aber denkbar wäre jetzt auch eine VIS mit einer Übersicht aller Container etc... wird alles als JSON geliefert, freu...

                                        O Abwesend
                                        O Abwesend
                                        oFbEQnpoLKKl6mbY5e13
                                        schrieb am zuletzt editiert von
                                        #30

                                        @fastfoot
                                        Fantastisch! :+1:

                                        F 1 Antwort Letzte Antwort
                                        0
                                        • O oFbEQnpoLKKl6mbY5e13

                                          @fastfoot
                                          Fantastisch! :+1:

                                          F Offline
                                          F Offline
                                          fastfoot
                                          schrieb am zuletzt editiert von fastfoot
                                          #31

                                          @ofbeqnpolkkl6mby5e13 sagte in restart iobroker per script?:

                                          @fastfoot
                                          Fantastisch! :+1:

                                          nun ja, von den Infos bin ich nicht soo sehr begeistert, aber immerhin. Ich frage ja aber auch nur die Containerinfos ab. Der Restart funktioniert einwandfrei, bin gespannt ob das auf anderen QNAP-Systemen auch so klappt. Ich habe die in den Dokus genannte curl Methode mit axios umgesetzt, weshalb das in der JS-Instanz eingetragen werden muss. Die Datenpunkte für die Tabelle und den Restart werden automatisch unter 0_userdata.0.QNAP angelegt. Vor dem Start sind User und Passwort sowie die IP Adresse und der Port der QNAP einzutragen. Happy Restart!
                                          qnap1.PNG

                                          /**
                                          * Zweck:           Infos über und Restart von Docker Containern auf QNAP NAS
                                          * Date:            13.09.2021
                                          * Author:          fastfoot
                                          * Forum:           https://forum.iobroker.net/topic/40916/restart-iobroker-per-script/31?_=1610918563284
                                          * Infos:           https://qnap-dev.github.io/container-station-api/container.html#list-containers
                                          * myHome
                                          */
                                          const axios = require('axios').default; // Muss in JS-Instanz unter NPM-Module eingetragen werden
                                          const dbg = !true;
                                          const username = 'admin';               // user mit Adminrechten auf der QNAP
                                          const password = 'ein_Passwort';        // Passwort für admin oder user der Admingruppe
                                          const server = 'qnapnas';               // Hostname oder IP der QNAP NAS
                                          //const server = '192.168.178.3';
                                          const port = '8080';                    // Port der QNAP NAS
                                          let fakeId = 'xxx';                     // FakeID, wird später ersetzt
                                          const containerName = 'iobroker';       //Containername, welcher neugestartet werden soll
                                          const urlLogin = `http://${server}:${port}/container-station/api/v1/login`;  // Anmelde-URL
                                          const urlInfo = `http://${server}:${port}/container-station/api/v1/container`; // Container Infos
                                          const urlRestart = `http://${server}:${port}/container-station/api/v1/container/docker/${fakeId}/restart`;
                                          const idBase = '0_userdata.0.QNAP';
                                          const idInfo = `${idBase}.info`;                // Originalantwort der API
                                          const idRestart = `${idBase}.Restart`;          // DP zum Auslösen des Restart
                                          const idJson = `${idBase}.json`;                // DP für Infos über Container
                                          let firstRun = true;
                                          
                                          setInterval(main,2000);
                                          
                                          on({id: idRestart, change:'any'},async () => {
                                             if(dbg) log('Restart')
                                             //restart(containerName);
                                          })
                                          
                                          async function main() {
                                             let json = [];
                                             firstRun = await createDatapoints();
                                             let session = await login(urlLogin, username, password);
                                             if(dbg) log(session)
                                             let container = await getInfos(urlInfo, session);
                                             setState(idInfo,JSON.stringify(container,null,4));
                                             container.forEach((rec)=>{
                                                 let memory = 0, 
                                                     cpu = 0;
                                                 if('memory' in rec) memory = Math.round(rec.memory/1024/1024*1000)/1000;
                                                 if('cpu' in rec) cpu = rec.cpu * 100;
                                                 json.push({
                                                     Name: rec.name,
                                                     Image: rec.image,
                                                     Memory:  memory,
                                                     CPU: cpu,
                                                     State: rec.state
                                                     //Id: rec.id,
                                                 })
                                             })
                                             setState(idJson, JSON.stringify(json,null,4));
                                          }
                                          
                                          async function login(url,username,password) {
                                             let session;
                                             let data = await axios.post(url,{username,password});
                                             if(data.status == 200){
                                                 session = data.headers['set-cookie'][0].split(';')[0];
                                             }
                                             return session;
                                          }
                                          
                                          async function getInfos(url, session) {
                                             let data = (await axios.get(url, {headers: {Cookie: session}}));
                                             if(data.status == 200){
                                                 return data.data;
                                             }
                                          }
                                          
                                          async function restart(containerName) {
                                             let session = await login(urlLogin, username, password);
                                             let container = await getInfos(urlInfo, session);
                                          
                                             container.forEach(async (rec)=> {
                                                 if(rec.name == containerName) {
                                                     let url = urlRestart.replace(fakeId,rec.id);
                                                     if(!firstRun) {
                                                         let data = await axios.put(url,'',{headers: {Cookie: session}});
                                                         if(dbg) log(data.data);
                                                     }
                                                 }
                                             })
                                          }
                                          // create data points if not existing
                                          async function createDatapoints() {
                                             let dp,
                                                 idKey,
                                                 firstRun = false;
                                             
                                             const stateAttributes = {
                                                 "Restart":{"name":"Container Restart","type":"boolean","role":"button","read":true,"write":true,"desc":"von Skript erstellt","def":false},
                                                 "info":{"name":"Info original","type":"string","role":"state","read":true,"write":true,"desc":"von Skript erstellt","def": ""},
                                                 "json":{"name":"Info Tabelle","type":"string","role":"state","read":true,"write":true,"desc":"von Skript erstellt","def":""}
                                             }
                                          
                                             for(let key in stateAttributes) {
                                          
                                                 idKey = idBase + '.' + key;
                                          
                                                 if (!(await existsStateAsync(idKey))) {
                                                     dp = stateAttributes[key];
                                                     firstRun = true;
                                                     await createStateAsync(idKey, dp);
                                                 }
                                             }
                                          
                                             return firstRun;
                                          
                                          }
                                          
                                          

                                          iobroker läuft unter Docker auf QNAP TS-451+
                                          SkriptRecovery: https://forum.iobroker.net/post/930558

                                          O F 2 Antworten Letzte Antwort
                                          1
                                          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

                                          927

                                          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