Iobroker Installation über Docker auf QNAP NAS

  • Hallo,


    ich versuche mich schon eine Weile meine IoBroker Installation auf mein NAS (TS431P3-8GB) zu konvertieren. Mein Ziel wäre IoBroker, Redis, InfluxDB und Grafana in einem Setup über einen Docker Compose file zu definieren und aufzusetzen. Leider schaffe ich es nicht - auch mit diversen Anleitungen wie z.B von https://smarthome.buanet.de einen gesamten Stack zum Laufen zu bringen. Ich bringe zwar IoBroker zum laufen, wenn ich jeweils einzelne Container über die Container Station starte, aber über Docker Compose schaffe ich es einfach nicht. Nicht über die Container Station und auch nicht über Portainer.


    Ich glaube das Grundproblem liegt darin, dass die Container daten die ich persistent aufs NAS legen will irgendiwe keine Schreibberechtigungen haben, bzw. der container nicht auf diesen Speicherplatz zugreifen kann. Gibt es hier Berechtigungsthemen auf die man berücksichtigen muss?


    Hier noch das yml file, dass ich gerne verwenden würde:



    Das Volume auf das ich zugreifen will, bzw. auf dass ich die persistenten Container hat die Bezeichnung SSD1. Darauf habe ich einen Ordner "Container" erstellt, und dann die jeweiligen Unterordner. "IoBrokerData" bzw. "RedisData". Passt di Volumesverlinkung wie ich diese angebe?


    Würde mich freuen, wenn ihr ein paar gute Tipps für mich habt.


    beste Grüße,

    Etze

  • Ich bin verwirrt. Hast du wirklich ein Volume, oder einen Ordner angelegt? Wenn du Volumes erstellst, würde ich für jeden Container ein Volume erstellen. Soweit ich weiß, ist es nicht möglich ein Volume mit Unterordnern zu erstellen, bzw. auf Unterordner im Volume zu verweisen.

    Wenn du Ordner anlegst - das würde ich bevorzugen - dann ist deine Ordnerangabe in der Compose Datei falsch. Den korrekten Pfad findest du indem du dich per SSH auf dem NAS einloggst. Ich habe zb einen Ordner "Container" und darin Unterordner für jeden Ordner angelegt. Der komplette Pfad zu diesem Ordner sieht dann so aus: /share/CACHEDEV1/container/unterordner. Je nachdem wie viele Volumes / Partitionen du auf deinem NAS angelegt hast, ändert sich die Nummer hinter "CACHEDEV". Deswegen auf dem NAS einloggen und den Pfad heraussuchen ;)

  • Hallo Azrael783,


    vielen Dank für deine Antwort... D.h. er link in meinen compose datein entspricht nicht dem mount pfad? das würde vieles erklären...;-)

    Ich kann mich zwar per putty und SSH auf die Konsole verbinden, aber ich bin leider kein linux spezialist und per googe finde ich keinen befehl der mir die mounts anzeigt....

    lg

  • Hallo Azrael und dr_mike,


    vielen Dank für eure Inputs. Das waren die entscheidenden Hinweise, dass ich nun die Daten in die gewünschten Ordner bringe und die Container laufen.

    Besten Dank für eure Unterstützung!!


    Aktuell kämpfe ich allerdings noch damit den ioBroker über das WebInterface zu erreichen. Ich werde in Docker aus diesen ganzen Netzwerk-Angaben mit Bridge bzw. MACVlan nicht richtig schlau.


    Habt Ihr da eine Idee wie ich die Netzwerksettings am Besten einstelle, wenn ich zusätzlich noch Grafana und influxDB mit in diesen "Stack" mit aufnehmen möchte?


    Mir wäre am liebsten, wenn jeder dieser Container eine eigene IP-Addresse in meinem LAN-Netzwerk bekommt und so ansprechbar ist. Ich glaube das ist speziell für den IoBroker Container wichtig, da dieser für die vorhandenen Slaves erreichbar sein muss. Andererseits denke ich mir, dass wenn all diese Container grundsätzlich am NAS laufen die interne Kommunikation zwischen den Containern im NAS bleiben sollte...


    Habt hier wer eine Idee wie das am Besten zum umsetzen und konfigurieren geht?


    vg Etze

  • Ich nutze für alle Container die IP des NAS. Hin und wieder kann es aber von Vorteil sein, die IP des Containers festzulegen. Ob das für ioBroker notwendig ist, kann ich dir nicht sagen. Ich nutze ioBroker nicht. Such mal hier im Forum nach "Docker fixe IP" oder. Irgendwo habe ich mal eine alte Compose Datei mit festen IPs pro Anwendungen gepostet. Solltest du nichts finden, kann ich die Datei auch nochmal hier posten ;)

    Btw: mit Docker-Compose wird ein eigenes Overlay Netzwerk erstellt und somit können sich alle Anwendungen einer Compose Datei auch gegenseitig im Netzwerk erreichen ;)

  • Hallo Azrael,


    danke nochmals für deine Info. Ich habe mir deine compose Datei angesehen und ich denke den Großteil verstehe ich auch, und entspricht grundsätzlich auch dem was ich in meiner Compose Datei mache.


    Was ich aber bei dem Netzwerkthemen nicht verstehe ist. Wie muss ich die IP Adressen im der Compose Datei wählen, damit das zu meinem "LAN" passt. Ich verwende bei meinem Router z.B. 192.168.5.1 als Gateway. Der Router ist auch DHCP Server im Bereich von 192.168.5.100 bis 199. Die Addressen darunter und darüber habe ich statisch zugewiesen. Und ich würde auch gerne z.B, Iobroker mit einer statischen eigenen IP im Bereich zw 192.168.5.60 - 80 versehen. Ob das auch bei Redis, Grafana, oder InfluxDB Sinn macht, bin ich mir nicht sicher. Wichtig ist dass ich Redis auch vom LAN aus erreichen kann, da die IoBroker Slaves auch darauf zugreifen sollen.


    D.. meine Frage ist. welche Netzwerk-Settings muss ich wählen, damit Iobroker eine eingen IP hat, z.B 192.168.5.70. Und wie schaffe ich es dass auch die anderen Container Dienste wie Influx, Grafana oder Redis für IoBroker erreichbar sind??


    Bin für jeden Tip Dankbar!!


    vG

  • Hi,


    du musst dann neben dem Subnetz auch das Gateway (deinen Router angeben), dann sollte es gehen. Sieht dann so aus:


    Code
    networks:
      web:
        driver: bridge
        ipam:
         config:
           - subnet: 192.168.5.0/24
             gateway: 192.168.5.1

    und den Services verpasst du dann einfach frei IPs außerhalb des DHCP Bereichs ;)

  • Hallo Azrael,


    Ich bekomme die Container per Compose einfach nicht zu laufen. Ich bekomme in der Container Station laufend die Fehlermeldung


    Code
    "Background task error for application_custom IoBrokerRedis: Creating network "iobrokerredis_internal" with driver "bridge"
    failed to allocate gateway (192.168.1.1): Address already in use"


    So sieht die Netzwerk-Umgebung aus...pasted-from-clipboard.png


    und hier die Compose Datei die ich verwenden will....


    kommt wir wirklich strange vor...

    vg

  • Da bin ich leider auch überfragt. Hab nie IPs aus meinem Netzwerk zugewiesen. Mir hat es gereicht im Docker Netzwerkbereich feste IPs zu haben. Am einfachsten wird es sein, alles auf der IP des NAS laufen zu lassen ;)

  • Hallo, dass habe ich auch schon versucht, aber leider bekomme ich das auch nicht zum laufen. ...

    Wie würdest du den die compose Datein configurieren, damit das läuft?

    lg

  • Ich würde einfach das Festlegen der IPs weglassen. In etwa so:


    Dann sind alle Container in einem Overlay Netzwerk und unter der IP des NAS zu erreichen.

  • Hallo Azrael,


    vielen Dank nochmals für deine Unterstützung.... deine Hinweise haben much schlussendlich auf den richtigen Pfad gebracht. Ich habe das ganze nun mittels des Qnet Treibers gelöst.


    da schaut im NEtzwerk dan so aus und hat den Vorteil, dass alle Container über Ihre IP Adresse vom gesamten Netzwerk erreichbar sind. Das ist wesentlich für die Funktion von IoBroker für die Slaves und die Verbindung der Adapter mit den anderen Geräten im Netz.


    pasted-from-clipboard.png



    Vielleicht kann so was ja noch wer brauchen.


    Danke auf alle fälle nochmals für deine Hilfe!!


    beste Grüße Etze

  • Hallo,


    mir gefiel die Idee, konnte Sie aber selbst zeurst nicht umsetzen. Ich habe ein QNAP TVS-673

    Bei der Konfiguration habe ich damals mit Portbündelung die Schnittstellen 1 und 2 zusammengefasst.


    Meine einzelnen Container laufen. Auch neue sind kein Problem gewesen. Sowohl mit DHCP als auch statischen Adressen.


    Wenn ich aber zum Test das File eingespielt habe mit z.B. eth1 und klicke dann auf erstellen, lädt er alles runter, bringt aber dann den folgenden Fehler:



    erster Fehler:

    Code
    Error: open /sys/class/net//ifindex: no such file or directory


    zweiter Fehler

    Code
    ERROR,container,admin,"Background task error for application_custom haussteuerung: Error: without IPv4 setting

    Der Stack wurde angelegt, aber war ohne Funktion.


    Die Fehlermeldung brachte mich nicht wirklich zur Lösung.

    Die Lösung von hier: Latest version breaks all existing docker images - Page 7 - QNAP NAS Community Forum brachte mich noch mehr durcheinander.


    Auch die Hilfe von Qnet — Container Station documentation (qnap-dev.github.io) habe ich mir durchgelesen, hat mich aber auch nicht weiter gebracht.


    Erst nachdem ich mir per SSH (verschiedene Anleitungen hier im Forum) die Schnittstellen angesehen habe, habe ich die bond0 Schnittstelle gefunden.


    2022-09-03_10h21_13.png


    Ich habe dann den Netzwerkbereich in der Konfigurationsdatei angepasst und es hat sofort funktioniert.


    Vielleicht hat ja mal jemand ein ähnliches Problem :)


    Hier mal ein paar Bilder:

    2022-09-03_09h46_09.png


    Ifconfig der QNAP:

    Bild1

    2022-09-03_09h48_29.png


    Bild2

    2022-09-03_09h49_24.png


    Ansicht im NAS:


    2022-09-03_09h50_21.png



    Ich habe mich an Deinem Beispiel entlang gehangelt:

    Die Validierung ist erfolgreich.



    Grüße