Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Synology Docker Multihost

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Synology Docker Multihost

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

      Hallo Leute,
      ich möchte ein Multihost System mit meiner Synology (Docker) und einem Raspberry verbinden.

      Auf der Synology läuft in Docker:

      • Portainer
      • iobroker
      • redis

      Multihost ist lt. iobroker Doku aktiviert - link

      Tricky war das setzen der Redis.conf, da es das file einfach nicht gibt.
      Angeblich sollte das aber mit folgendem code im redis container funktionieren:

      root@818c4be48c4f:/data# redis-cli
      127.0.0.1:6379> set bind 0.0.0.0
      OK
      127.0.0.1:6379> set protected_mode no
      OK
      127.0.0.1:6379> save
      OK
      (1.43s)
      127.0.0.1:6379> quit
      

      Auf dem Host hab ich die mit iobroker setup custom folgendes eingestellt:

      iobroker setup custom
      Current configuration:
      - Objects database:
        - Type: file
        - Host/Unix Socket: 127.0.0.1
        - Port: 9001
      - States database:
        - Type: redis
        - Host/Unix Socket: 172.18.0.3
        - Port: 6379
      - Data Directory: ../../iobroker-data/
      

      Gestartet mit:

      iobroker multihost enable
      Multihost discovery server activated on this host. If iobroker is currently not running please start befeore trying to discover this host.
      Important: Multihost discovery works with UDP packets. Make sure they are routed correctly in your network. If you use Docker you also need to configure this correctly.
      Multihost discovery will be automatically deactivated after 15 minutes. If you want to activate it permanently use the --persist flag
      Discovery authentication activated.
      Enter secret phrase for connection: ****
      Repeat secret phrase for connection: ****
      Changing objects server to accept connections on all IP addresses.
      Please check the binding of redis service. By default it is only local: http://download.redis.io/redis-stable/redis.conf
      Change "bind 127.0.0.1" to "bind 0.0.0.0" or to others.
      Please restart ioBroker for the changes to take effect: "iobroker restart"
      
      
      Multihost discovery server: enabled
      Discovery authentication:   enabled
      Persistent activation:      disabled
      Objects:                    file on 0.0.0.0
      States:                     redis on 172.18.0.3
      

      Am Slave ist folgendes eingestellt:

      iobroker setup custom
      Current configuration:
      - Objects database:
        - Type: file
        - Host/Unix Socket: 192.168.1.14
        - Port: 9001
      - States database:
        - Type: redis
        - Host/Unix Socket: 192.168.1.14
        - Port: 6379
      - Data Directory: ../../iobroker-data/
      - Host name: IOB_raspberry
      

      Auf dem Slave kann ich mich aber verdammt noch mal nicht verbinden. Dort bekomme ich immer folgende Fehlermeldung:

      $ iobroker multihost connect
      No connection to states 192.168.1.14:6379[redis]
      

      Nach einer wirklich schlaflosen Nacht und einigen Bier versuche ich somit auf diesem Weg um eure Hilfe zu bitten. Ich seh den Wald vor lauter Bäumen nicht mehr.

      Dankeschön!

      Homoran OliverIO 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Skol last edited by

        @skol sagte in Synology Docker Multihost:

        Auf dem Slave kann ich mich aber verdammt noch mal nicht verbinden. Dort bekomme ich immer folgende Fehlermeldung:

        die Krux mit Containern! Deswegen nutze ich sie nicht.
        nur ein Hinweis: sind alle Ports durchgereicht?
        dann bin ich leider wieder raus

        S 1 Reply Last reply Reply Quote 0
        • S
          Skol @Homoran last edited by

          Tja leider brauch ich Docker...

          NetStat Synology - 192.168.1.14

          root@IOB_Synology:/opt/iobroker# netstat
          Active Internet connections (w/o servers)
          Proto Recv-Q Send-Q Local Address           Foreign Address         State      
          tcp        0      0 localhost:46208         localhost:9001          ESTABLISHED
          tcp        0      0 localhost:9001          localhost:46208         ESTABLISHED
          tcp        0      0 localhost:9001          localhost:46180         ESTABLISHED
          tcp        0      0 IOB_Synology:58226      redis.iob_private:6379  ESTABLISHED
          tcp        0      0 localhost:46182         localhost:9001          ESTABLISHED
          tcp        0      0 IOB_Synology:58236      redis.iob_private:6379  ESTABLISHED
          tcp        0      0 IOB_Synology:58224      redis.iob_private:6379  ESTABLISHED
          tcp        0      0 localhost:9001          localhost:46206         ESTABLISHED
          tcp        0      0 localhost:9001          localhost:46182         ESTABLISHED
          tcp        0      0 IOB_Synology:58234      redis.iob_private:6379  ESTABLISHED
          tcp        0      0 localhost:9001          localhost:46172         ESTABLISHED
          tcp        0      0 localhost:9001          localhost:46204         ESTABLISHED
          tcp        0      0 IOB_Synology:9001       192.168.1.11:42354      ESTABLISHED
          tcp        0      0 localhost:46178         localhost:9001          ESTABLISHED
          tcp        0      0 localhost:46170         localhost:9001          ESTABLISHED
          tcp        0      0 localhost:46172         localhost:9001          ESTABLISHED
          tcp        0      0 IOB_Synology:58262      redis.iob_private:6379  ESTABLISHED
          tcp        0      0 IOB_Synology:58260      redis.iob_private:6379  ESTABLISHED
          tcp        0      0 IOB_Synology:58264      redis.iob_private:6379  ESTABLISHED
          tcp        0      0 localhost:9001          localhost:46178         ESTABLISHED
          tcp        0      0 localhost:9001          localhost:46170         ESTABLISHED
          tcp        0      0 localhost:46206         localhost:9001          ESTABLISHED
          tcp        0      0 IOB_Synology:9001       192.168.1.11:42346      ESTABLISHED
          tcp        0      0 localhost:46180         localhost:9001          ESTABLISHED
          tcp        0      0 IOB_Synology:58238      redis.iob_private:6379  ESTABLISHED
          tcp        0      0 localhost:46204         localhost:9001          ESTABLISHED
          tcp6       0      0 iobroker.iob_publi:8081 192.168.1.28:63176      ESTABLISHED
          Active UNIX domain sockets (w/o servers)
          Proto RefCnt Flags       Type       State         I-Node   Path
          unix  3      [ ]         STREAM     CONNECTED     2504088  
          unix  3      [ ]         STREAM     CONNECTED     2504091  
          unix  3      [ ]         STREAM     CONNECTED     2504945  
          unix  3      [ ]         STREAM     CONNECTED     2504947  
          unix  3      [ ]         STREAM     CONNECTED     2504089  
          unix  3      [ ]         STREAM     CONNECTED     2504946  
          unix  3      [ ]         STREAM     CONNECTED     2504948  
          unix  3      [ ]         STREAM     CONNECTED     2504090  
          root@IOB_Synology:/opt/iobroker# 
          

          Netstat Raspberry (Slave) - 192.168.1.11

          Active Internet connections (w/o servers)
          Proto Recv-Q Send-Q Local Address           Foreign Address         State
          tcp        0     64 192.168.1.11:ssh        192.168.1.28:50225      ESTABLISHED
          tcp        0      0 192.168.1.11:55316      192.168.1.14:9001       ESTABLISHED
          tcp        0      0 192.168.1.11:55310      192.168.1.14:9001       ESTABLISHED
          tcp        0      0 192.168.1.11:48260      192.168.1.14:9001       TIME_WAIT
          tcp        0      0 192.168.1.11:48262      192.168.1.14:9001       TIME_WAIT
          
          S 1 Reply Last reply Reply Quote 0
          • S
            Skol @Skol last edited by

            Eventuell liegt es doch an der Verbindung zu Redis.
            Wie stelle ich unter Portainer den Pfad zu dieser verdammten redis.conf ein?

            Redis hätte gerne folgendes im Startcommand - Was geb ich da beim Portainer ein?

            docker run -v /myredis/conf:/usr/local/etc/redis --name myredis redis redis-server /usr/local/etc/redis/redis.conf
            
            Marc Berg 1 Reply Last reply Reply Quote 0
            • Marc Berg
              Marc Berg Most Active @Skol last edited by Marc Berg

              @skol sagte in Synology Docker Multihost:

              Redis hätte gerne folgendes im Startcommand - Was geb ich da beim Portainer ein?

              docker run -v /myredis/conf:/usr/local/etc/redis --name myredis redis redis-server /usr/local/etc/redis/redis.conf
              

              fdef4e0f-a014-43f1-9b26-3394e302cdb3-grafik.png

              1 Reply Last reply Reply Quote 0
              • S
                Skol last edited by

                Danke...

                Wieder ein Schritt weiter.
                Es lag wirklich an den IP Settings.
                Läuft Redis unter Docker so muss man beim Verbinden vom iobroker slave andere Verbindungsdaten eingeben

                iobroker setup custom
                Current configuration:
                - Objects database:
                  - Type: file
                  - Host/Unix Socket: 192.168.1.14 -> IP Adresse Iobroker Master
                  - Port: 9001
                - States database:
                  - Type: redis
                  - Host/Unix Socket: 192.168.1.10 -> IP Adresse Docker System
                  - Port: 6379
                - Data Directory: ../../iobroker-data/
                - Host name: IOB_raspberry
                

                Damit hats dann schlussendlich geklappt. Was so ein paar Zahlen ausmachen können.

                1 Reply Last reply Reply Quote 0
                • OliverIO
                  OliverIO @Skol last edited by OliverIO

                  @skol
                  Oh man, docker nicht als vm Ersatz einsetzen
                  und alles in ein Image installieren.
                  Lieber 2 Container erstellen und die netztechnisch einkapseln
                  So kannst du jeden Container einfach upgraden falls es notwendig ist.
                  So wie du es jetzt gemacht hast musst du beim Upgrade von Iobroker
                  Auch gleich noch Redis neu installieren

                  Mit docker-compose, was in portainer stacks genannt wird, sind solle zusammengehörenden Services auch wirklich einfach erstellt.

                  Ich füge nachher mal meine Definition hier an. Ich verwende allerdings ein macvlan, was den Stress mit Port mappings noch weiter reduziert.

                  so sieht meine docker-compose/stacks aus

                  version: '3'
                  
                  services:
                    iobrokerprod4:
                      restart: always
                      image: buanet/iobroker:latest
                      container_name: iobrokerprod4
                      hostname: iobrokerprod4
                      ports:
                        - "8081:8081"
                      environment:
                          SETGID: 1001
                          SETUID: 1001
                      volumes:
                        - /home/iobroker/docker/volume/iobroker_prod4:/opt/iobroker
                        - /media/iobroker_backup/:/opt/iobroker/backup
                      networks:
                        dockerMACVLAN:
                          ipv4_address: 192.168.1.85
                        iobrokerprod4:
                    redis4:
                      image: "redis:alpine"
                      volumes:
                        - /home/iobroker/docker/volume/redis_prod4:/data
                      networks:
                        iobrokerprod4:
                      
                  networks:
                    dockerMACVLAN:
                      external: true
                    iobrokerprod4:
                    
                  
                  

                  anmerkungen:

                  • die servicenamen iobrokerprod4 und redis4 legt docker normalerweise innerhalb der container als hostnamen an, daher sind die container im gemeinsamen netzwerk darunter auch ansprechbar und man muss sich nicht mit den internen ip adressen rumärgern
                  • in dieser konfiguration ist nur der iobroker unter einer eigenen macvlan ip adresse im lan erreichbar. dadurch das iobroker und redis in einem weiteren netzwerk konfiguriert worden sind (erkennbar, das bei beiden noch ipbrokerprod4 eingetragen ist, kann iobroker redis erreichen. redis ist aber erstmal von keinem anderen container erreichbar und brauch daher auch keine eigene ip adresse.
                  • im iobroker habe ich über die custom konfiguration dann einfach den redis konfigurier. als ip adresse dann einfach den hostnamen (also hier redis4) eingeben. mittlerweile hat das iobroker image auch environment variablen, da könntest du dir selbst das sparen indem du die daten direkt hier in der docker-compose/stacks-konfiguration mit einträgs
                  • alle volatilen daten wurden als volume definiert und auf die eine festplatte gelegt, von wo sie dann weggesichert werden können, sofern man nicht iobroker backup verwendet. diese vorgehensweise nehm ich allerdings bei allen meinen containern. dann ist es einheitlich
                  • mit dieser konfiguration bist du in der lage jeden container einzeln voneinander upzugraden, ohne den anderen container zu beeinflussen.
                  S 1 Reply Last reply Reply Quote 2
                  • S
                    Skol @OliverIO last edited by

                    @oliverio Danke für die Hilfe

                    Nachdem mir gerade alles abgestürzt ist (frage lieber nicht) bin ich gerade am Neu aufsetzen.
                    Idee wäre das mit Stacks zu probieren, da es wirklich schneller geht - wenns läuft.

                    Ich hätte es nach deiner Anleitung probiert mit (da die genial einfacher ist)

                    version: '3'
                    
                    services:
                      iobroker:
                        restart: always
                        image: buanet/iobroker:latest-v9
                        container_name: iobroker
                        hostname: iob_synology
                        ports:
                          - "8081:8081"
                        environment:
                          - IOB_STATESDB_HOST=redis
                          - IOB_STATESDB_PORT=6379
                          - IOB_STATESDB_TYPE=redis
                          - IOB_MULTIHOST=master
                        volumes:
                          - /volume1/docker/iobroker_data:/opt/iobroker
                        networks:
                          dockerMACVLAN:
                            ipv4_address: 192.168.1.14
                          internal:
                        depends_on:
                          - redis
                    
                      redis:
                        container_name: redis
                        image: redis:latest
                        restart: always
                        ports:
                          - "6379:6379"
                        volumes:
                          - /volume1/docker/redis_data:/data
                        mem_swappiness: -1
                        networks:
                          internal:
                    
                      influxdb:
                        container_name: influxdb
                        image: influxdb:1.8.10
                        hostname: influxdb
                        restart: always
                        networks:
                          internal:
                        ports:
                          - "8086:8086"
                        volumes:
                          - /volume1/docker/influxdb_data:/var/lib/influxdb
                      
                    networks:
                      dockerMACVLAN:
                        external: true
                      internal:
                    

                    Aber es wird immer rumgejammert beim dockerMACVLAN

                    failed to deploy a stack: service "iobroker" refers to undefined network dockerMACVLAN: invalid compose project
                    

                    Hast du eine Idee woran es bei mir noch scheitern könnte?
                    Danke!

                    OliverIO 1 Reply Last reply Reply Quote 0
                    • OliverIO
                      OliverIO @Skol last edited by

                      @skol
                      Ja
                      Das macvlan habe ich vorab erstellt.
                      Das docker weiß er muss es nicht erstellen steht da external tru dran.
                      Also musst du noch das macvlan erstellen.
                      Ich habe den Namen dockerMACVLAN gewählt, du kannst auch einen anderen Namen wählen, musst halt dann die Anweisungen anpassen

                      Als Anleitung kannst du hier schauen
                      https://smarthome.buanet.de/2020/09/macvlan-ueber-portainer-einrichten/

                      S 1 Reply Last reply Reply Quote 1
                      • S
                        Skol @OliverIO last edited by

                        @oliverio Herr im Himmel, ich könnte dir die Füße küssen. Jetzt läuft wieder alles wie es soll. Bei Redis war auch noch ein kleiner Fehler. Mit den Stacks lässt sich wirklich alles super einfach starten.

                        version: '3'
                        
                        services:
                          iobroker:
                            restart: always
                            image: buanet/iobroker:latest-v9
                            container_name: iobroker
                            hostname: IOB_synology
                            ports:
                              - "8081:8081"
                            environment:
                              - IOB_STATESDB_HOST=redis
                              - IOB_STATESDB_PORT=6379
                              - IOB_STATESDB_TYPE=redis
                              - IOB_MULTIHOST=master
                            volumes:
                              - /volume1/docker/iobroker_data:/opt/iobroker
                            networks:
                              iob_public:
                                ipv4_address: 192.168.1.14
                              iob_private:
                            depends_on:
                              - redis
                        
                          redis:
                            container_name: redis
                            image: redis:latest
                            restart: always
                            ports:
                              - "6379:6379"
                            volumes:
                              - /volume1/docker/redis_data:/data
                              - /volume1/docker/redis_data:/usr/local/etc/redis
                            mem_swappiness: -1
                            command: redis-server /usr/local/etc/redis/redis.conf
                            networks:
                              iob_private:
                        
                          influxdb:
                            container_name: influxdb
                            image: influxdb:1.8.10
                            hostname: influxdb
                            restart: always
                            networks:
                              iob_private:
                            ports:
                              - "8086:8086"
                            volumes:
                              - /volume1/docker/influxdb_data:/var/lib/influxdb
                          
                        networks:
                          iob_public:
                            external: true
                          iob_private:
                        
                        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

                        910
                        Online

                        31.6k
                        Users

                        79.4k
                        Topics

                        1.3m
                        Posts

                        4
                        10
                        465
                        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