Ankündigung

Einklappen
Keine Ankündigung bisher.

alternatives Docker Image

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    alternatives Docker Image

    Hi,

    Ich habe ein alternatives Docker Image erstellt. Evtl. kann es ja jemand brauchen.

    Vorteile:
    • deutlich kleiner
    • aktuell:
      Bullseye-slim
      Python 3.8.12
      SmarthomeNG v1.9.1
    • einfacher zu Konfigurieren - alte Konfig wird jetzt auch unterstützt.
    • Docker konformes Verhalten
      Container hängt nicht in endless loop auch wenn smarthomeNG sich verabschiedet hat.
      Docker Logging funktioniert.
    • Vorlagen und Beispiele stehen ausserhalb des Containers zur Verfügung
    • Rechte der Dateien werden passend gesetzt
    Varianten:
    • "slim"
      • Nicht alle Plugin-Abhängigkeiten werden erfüllt. Nicht jedes Plugin wird funktioniert.
      • Größe 300 MB (komprimiert 109 MB)
    • "med"
      • Alle Plugins funktionieren. Ggf. wird automatisch der Selbstupdateprozess gestartet.
      • Größe 334 MB (komprimiert 127 MB)
    • "visu"
      • Wie "med" aber zusätzlich wird smartVISU mit eingepackt.
      • Größe 354 MB (komprimiert 146 MB)
    • "full"
      • Alle Abhängigkeiten erfüllt.
      • Appletv und hue2 können nicht gleichzeitig aktiviert werden.
      • Größe 759 MB (komprimiert 251 MB)


    Hier ein Beispiel docker-compose.yaml:
    Code:
    version: "3"
    
    services:
      shng:
        image: sagl/shng:latest
        restart: "unless-stopped"
        volumes:
          - ./volumes:/mnt
        ports:
          - "2424:2424"
          - "8383:8383"
    
      smartvisu:
        image: php:8.0-apache
        #hostname: <your.hostname.tld>
        restart: unless-stopped
        volumes:
         - ./volumes/html:/var/www/html/
        ports:
          - "80:80"
    Die smartVISU dann in "./volume/html/smartvisu" ablegen und die Treiber-Einstellungen anpassen:
    • Treiber
      • System -> SmarthomeNG (bzw. SmarthomeNG new)
      • Host/IP -> Hostname oder IP des Dockerhost

    Feedback würde mich freuen.

    Gruß
    Sascha
    Angehängte Dateien
    Zuletzt geändert von SaschaG; 09.03.2022, 21:28. Grund: Korrektur "docker-compose.yaml": shng-net entfehrnt.

    #2
    Update: Ressource im Post 1 ergänzt.

    Hi,

    Da ich mich mit Git nicht auskenne, hier noch die Ressourcen für das Image (Endung .txt entfernen). Eventuell könnt ihr ja ein paar Anregungen in das offizielle Image übernehmen?
    • "dockerfile" ist als Multistage Dockerfile aufgebaut um möglichst klein zu sein.
    • "entrypoint.sh" bereitet die Umgebung vor (Verzeichnisse erstellen, Datein kopieren, Rechte korrigieren) und startet den "shng_wrapper.sh" als User Smarthome:Smarthome bzw. 1000:1000
    • "shng_wrapper.sh" dient im Wesentlichen dazu, das neustartende "smarthome.py" im Vordergrund zu halten. Damit smarthome.py sich Docker-konform verhält.
    Für Fragen/Anregungen stehe ich gerne zur Verfügung.

    Gruß
    Sascha
    Zuletzt geändert von SaschaG; 21.01.2022, 22:10.

    Kommentar


      #3
      Update: Ressourcen im Post 1 ergänzt.

      Hi,

      Ich habe noch eine Full-Variante erstellt. Folgende Punkte sind mir dabei aufgefallen:
      • Plugin "openzwave" konnte ich nicht übersetzen. Vorgang bricht mit Fehlern ab. -> gelöst
      • Plugins "appletv" und "hue2" haben Abhängigkeitskonflikte. Das führt dazu, dass man nicht beide gleichzeitig aktivieren kann. Einzeln funktionieren sie soweit ich das testen konnte.
      • Die Abhängigkeiten aller anderen Plugins sind im Image erfüllt.
      Gruß
      Sascha
      Zuletzt geändert von SaschaG; 21.01.2022, 22:12.

      Kommentar


        #4
        Das Python openzwave Package funktioniert aktuell nur bis Python 3.8. Bei einer neueren Python Version müsste das zwave Plugin aus der Installation entfernen.

        Welche Abhängigkeitskonflikte hast Du bei appletv und hue2 gefunden? Unter Requirements für appletv steht nur pyatv==0.7.0 drin, das atv Package wird vom hue2 allerdings nicht genutzt.
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5
          Hallo Martin,

          Danke für den Hinweis. Habe stundenlang versucht das zwave lauffähig zu bekommen 🤔 Würdest du empfehlen auf Python 3.8 zurückzugehen? Spricht was dagegen?

          Zu deiner Frage. Hier der Prortokollauszug:
          Code:
          The conflict is caused by:
              The user requested zeroconf<=0.26.3
              pyatv 0.7.0 depends on zeroconf>=0.28.0
          und die passenden Auszüge aus der requirements/all.txt
          Code:
          # plugin 'appletv'
          pyatv==0.7.0
          
          # plugin 'hue2'
          zeroconf<=0.26.3
          Wenn beide aktiviert sind beendet sich smarthome.py. Das Problem sollte Dockerunabhängig sein.

          Gruß
          Sascha
          Zuletzt geändert von SaschaG; 19.01.2022, 15:48.

          Kommentar


            #6
            Sascha, schau Dir mal den Thread zur ZWave Unterstützung an. Es gibt ein Maintainer Problem für das Python Paket. Wenn Du also ZWave nutzen willst bleibt IMHO aktuell nur der Weg auf 3.8 zu bleiben oder alternativ hier bei den Issues zu schauen und den Weg zu testen den kdschlosser vorgeschlagen hat.
            Probiere es halt aus. Wenn es funktioniert wäre es gut hier Rückmeldung zu bekommen ...

            Kommentar


              #7
              Ok, die zeroconf Beschränkung im hue2 Plugin habe ich so eingebaut, weil ich kurz vor dem Release nicht mehr ausgiebig die neuern Versionen testen konnte und ab 0.27 sich bei zeroconf erhebliches getan hat.
              Viele Grüße
              Martin

              There is no cloud. It's only someone else's computer.

              Kommentar


                #8
                Hi,

                Zitat von bmx Beitrag anzeigen
                Probiere es halt aus. Wenn es funktioniert wäre es gut hier Rückmeldung zu bekommen ...
                Done. Mit Python 3.8 und zusätzlich "apt-get install openzwave" läuft der Updateprozess sauber durch. Ich experimentiere heute noch mit den verschiedenen flavors und update dann meinen dockerhub. Danke dir.

                @Martin: Verstanden - danke. Ich kann mangels Equipment leider auch nicht mit tests unterstützen.

                Btw. das Plugin GPIO löuft nur auf dem RasPi, richtig?

                Danke und Gruß
                Sascha

                Kommentar


                  #9
                  Ja
                  Viele Grüße
                  Martin

                  There is no cloud. It's only someone else's computer.

                  Kommentar


                    #10
                    Hi,

                    Habe auf Python 3.8.12 umgestellt, damit openzwave funktioniert. Es sind auch noch ein paar Kleinigkeiten in den Docker Ressourcen eingeflossen. Aktuelle Ressourcen finden sich im Post 1 und auf dem DockerHUB.

                    Gruß
                    Sascha

                    Kommentar


                      #11
                      Hallo Sascha,

                      finde ich gut, dass es eine Alternative gibt.
                      Noch besser fänd ich allerdings wenn es nur eins gibt und wir die Vorteile von Deinem im offiziellen Image (smarthomeng-github) einbauen. Henning und ich freuen uns über Hilfe.

                      Zu den Vorteilen:
                      • deutlich kleiner
                      Finde ich nicht so wichtig.
                      • aktuell:
                        Bullseye-slim
                        Python 3.8.12
                        SmarthomeNG v1.9.0
                      Auf 1.9 habe ich gerade aktualisiert.
                      Auf Bullseye-slim sollte sich das Image auch leicht umstellen lassen.
                      • einfacher zu Konfigurieren
                      Kannst du das konkretisieren?
                      • Docker konformes Verhalten
                        Container hängt nicht in endless loop auch wenn smarthomeNG sich verabschiedet hat.
                        Docker Logging funktioniert.
                      Das finde ich gut.
                      • Vorlagen und Beispiele stehen ausserhalb des Containers zur Verfügung
                      • Rechte der Dateien werden passend gesetzt
                      Kannst du das beides konkretisieren?

                      Gruß,
                      Hendrik

                      Kommentar


                        #12
                        Hallo Hendrik,

                        Zitat von henfri Beitrag anzeigen
                        finde ich gut, dass es eine Alternative gibt.
                        Noch besser fänd ich allerdings wenn es nur eins gibt und wir die Vorteile von Deinem im offiziellen Image (smarthomeng-github) einbauen. Henning und ich freuen uns über Hilfe.
                        Hendrik
                        Es steht dir frei meine Entwürfe zu nutzen. Siehe Post 1. Würde mich freuen, wenn ich was zum Projekt beitragen kann/konnte.

                        Zitat von henfri Beitrag anzeigen
                        Zu den Vorteilen:
                        • deutlich kleiner
                        Finde ich nicht so wichtig.
                        Das halte ich für einen Fehler, sorry. Ein gutes Docker Image ist nicht größer als notwendig. Um ehrlich zu sein war das meine Hauptmotivation. Ich fand 1,3Gb einfach zu viel und meine Ergebnisse geben mir da Recht.

                        Zitat von henfri Beitrag anzeigen
                        • aktuell:
                          Bullseye-slim
                          Python 3.8.12
                          SmarthomeNG v1.9.0
                        Auf 1.9 habe ich gerade aktualisiert.
                        Auf Bullseye-slim sollte sich das Image auch leicht umstellen lassen.
                        Ich springe hierfür vom offiziellen Python-Dockerimage ab. Macht es evtl. leichter "state of the art" zu bleiben?!

                        Zitat von henfri Beitrag anzeigen
                        • einfacher zu Konfigurieren
                        Kannst du das konkretisieren?
                        Der Nutzer muss lediglich /mnt Mounten und alle´relevanten Daten sind dann persistent. Durch das passende setzen der Rechte vor dem Container Start sind auch nachträglich hinzugefügte Files (z.B. Config Files) gleich nutzbar. Das reduziert meines Erachtens deutlich die Einstiegshürde. Als Dockeranfänger hatte ich mit der passenden Rechtevergabe innerhalb und ausserhalb eines Containers am meisten zu kämpfen. Zumal hier auch noch 2 Container auf das gleiche volume "html" zugreifen müssen.

                        Zitat von henfri Beitrag anzeigen
                        • Docker konformes Verhalten
                          Container hängt nicht in endless loop auch wenn smarthomeNG sich verabschiedet hat.
                          Docker Logging funktioniert.
                        Das finde ich gut.
                        • Vorlagen und Beispiele stehen ausserhalb des Containers zur Verfügung
                        • Rechte der Dateien werden passend gesetzt
                        Kannst du das beides konkretisieren?
                        Ist relativ simpel. Startet man das offizielle Image sind die gemounteten Verzeichnisse leer und smarthome.py bricht mit Fehlern ab. Startet man Meines, werden alle Beispiele und Default Dateien in den gemounteten Verzeichnissen zur Verfügung gestellt. Somit läuft das Image mit der Default-Config "out of the box" und könnte dann auch ausschließlich über das Admin Interface konfiguriert werden. Auch das verringert imho die Einstiegshürde.

                        Ich möchte mich noch mal ausdrücklich bedanken. Ich nutze Smarthome/SmarthomeNG seit ca. 8 Jahren um relevante Daten meiner Heizung via "eta_pu" zu visualisieren. Dein Image hatte ich ca. 3 Monate am laufen und alles läuft tadellos.

                        Gruß
                        Sascha
                        Zuletzt geändert von SaschaG; 25.01.2022, 08:09.

                        Kommentar


                          #13
                          Hallo Hendrik,

                          Danke für den Austausch per PN. Ich denke ich kann und werde hier einen Beitrag zum offiziellen Docker Image leisten. Ein paar Fragen zu deinem Image konnte ich für mich noch nicht klären. Evtl. kannst du oder jemand anderes hier weiterhelfen?
                          1. Du fügst den User "smarthome" zusätzlichen Gruppen hinzu. Das macht doch aber nur Sinn, wenn der Host zufällig die gleichen GID nutzt oder? Zugegeben, da das Image auf Debian basiert sollte es für alle Debian basierten Hosts passen. Eine bessere Lösung wäre es meines Erachtens UID, GID und extra-GID konfigurierbar zu machen, oder?
                            1. "dialout" -> für Zugriff auf USB devices?
                            2. "www-data" -> Für Zugriff auf smartvisu? Ich glaube hier ist es einfacher der smartvisu den User "smarthome" und Gruppe "www-data" zuzweisen.
                          2. Anpassung der Zeitzone. Notwendig? Hab hier keinen Effekt auf den Container feststellen können. Die Zeit im Container stimmt mit der des Docker-Hosts überein.
                          3. Anpassung der Sprache auf de-DE UTF8. Notwendig? Hab hier keinen Effekt auf den Container feststellen können.
                          Gruß
                          Sascha
                          Zuletzt geändert von SaschaG; 29.01.2022, 22:06.

                          Kommentar


                            #14
                            Hallo Sascha,
                            bei mir läuft es leider garnicht.
                            Ganz seltsame Effekte:
                            Einstellungen über das Admin-Interface werden nicht übernommen.
                            Die Liste der Plugins ist unvollständig bzw. ändert sich beim 2. Aufruf.
                            Smartvisu erreiche ich nicht ... an der Stelle habe ich aufgegeben.

                            Ganz so viel falsch machen kann ich auf meinem Server nicht, da Hendrik's Image henfri/smarthome-ng:v1.9.0 ganz gut läuft.
                            Die Rechte passen alle, Volume's kopiert - gleiche Einstellungen, die ich vom henfri/smarthome-ng:v1.8.2 übernommen habe.

                            Gruß Mirko
                            Zuletzt geändert von 64er; 10.03.2022, 21:41.

                            Kommentar


                              #15
                              Hallo 64er,

                              Die Container sind aktuell inkompatibel. Im Wesentlichen weil die Volumes ein anderes Format haben. Entsprechend müssten die Inhalte der Volumes und die Einstellungen in der "docker-compose.yaml" auf das von mir genutzte Format angepasst werden (siehe Post #1). Ich arbeite gerade daran, das auch dass Verhalten von Hendriks Container unterstützt wird um solchen Problemen vorzubeugen.

                              Gruß
                              Sascha
                              Zuletzt geändert von SaschaG; 30.01.2022, 21:16.

                              Kommentar

                              Lädt...
                              X