Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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, Multihost auf MacOS

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    976

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    658

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.2k

docker, Multihost auf MacOS

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
7 Beiträge 3 Kommentatoren 649 Aufrufe 3 Beobachtet
  • Ä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.
  • H Offline
    H Offline
    higginsd
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen!

    Ich musste eine Weile probieren, bis ich einen Slave ioBroker-Container unter Docker auf meinem MacStudio als Docker-Host in mein ioBroker Setup einbinden konnte. Daher habe ich hier ein paar Anmerkungen aufgeschrieben, falls das noch einmal jemand versucht.

    Zunächst einmal ist wichtig, daß man den Slave im Container NICHT mittels "iobroker multihost connect" in den existierenden Master/Slave-Verbund einhängen kann, denn 'iobroker multihost connect' findet den Master nicht!

    Die Konfiguration als Slave muss unbedingt über Environment-Variablen zum Startzeitpunkt des Containers erfolgen. Gleiches gilt, wenn der Container seine States und Objects aus einer bestehenden Redis-(Sentinel) DB oder über einen anderen der möglichen Datenbanktypen erhalten soll. Auch hier funktioniert "iobroker setup custom" zunächst nicht.

    Ich habe mir eine Datei mit den Environment Settings auf meinem Mac in einem lokalen Verzeichnis angelegt. Meine Konfiguration ist für ein Redis Sentinel mit 3 Nodes ausgelegt. Wer nur Redis oder etwas anderes nutzt, muss das entsprechend auf (s)eine IP und den Port 6379 usw. anpassen.

    ioBroker-env/vars.env:
    IOB_MULTIHOST=slave
    IOB_OBJECTSDB_TYPE=redis
    IOB_OBJECTSDB_HOST=192.168.178.xx1,192.168.178.xx2,192.168.178.xx3
    IOB_OBJECTSDB_PORT=26379
    IOB_STATESDB_TYPE=redis
    IOB_STATESDB_HOST=192.168.178.xx1,192.168.178.xx2,192.168.178.xx3
    IOB_STATESDB_PORT=26379

    Um besser an den ioBroker Log-Output des Containers zu kommen, habe ich das Verzeichnis /opt/iobroker mittels '-v' noch auf ein lokales Verzeichnis auf dem Mac-Host gemounted. Achtung: das Verzeichnis muss vor dem ersten Start des Containers unbedingt leer sein, sonst glaubt ioBroker, es handelt sich um eine bereits fertige Installation und kommt aus dem Tritt mit der initialen Installation!

    Zusätzlich habe ich einige wichtige Ports expilzit aus dem Container nach aussen geführt. 'docker --net=host' ist unter MacOS nämlich mit Vorsicht zu genießen, denn es exponiert nur alle Ports auf der IP der Docker-Mac internen Virtualisierungsschicht.

    Mein Docker-Aufruf lautet dann so (kann man natürlich auch noch in ein Dockerfile oder einen Compose-Aufruf packen), wobei ich halt den Container als Slave mit Hostnamen iobroker8 verwende. Der Hostname wird ja über den Parameter '-h' im Docker-Aufruf festgelegt, müsst ihr also nach Bedarf anpassen:

    docker container create --restart always --name iobroker8 --env-file ioBroker-env/vars.env -v /PATH_TO_LOCAL_DIR/ioBroker:/opt/iobroker -p 1880:1880 -p 2001:2001 -p 8081:8081 -p 8082:8082 -p 8088:8088 -p 8284:8284 -p 9000:9000 -p 9001:9001 -h iobroker8 buanet/iobroker

    So weit, so gut. Startet, updated sich, konfiguriert sich - Host wird im ioBroker-Verbund aber nicht als aktiv gezeigt. Und kommt dann in eine Restart-Loop wegen 'error: host.iobroker8 No connection to databases possible, restart'. 'iobroker status' meldet ebenfalls 'no connection to databases possible'.

    Abhilfe ist hier dann doch der Aufruf von 'iobroker setup custom' in einer Shell des Containers. Anscheinend kennt ioBroker die IPs eines Redis oder eines Sentinels zwar aus der Environment-Konfiguration, muss aber trotzdem noch einmal auf dem neuen Slave 'iobroker setup custom' durchlaufen, ehe er den Sentinel Cluster findet und dann dem ioBroker-Verbund als neuer Slave beitritt. Vielleicht ein Bug?

    Vielleicht hilft es ja dem ein oder anderen hier weiter!

    Viele Grüße
    Dirk

    R 1 Antwort Letzte Antwort
    1
    • H higginsd

      Hallo Zusammen!

      Ich musste eine Weile probieren, bis ich einen Slave ioBroker-Container unter Docker auf meinem MacStudio als Docker-Host in mein ioBroker Setup einbinden konnte. Daher habe ich hier ein paar Anmerkungen aufgeschrieben, falls das noch einmal jemand versucht.

      Zunächst einmal ist wichtig, daß man den Slave im Container NICHT mittels "iobroker multihost connect" in den existierenden Master/Slave-Verbund einhängen kann, denn 'iobroker multihost connect' findet den Master nicht!

      Die Konfiguration als Slave muss unbedingt über Environment-Variablen zum Startzeitpunkt des Containers erfolgen. Gleiches gilt, wenn der Container seine States und Objects aus einer bestehenden Redis-(Sentinel) DB oder über einen anderen der möglichen Datenbanktypen erhalten soll. Auch hier funktioniert "iobroker setup custom" zunächst nicht.

      Ich habe mir eine Datei mit den Environment Settings auf meinem Mac in einem lokalen Verzeichnis angelegt. Meine Konfiguration ist für ein Redis Sentinel mit 3 Nodes ausgelegt. Wer nur Redis oder etwas anderes nutzt, muss das entsprechend auf (s)eine IP und den Port 6379 usw. anpassen.

      ioBroker-env/vars.env:
      IOB_MULTIHOST=slave
      IOB_OBJECTSDB_TYPE=redis
      IOB_OBJECTSDB_HOST=192.168.178.xx1,192.168.178.xx2,192.168.178.xx3
      IOB_OBJECTSDB_PORT=26379
      IOB_STATESDB_TYPE=redis
      IOB_STATESDB_HOST=192.168.178.xx1,192.168.178.xx2,192.168.178.xx3
      IOB_STATESDB_PORT=26379

      Um besser an den ioBroker Log-Output des Containers zu kommen, habe ich das Verzeichnis /opt/iobroker mittels '-v' noch auf ein lokales Verzeichnis auf dem Mac-Host gemounted. Achtung: das Verzeichnis muss vor dem ersten Start des Containers unbedingt leer sein, sonst glaubt ioBroker, es handelt sich um eine bereits fertige Installation und kommt aus dem Tritt mit der initialen Installation!

      Zusätzlich habe ich einige wichtige Ports expilzit aus dem Container nach aussen geführt. 'docker --net=host' ist unter MacOS nämlich mit Vorsicht zu genießen, denn es exponiert nur alle Ports auf der IP der Docker-Mac internen Virtualisierungsschicht.

      Mein Docker-Aufruf lautet dann so (kann man natürlich auch noch in ein Dockerfile oder einen Compose-Aufruf packen), wobei ich halt den Container als Slave mit Hostnamen iobroker8 verwende. Der Hostname wird ja über den Parameter '-h' im Docker-Aufruf festgelegt, müsst ihr also nach Bedarf anpassen:

      docker container create --restart always --name iobroker8 --env-file ioBroker-env/vars.env -v /PATH_TO_LOCAL_DIR/ioBroker:/opt/iobroker -p 1880:1880 -p 2001:2001 -p 8081:8081 -p 8082:8082 -p 8088:8088 -p 8284:8284 -p 9000:9000 -p 9001:9001 -h iobroker8 buanet/iobroker

      So weit, so gut. Startet, updated sich, konfiguriert sich - Host wird im ioBroker-Verbund aber nicht als aktiv gezeigt. Und kommt dann in eine Restart-Loop wegen 'error: host.iobroker8 No connection to databases possible, restart'. 'iobroker status' meldet ebenfalls 'no connection to databases possible'.

      Abhilfe ist hier dann doch der Aufruf von 'iobroker setup custom' in einer Shell des Containers. Anscheinend kennt ioBroker die IPs eines Redis oder eines Sentinels zwar aus der Environment-Konfiguration, muss aber trotzdem noch einmal auf dem neuen Slave 'iobroker setup custom' durchlaufen, ehe er den Sentinel Cluster findet und dann dem ioBroker-Verbund als neuer Slave beitritt. Vielleicht ein Bug?

      Vielleicht hilft es ja dem ein oder anderen hier weiter!

      Viele Grüße
      Dirk

      R Offline
      R Offline
      rewenode
      schrieb am zuletzt editiert von
      #2

      @higginsd Danke! Ich hatte schon fast augegeben.
      Habe übrigens festgestellt, dass ein leeres gemountetes /opt/iobroker bei mir zum Dauerneustart des Containers führt. Nur wenn ich es vorher lösche eird es angelegt und der Container erstellt.
      Bei mir sind iob-master und redis zum Test auf dem Mac angelegt.
      Der Slave soll auf einem Raspi laufen. Jetzt muss ich noch rausbekommen, wie ich redis im docker beibringen kann, Anfragen vom iob-slave akzeptiren soll.

      Wie hast du das bei dir gemacht?

      Gruß
      Reiner

      H 1 Antwort Letzte Antwort
      0
      • R rewenode

        @higginsd Danke! Ich hatte schon fast augegeben.
        Habe übrigens festgestellt, dass ein leeres gemountetes /opt/iobroker bei mir zum Dauerneustart des Containers führt. Nur wenn ich es vorher lösche eird es angelegt und der Container erstellt.
        Bei mir sind iob-master und redis zum Test auf dem Mac angelegt.
        Der Slave soll auf einem Raspi laufen. Jetzt muss ich noch rausbekommen, wie ich redis im docker beibringen kann, Anfragen vom iob-slave akzeptiren soll.

        Wie hast du das bei dir gemacht?

        Gruß
        Reiner

        H Offline
        H Offline
        higginsd
        schrieb am zuletzt editiert von
        #3

        @rewenode

        Hast Du beide Redis Ports 6379 und 26379 im Redis-Container exponiert?

        Bei mir ging das eigentlich easy, ich habe auch eine Redis Instanz und eine Sentinel Instanz in docker laufen.

        R 2 Antworten Letzte Antwort
        0
        • H higginsd

          @rewenode

          Hast Du beide Redis Ports 6379 und 26379 im Redis-Container exponiert?

          Bei mir ging das eigentlich easy, ich habe auch eine Redis Instanz und eine Sentinel Instanz in docker laufen.

          R Offline
          R Offline
          rewenode
          schrieb am zuletzt editiert von
          #4

          @higginsd Nein, nur 6379. 26379 kannte ich noch gar nicht.
          iob-Master/redis werden mit docker-compose und default network auf dem Mac gestartet.
          Der container-verbund hat dann ja eine eigen Network-ip. Innerhalb des Verbandes gibt es da ohnehin kein Problem. Die expose Ports können ja über die HOST-IP erreicht werden und innerhalb des Verbandes reicht ja der name.
          Bei redis habe ich aber irgendwo mal gelesen, dass da im Standard nur Anfragen von 127.0.0.1 also in dem Fall default-network akzeptiert werden.
          Der slave auf dem Raspi erreicht zwar den Host/port, kommt dann ja aber nicht mehr von 127.0.0.1.
          Scheint so, als ob man das auch mit Sentinel machen könnte (habs nur ganz kurz überflogen).
          Aber bei nur einem zusätzlichen Client(iob-Slave) ist das vlt. gar nicht nötig, wenn es über die config gehen sollte.

          1 Antwort Letzte Antwort
          0
          • H higginsd

            @rewenode

            Hast Du beide Redis Ports 6379 und 26379 im Redis-Container exponiert?

            Bei mir ging das eigentlich easy, ich habe auch eine Redis Instanz und eine Sentinel Instanz in docker laufen.

            R Offline
            R Offline
            rewenode
            schrieb am zuletzt editiert von
            #5

            @higginsd Ok, Kommando zurück. Läuft! Musste nur etwas warten bis der Host angezeigt wurde.

            Meine Konfiguration ist etwas naja, ungewöhnlich.
            Master im Verbund mit Redis und mqtt-broker auf Mac(Testsystem).
            Slave als native Installation auf einem raspi 1. Hier läuft buanet/docker nicht, weil das Image kein ARMv6 unterstützt.
            Native Installation out of the box geht auch nicht, weil nodejs offiziell auch kein ARMv6 mehr unterstützt. Hier habe ich aber noch irgendwo ein nodev16 paket gefunden, das ich manuell installieren konnte.
            Was redis anbelangt habe ich die config zwar in den host gemappt um sie anpassen zu können, lief aber mit den Default-Werten (bind 127.0.0.1 -::1).
            Warum auch immer. Bin da nicht der redis-Experte.
            Dachte eigentlich, dass ich bind um die Adresse vom Host des Masters erweitern muss. War aber nicht nötig.

            In jedem Fall hast du sehr geholfen. Konnte mir die Installations-Schleife des iob-Containers überhaupt nicht erklären.
            Da das Ganze im Moment noch ein Testsystem ist, werde ich das mal genauer untersuchen.
            Die Installation lief bisher nur sauber durch, wenn ich entweder gar kein iobroker-Verzeichnis hatte, das wird dann bei der Installation angelegt.
            Oder wenn ich nur die STATESDB in die redis geschickt habe:

            IOB_MULTIHOST=master
            IOB_STATESDB_TYPE=redis
            IOB_STATESDB_HOST=redis
            IOB_STATESDB_PORT=6379
            

            Sobald ich

            IOB_OBJECTSDB_TYPE=redis
            IOB_OBJECTSDB_HOST=redis
            IOB_OBJECTSDB_PORT=6379
            

            dazugenommen habe, gab es die Installationsschleife.
            Aber bei so vielen Tests(was ja zum Glück unter Docker fixgeht) kann ich nicht ausschließen, dass der Fehler irgend wo anders her kam.

            Danke nochmal
            Reiner

            Thomas BraunT 1 Antwort Letzte Antwort
            0
            • R rewenode

              @higginsd Ok, Kommando zurück. Läuft! Musste nur etwas warten bis der Host angezeigt wurde.

              Meine Konfiguration ist etwas naja, ungewöhnlich.
              Master im Verbund mit Redis und mqtt-broker auf Mac(Testsystem).
              Slave als native Installation auf einem raspi 1. Hier läuft buanet/docker nicht, weil das Image kein ARMv6 unterstützt.
              Native Installation out of the box geht auch nicht, weil nodejs offiziell auch kein ARMv6 mehr unterstützt. Hier habe ich aber noch irgendwo ein nodev16 paket gefunden, das ich manuell installieren konnte.
              Was redis anbelangt habe ich die config zwar in den host gemappt um sie anpassen zu können, lief aber mit den Default-Werten (bind 127.0.0.1 -::1).
              Warum auch immer. Bin da nicht der redis-Experte.
              Dachte eigentlich, dass ich bind um die Adresse vom Host des Masters erweitern muss. War aber nicht nötig.

              In jedem Fall hast du sehr geholfen. Konnte mir die Installations-Schleife des iob-Containers überhaupt nicht erklären.
              Da das Ganze im Moment noch ein Testsystem ist, werde ich das mal genauer untersuchen.
              Die Installation lief bisher nur sauber durch, wenn ich entweder gar kein iobroker-Verzeichnis hatte, das wird dann bei der Installation angelegt.
              Oder wenn ich nur die STATESDB in die redis geschickt habe:

              IOB_MULTIHOST=master
              IOB_STATESDB_TYPE=redis
              IOB_STATESDB_HOST=redis
              IOB_STATESDB_PORT=6379
              

              Sobald ich

              IOB_OBJECTSDB_TYPE=redis
              IOB_OBJECTSDB_HOST=redis
              IOB_OBJECTSDB_PORT=6379
              

              dazugenommen habe, gab es die Installationsschleife.
              Aber bei so vielen Tests(was ja zum Glück unter Docker fixgeht) kann ich nicht ausschließen, dass der Fehler irgend wo anders her kam.

              Danke nochmal
              Reiner

              Thomas BraunT Online
              Thomas BraunT Online
              Thomas Braun
              Most Active
              schrieb am zuletzt editiert von
              #6

              @rewenode sagte in docker, Multihost auf MacOS:

              Native Installation out of the box geht auch nicht, weil nodejs offiziell auch kein ARMv6 mehr unterstützt.

              Das ist der beschriebene *** SONDERFALL ***:

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

              Linux-Werkzeugkasten:
              https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
              NodeJS Fixer Skript:
              https://forum.iobroker.net/topic/68035/iob-node-fix-skript
              iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

              R 1 Antwort Letzte Antwort
              0
              • Thomas BraunT Thomas Braun

                @rewenode sagte in docker, Multihost auf MacOS:

                Native Installation out of the box geht auch nicht, weil nodejs offiziell auch kein ARMv6 mehr unterstützt.

                Das ist der beschriebene *** SONDERFALL ***:

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

                R Offline
                R Offline
                rewenode
                schrieb am zuletzt editiert von rewenode
                #7

                @thomas-braun sagte in docker, Multihost auf MacOS:

                Das ist der beschriebene *** SONDERFALL ***:

                Ja, und der vollständigkeit halber was ich gemacht habe:

                #wie immer:
                sudo apt-get update 
                sudo apt-get upgrade
                
                #Now install Node itself
                
                #alte löschen
                sudo apt-get --purge remove nodejs
                sudo apt-get autoremove
                sudo reboot
                
                
                # installieren
                sudo wget https://unofficial-builds.nodejs.org/download/release/v16.17.0/node-v16.17.0-linux-armv6l.tar.gz
                sudo tar -xvf node-v16.17.0-linux-armv6l.tar.gz
                cd node-v16.17.0-linux-armv6l
                sudo cp -R * /usr/local/
                sudo ln -s /usr/local/bin/node /usr/bin/nodejs
                

                Erst danach ioB Standardinstallation.
                Der Master-Admin tut sich aber sehr schwer, den Rpi1-Host auf der Übersichtsseite anzuzeigen.

                1 Antwort Letzte Antwort
                0

                Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                Registrieren Anmelden
                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

                580

                Online

                32.8k

                Benutzer

                82.9k

                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