Ankündigung

Einklappen
Keine Ankündigung bisher.

Edomi im Docker-Container - revised

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

    Hallo Yves,

    Aktuell habe ich ein selbst gebautes noch im Einsatz. Mein Testsystem läuft mit einem umgebauten (erweiterten) Image von Dir.
    Ich ergänze noch die Tools für Mikrotik, Speedtest und Telegram, ändere die Konfig vom Apache um den Websocket ebenfalls wie edomi selbst über 443 auszuliefern ( weil ich z.b. im Büro per WLAN nach außen nur 443 und 80 zugänglich habe, und LTE schlechten Empfang hat). Somit kann ich zuhause auch schön mehrere unterschiedliche Dienste (Cloudstorage, Sauna, typo3,...) über die selbe ip/Domain und alles über Port 443 nutzen, was meinem WAF extrem gut tut ;-)

    Sg Joe

    Kommentar


      Hi Joe

      Zitat von givemeone Beitrag anzeigen
      Aktuell habe ich ein selbst gebautes noch im Einsatz. Mein Testsystem läuft mit einem umgebauten (erweiterten) Image von Dir.
      Ah ok.

      Zitat von givemeone Beitrag anzeigen
      Ich ergänze noch die Tools für Mikrotik, Speedtest und Telegram
      Verstehe. Aber was fehlt denn für Telegram noch? Ich verwende das ohne Probleme aber vermutlich habe ich nicht alle Features getestet!?


      Zitat von givemeone Beitrag anzeigen
      ändere die Konfig vom Apache um den Websocket ebenfalls wie edomi selbst über 443 auszuliefern ( weil ich z.b. im Büro per WLAN nach außen nur 443 und 80 zugänglich habe, und LTE schlechten Empfang hat).
      Mit dem Gedanken, den Websocket über den gleichen Port auszuliefern, habe ich auch schon gespielt. Bisher noch keine Zeit gehabt, damit zu experimentieren. Welche Changes brauchts dafür? Ggf. wäre das ja interessant, das so per Default zu machen. Braucht dann ja ein Container-Mapping weniger...


      Zitat von givemeone Beitrag anzeigen
      Somit kann ich zuhause auch schön mehrere unterschiedliche Dienste (Cloudstorage, Sauna, typo3,...) über die selbe ip/Domain und alles über Port 443 nutzen, was meinem WAF extrem gut tut ;-)
      Das kann ich voll nachvollziehen...
      Kind regards,
      Yves

      Kommentar


        Hallo Yves,



        Zitat von starwarsfan Beitrag anzeigen
        Verstehe. Aber was fehlt denn für Telegram noch? Ich verwende das ohne Probleme aber vermutlich habe ich nicht alle Features getestet!?
        Haumtsächlich muss ich den LBS selbst patchen, da er hardcodiert für den MySQL-Zugriff
        "localhost" nimmt, und die Namensauflösung bei mir deaktiviert ist.
        Ich muss ihm also die Edomi-Variablen(127.0.0.1) übergeben.
        Dann ging bei mir der Versand von Plots auch nicht out-of-the-box, aber das nutze ich aktuell gar nicht mehr.

        Zitat von starwarsfan Beitrag anzeigen
        Mit dem Gedanken, den Websocket über den gleichen Port auszuliefern, habe ich auch schon gespielt. Bisher noch keine Zeit gehabt, damit zu experimentieren. Welche Changes brauchts dafür? Ggf. wäre das ja interessant, das so per Default zu machen. Braucht dann ja ein Container-Mapping weniger...
        Nun, vermutlich gibt es elegantere Lösungen. Was mir fehlt ist bei Edomi die Trennung, unter
        a) welchem Port ein Websocket hören soll und
        b) unter welchem Port die Visu die Websocket-Verbindung aufbauen soll.
        Da in Edomi beides das selbe ist, löse ich es über 2 unterschiedliche IPs.

        Ich lasse die Apache-Visu auf der IP hören (171.20.0.2:443) und den Websocket auf localhost: (127.0.0.1:443). Dann
        nehme ich einen nginx als Proxy und verbinde dort diese beiden zu einer Location.
        Eigentlich simpel und stabil, wenn es mal eingerichtet ist.
        Wenn dein Docker-Image das per default könnte, wäre es natürlich Mega....

        Wenn ich etwas Beitragen kann, gerne!

        sG
        Joe

        Kommentar


          Hi Joe

          Zitat von givemeone Beitrag anzeigen
          Haumtsächlich muss ich den LBS selbst patchen, da er hardcodiert für den MySQL-Zugriff
          "localhost" nimmt, und die Namensauflösung bei mir deaktiviert ist.
          Ich muss ihm also die Edomi-Variablen(127.0.0.1) übergeben.
          Ok, das ist dann wirklich speziell und nichts für das Default-Image.


          Zitat von givemeone Beitrag anzeigen
          Dann ging bei mir der Versand von Plots auch nicht out-of-the-box, aber das nutze ich aktuell gar nicht mehr.
          Danke für die Info, verwende ich aktuell nicht und werde es dementsprechend explizit testen.


          Zitat von givemeone Beitrag anzeigen
          Ich lasse die Apache-Visu auf der IP hören (171.20.0.2:443) und den Websocket auf localhost: (127.0.0.1:443). Dann
          nehme ich einen nginx als Proxy und verbinde dort diese beiden zu einer Location.
          Eigentlich simpel und stabil, wenn es mal eingerichtet ist.
          Wenn dein Docker-Image das per default könnte, wäre es natürlich Mega....
          Verstehe. Kannst Du mir die Apache- sowie die nginx-Konfig zukommen lassen? Mir ist noch nicht klar, wo der nginx läuft. Im Container oder als ein zweiter Container "davor"?


          Zitat von givemeone Beitrag anzeigen
          Wenn ich etwas Beitragen kann, gerne!
          Tust Du schon.
          Kind regards,
          Yves

          Kommentar


            Hallo Yves,


            Zitat von starwarsfan Beitrag anzeigen
            Kannst Du mir die Apache- sowie die nginx-Konfig zukommen lassen?
            Gerne. Ich musse selber gerade nochmal nachsehen.
            Hier die nginx-config.

            dern entscheidende Part ist
            Code:
            location = / {
            und
            Code:
            location / {
            als Unterscheidung des Websockets.

            Dieses:
            Code:
            include /etc/nginx/ssl-settings.conf;
            GGf ersetzen durch die normale Konfig. Ich persönlich mache HTTPS nur im ngix,
            belasse also den apache ohne verschlüsselung.

            Code:
            upstream edomi_websocket {
            server 127.0.0.1:443;
            }
            |
            upstream edomi_web {
            server 171.20.0.1:80;
            keepalive 16;
            }
            server {
            listen 171.20.0.2:443 ssl http2;
            server_name xxxdomain;
            
            include /etc/nginx/ssl-settings.conf;
            
            ssl_client_certificate /etc/ssl/ca/certs/ca.crt;
            ssl_verify_client on;
            ssl_verify_depth 2;
            
            
            ##ssl performance
            
            error_log error.log;
            access_log access.log ssl_client;
            
            
            proxy_set_header Host xxxdomain;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            
            
            # Weiterleitung zu Edomi (Websocket Schnittstelle)
            # Nur Verbindungen gegen "/" (exakt, keine wildcard!) durchlassen! Also weder auf Dateien noch Verzeichnisse (= nur Websocket Connects)
            
            location = / {
            proxy_http_version 1.1;
            proxy_set_header Upgrade "websocket";
            proxy_set_header Connection "upgrade";
            proxy_pass http://127.0.0.1:443;
            }
            
            location = /visu/passwordFREE {
            proxy_pass http://edomi_web/visu/?login=user&pass=passwd&visu=1;
            }
            
            # Jetzt alles andere durchlassen
            location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_http_version 1.1;
            proxy_set_header Host $host;
            
            proxy_buffering on;
            proxy_ssl_session_reuse on;
            proxy_pass http://edomi_web/;
            }
            
            
            }



            Zitat von starwarsfan Beitrag anzeigen
            Mir ist noch nicht klar, wo der nginx läuft. Im Container oder als ein zweiter Container "davor"?
            Teste beides. aktuell habe ich ihn sogar am Docker-Host selbst laufen, und sammle dort alle Webseiten der einzelnen Docker-stacks zusammen.
            Ist untpisch, läuft aber gerade so schön ;-)

            Den Apache konfiguriere ich übrigens nur um, dass er NICHT an Port 443 hört. denn nur so kann sich der Websocket an diesem Port andocken.

            Code:
            RUN sed -i -e "s/443/446/g" /etc/httpd/conf.d/ssl.conf

            sG
            Joe

            Kommentar


              Hi,

              ich habe mir auch heute Abend die neue Dockerversion (CentOS7-latest) angesehen. Läuft bisher alles super (MQTT, Telegram...). Ich habe auch das "Problem", dass meine bisher funktionierenden Locales nicht mehr interpretiert werden. In der Visu habe ich bspw. bei allen Datumsangaben englische Tagesnamen.

              Viele Grüße,
              Flo

              Kommentar



                Nachtrag:
                Hier die Zeilen für die Mikrotik-LBS Anbindung
                Wäre das was fürs offizielle Image, oder lieber nicht?

                Code:
                RUN yum -y update nss \
                && cd /usr/local/edomi/main/include/php \
                && git clone https://github.com/jonofe/Net_RouterOS \
                && cd Net_RouterOS \
                && composer install

                Kommentar


                  Hi

                  Zitat von givemeone Beitrag anzeigen
                  Hier die Zeilen für die Mikrotik-LBS Anbindung
                  Wäre das was fürs offizielle Image, oder lieber nicht?
                  Sieht unspektakulär aus, von daher sollte das kein Problem sein. Mal sehen, was der Schöpfer dazu sagt: jonofe: Was bzw wieviel pumpt der Mikrotik-LBS in das Image?
                  Kind regards,
                  Yves

                  Kommentar


                    Es ist ein Verzeichnis /usr/local/edomi/main/php/include/Net_RouterOS inkl. der Abhängigkeiten. Insgesamt 55M.

                    Kommentar


                      Zitat von jonofe Beitrag anzeigen
                      Es ist ein Verzeichnis /usr/local/edomi/main/include/php/Net_RouterOS inkl. der Abhängigkeiten. Insgesamt 55M.
                      Ohne das GIT-Verzeichnis wären es dann nochmal 2.5MB weniger.

                      Kommentar


                        Zur Info: Teste gerade das Image mit MariaDB 10 statt 5.x, und bemerke eine deutliche Reduzierung der Load von 0.71 auf 0.45 im Tagesschnitt.
                        Habe jedoch eine ziemlich große Edomi-Installation...

                        Edit: (scheinbar wegen dem besseren Handling von RamDBs)

                        sG
                        Joe
                        Zuletzt geändert von givemeone; 24.01.2020, 10:49.

                        Kommentar


                          starwarsfan

                          Hi,
                          kannst du mir bitte nochmal einen Hinweis geben, was du genau wo geändert hast, damit Portainer nicht mehr sekündlich ins Log schreibt? Ich habe mir jetzt selbst ein arm64 Image mit deinen Dockerfiles gebaut (jedoch mit php5 und ohne telegram), habe aber trotzdem diesen sekündlichen Eintrag. Finde hier leider nirgends was genau geändert werden muss. Danke im Voraus!
                          Grüße
                          Carsten

                          [HOW-TO] Automatischer SSH Login mit Windows ohne Putty

                          Kommentar


                            Hallo
                            Ich hoffe ich bin hier richtig. Ich habe mein System auf Docker umgestellt. Leider funktioniert meine Alexa Sprachsteuerung nicht mehr. In der Config des Reverse Proxy
                            habe ich die IP Adresse meines Edomi Docker (192.168.64.94:82) angepasst. Leider kann Edomi nicht erreicht werden. Was muss ich noch anpassen ?

                            Kommentar


                              Port mapping in den container konfiguriert?

                              Kommentar


                                Alles andere funktioniert. Muss ich noch einen zusätzichen port mappen ? eventuell 82 auf welchen Port ?

                                Kommentar

                                Lädt...
                                X