Ankündigung

Einklappen
Keine Ankündigung bisher.

Amazon Alexa Plugin

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

    Hallo Jürgen

    Danke für deine schnelle Antwort. Meine nginx.conf sieht so aus.

    Code:
    user www-data;
    worker_processes auto;
    pid /run/nginx.pid;
    include /etc/nginx/modules-enabled/*.conf;
    
    events {
    worker_connections 768;
    # multi_accept on;
    }
    
    http {
    log_format specialLog '[$time_local] $remote_addr forwarded for $http_x_real_ip - '
    'Request: "$request" - Status: $status - Bytes sent: $body_bytes_sent '
    'Referrer: "$http_referer" - User Agent: "$http_user_agent"';
    
    ##
    # Basic Settings
    ##
    map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
    }
    
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    include /etc/nginx/proxy_params;
    include /etc/nginx/fastcgi_params;
    ##
    # SSL Settings
    ##
    
    ssl_protocols TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;
    
    ##
    # Logging Settings
    ##
    
    access_log /var/log/nginx/access.log specialLog buffer=64K;
    error_log /var/log/nginx/error.log;
    
    ##
    # Gzip Settings
    ##
    gzip on;
    gzip_disable "msie6";
    gunzip on;
    gzip_static on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types application/javascript application/json application/vnd.ms-fontobject application/x-font-ttf image/svg+xml text/css text/plain text/xml;
    gzip_vary on;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    
    ##
    # GeoIP Settings
    # Nur Länder aus erlaubten IP Bereichen dürfen den ReverseProxy
    # passieren!
    # https://www.howtoforge.de/anleitung/nginx-besucher-mit-dem-geoip-modul-nach-landern-blocken-debianubuntu/
    ##
    geoip_country /usr/share/GeoIP/GeoIP.dat;
    map $geoip_country_code $allowed_country {
    default yes;
    BY no;
    BR no;
    KP no;
    KR no;
    RS no;
    RO no;
    RU no;
    CN no;
    CD no;
    NE no;
    GH no;
    IQ no;
    IR no;
    SY no;
    UA no;
    HK no;
    JP no;
    SC no;
    }
    ##
    # Virtual Host Configs
    ##
    
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
    ##
    # Harden nginx against DDOS
    ##
    
    client_header_timeout 10;
    client_body_timeout 10;
    }
    Wenn ich das richtig verstehe, wir ja mit
    Code:
    include /etc/nginx/conf.d/*.conf;
    meine obere Config inkludiert !? Dort ist ja Weiterleitung eingetragen
    Code:
    # Weiterleitung zu SmartHomeNG (Websocket Schnittstelle) mit Basic Auth
    location = / {
    include /etc/nginx/headers.conf;
    satisfy any;
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.smartvisu;
    allow 127.0.0.1;
    allow 192.168.0.0/16;
    allow 10.0.0.0/16;
    allow ::1;
    deny all;
    
    # This script tests the SSL certificate and enables Websocket access with Apple devices.
    # If you want to limit your access to devices with certificates (recommended!), don't remove this line!
    access_by_lua_file /etc/nginx/scripts/hass_access.lua;
    
    # Nur Websocket Verbindungen gegen "/" durchlassen!
    if ($http_upgrade = websocket) {
    proxy_pass http://192.168.178.10:2424;
    }
    
    }
    Muss ich das dann in der /etc/nginx/nginx.conf nochmal eintragen?

    LG Gersch
    Zuletzt geändert von Gersch; 12.01.2021, 10:16.

    Kommentar


      Zitat von Gersch Beitrag anzeigen
      Wenn ich das richtig verstehe, wir ja mit Code:

      include /etc/nginx/conf.d/*.conf;
      meine obere Config inkludiert !? Dort ist ja Weiterleitung eingetragen
      Das sollte reichen. Meine conf sieht aber diesbezüglich anders aus:

      Code:
          # Zugriff auf die smartVISU mit Basic Auth
          location /smartVISU {
              auth_basic "Restricted Area: smartVISU";
              auth_basic_user_file /etc/nginx/.smartvisu;
              proxy_pass http://192.168.1.30:8080/smartVISU;
              proxy_set_header Host $host;
              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;
          }

      Kommentar


        Hii,

        mach am besten mal ne Zeichnung :-)

        Die externe URL www.deineseite.domain/smartVISU
        wird vom Proxy zu deinem raspi geleitet.
        Dazu muss er für die Unterseite /smartVISU ein Ziel haben, also ip und Port
        Bei Cannon ist es die ip 1.30 mit port 8080.
        Also die URL, die DU im lokalen Netz auch aufrufst.

        Gruß Jürgen

        Kommentar


          Ich steh entweder gerade total auf der Leitung, oder ich bin wirklich zu blöd dafür.
          Zitat von Jürgen Beitrag anzeigen
          Dazu muss er für die Unterseite /smartVISU ein Ziel haben, also ip und Port
          Bei Cannon ist es die ip 1.30 mit port 8080.
          Also die URL, die DU im lokalen Netz auch aufrufst.
          Lokal rufe ich die Seite mit 192.168.178.10/smartvisu auf. Ohne Portangabe.
          Dies ist ja in meiner https.conf auch eingetragen.
          Code:
          # Zugriff auf die smartVISU mit Basic Auth
          location /smartvisu {
          include /etc/nginx/headers.conf;
          satisfy any;
          auth_basic "Restricted Area: smartVISU2.9";
          auth_basic_user_file /etc/nginx/.smartvisu;
          allow 127.0.0.1;
          allow 192.168.0.0/16;
          allow 10.0.0.0/16;
          allow ::1;
          deny all;
          
          access_by_lua_file /etc/nginx/scripts/hass_access.lua;
          
          [B][COLOR=#c0392b]proxy_pass http://192.168.178.10/smartvisu;[/COLOR][/B]
          proxy_set_header Host $host;
          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;
          }
          Habe versucht, da mal :80 dranzuhängen, ergibt allerdings das Gleiche. Es wird nur das bereits gepostete gezeigt (Foto). Cache vom Browser wird natürlich immer gelöscht.

          Wenn ich das ganze allow auskommentiere, damit es so aussieht wie bei Cannon, bringt es leider auch nicht´s.
          Könnt ihr mir da bitte auf die Sprünge helfen.

          Kommentar


            Laufen denn die anderen Sachen alle? Wenn ja, vermute ich mal, dass du zum einen den Port brauchst, zumindest den, der irgendwo im apache server konfiguriert ist. ich würde auch bei den apache-settings schauen, ob da Port und Weiterleitung richtig eingestellt ist. Das macht wie gesagt genau dann Sinn, wenn alle anderen Sachen laufen, weil die SmartVisu apache braucht.

            Kommentar


              Hallo Gersch ,

              vielleicht hab ich Tomaten auf den Augen ab ich kann Dein Foto nirgends sehen ? Hilf mir bitte die Tomaten abzunehmen.

              Zitat von Gersch Beitrag anzeigen
              Nach dieser Eingabe erscheinen aber nur Textteile meiner smartvisu (Siehe Foto)
              Ich habe die Vermutung das es am durchreichen von php scheitert. Vom "Foto" erhoffe ich mir nähere Erkenntnisse.

              Viele Grüsse
              Andre

              Kommentar


                Das verstehe ich jetzt nicht. Das Foto war als ich auf Vorschau geklickt habe aber da!?!?


                smartvisu.JPG
                Ich habe jetzt mal meine https.conf gekübelt und durch die, die auf https://www.smarthomeng.de/nginx-als-reverseproxy beschrieben ist ersetzt. Ergebnis:

                smartvisu2.PNG

                Somit wird zumindest mal die Seite Richtig angezeigt. Das Alexa-Plugin funktioniert, Nur die Verbindung zum smarhome.py scheinbar noch nicht.
                Meine neue http.conf sieht so aus

                Code:
                server {
                server_tokens off;
                
                ## Blocken, wenn Zugriff aus einem nicht erlaubten Land erfolgt ##
                if ($allowed_country = no) {
                return 403;
                }
                
                # https://www.cyberciti.biz/tips/linux-unix-bsd-nginx-webserver-security.html
                ## Block download agents ##
                if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
                return 403;
                }
                
                ## Block some robots ##
                if ($http_user_agent ~* msnbot|scrapbot) {
                return 403;
                }
                
                ## Deny certain Referers ##
                if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|pok er|porn|sex|teen) )
                {
                return 403;
                }
                
                listen 443 ssl default_server;
                server_name glock.ddnss.de;
                
                ##
                # SSL
                ##
                
                ## Activate SSL, setze SERVER Zertifikat Informationen ##
                # Generiert via Let's Encrypt!
                ssl on;
                ssl_certificate /etc/letsencrypt/live/glock.ddnss.de/fullchain.pem;
                ssl_certificate_key /etc/letsencrypt/live/glock.ddnss.de/privkey.pem;
                ssl_session_cache builtin:1000 shared:SSL:10m;
                ssl_prefer_server_ciphers on;
                # unsichere SSL Ciphers deaktivieren!
                ssl_ciphers HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!RC4;
                
                ##
                # HSTS
                ##
                
                add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
                
                ##
                # global
                ##
                
                root /var/www/;
                index index.php index.htm index.html;
                
                # Weiterleitung zu SmartHomeNG (Websocket Schnittstelle) mit Basic Auth
                # Nur Verbindungen gegen "/" durchlassen! Also weder auf Dateien noch Verzeichnisse (= nur Websocket Connects)
                location = / {
                auth_basic "Restricted Area: smartVISU";
                auth_basic_user_file /etc/nginx/.smartvisu;
                proxy_pass http://192.168.178.10:2424;
                }
                
                # Zugriff auf die smartVISU mit Basic Auth
                location /smartVISU {
                auth_basic "Restricted Area: smartVISU";
                auth_basic_user_file /etc/nginx/.smartvisu;
                proxy_pass http://192.168.178.10/smartVISU;
                proxy_set_header Host $host;
                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;
                }
                
                # Alexa Plugin Weiterleitung
                location /alexa {
                auth_basic "Restricted Area: Alexa";
                auth_basic_user_file /etc/nginx/.alexa;
                proxy_pass http://192.168.178.10:9000/;
                proxy_set_header Host $host;
                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;
                }
                
                # Network Plugin Weiterleitung
                #location /shng {
                #auth_basic "Restricted Area: SmartHomeNG";
                #auth_basic_user_file /etc/nginx/.shng;
                #proxy_pass http://<SmartHomeNG LAN IP>:<Network Plugin Port>/;
                #proxy_set_header Host $host;
                #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;
                #}
                }

                Kommentar


                  Hi @Gersch,

                  wie vermutet war das ein PHP-Problem, die genaue Ursache kann ich Dir im Moment auch nicht nennen.
                  Ich denke das ist am einfachsten raus zufinden wenn Du die funktionierende Step by Step auf die "alte" umbaust.
                  (Es wäre schön wenn Du uns an dieser Info teilhaben lässt)

                  Das Problem mit der Socketverbindung rührt aus den verwendeten Ports der smartvisu siehe auch hier. Ab Post #120

                  Das Problem ist aus meiner Sicht nicht final gelöst - Die Diskussion hatte begonnen ist aber wieder untergegangen.
                  Das Problem gibt es nur wenn man 2 Rechner hat - 1 x NGINX für den https-Teil und 1xshng+smartVISU
                  und
                  intern
                  via http mit dem shng/smartvisu kommunizieren will und von
                  extern via nginx und https.

                  Da hilft die "Krücke" mit "leerem" Port nicht wirklich. Zum Testen solltest Du auf jeden Fall versuchen ob die smartVISU korrekt läuft wenn Du den Port
                  in der SmartVISU-Config leer lässt. Das sollte dann via https und nginx laufen allerdings nicht mehr via http direkt auf deinen shng/smartVISU-Rechner.

                  Auch hier : Lass uns an Deinen Erkenntnissen teil habe,

                  Viele Grüsse
                  Andre


                  Kommentar


                    Ich habe mir mal die Beschreibung der Funktionen angeschaut. Noch kann ich davon einiges ja implementieren - es wird ja immer mehr.

                    Nun habe ich gesehen, dass es einen LockController gibt. Das ist sicherlich eher für Türen gedacht. Ich würde gerne aber auch andere Dinge sperren, wie beispielsweise, sperre Licht im Wohnzimmer oder so ähnlich. Das Problem: Laut Anleitung ist beim Entsperren ein Pin erforderlich. Gibt es da irgendwie eine Alternative, wie man das realisieren könnte?

                    Und dann gibt es seit Version 1.81 ständig etliche Warnungen im Log - vor allem wegen Alexa. Kann man das irgendwie deaktivieren?

                    Code:
                    WARNING  lib.metadata      Item 'EG.Essen.Rollladen.pos', attribute 'alexa_range_delta': Attribute is undefined and has value '20' (defined in Rollladen.yaml)

                    Kommentar


                      Hallo Canon,

                      zu den Warnungen steht einiges in den Kopfbeiträgen 1.8 / 1.8.1 released.
                      Das Sperren eines Items machst Du am besten über eine & Verknüpfung mit der Freigabe Adresse.

                      Gruß Jürgen

                      Kommentar


                        Zitat von Jürgen Beitrag anzeigen
                        zu den Warnungen steht einiges in den Kopfbeiträgen 1.8 / 1.8.1 released.
                        Ja aber leide rnicht genug. Das was da stand war, dass die irgendwo definiert werden sollen. Wenn wir hier aber über das Alex-plugin reden, dann sollten die doch im plugin definiert worden sein, damit es keine Warungen gibt, richtig?

                        Zitat von Jürgen Beitrag anzeigen
                        Das Sperren eines Items machst Du am besten über eine & Verknüpfung mit der Freigabe Adresse.
                        Das habe ich nicht verstanden. Was meinst du damit?

                        Kommentar


                          Das Problem mit der Socketverbindung (nginx auf einem anderen Server) habe ich auch. smartVisu wird angezeigt aber websocket Fehler.

                          Allerdings finde ich auch keine Geräte über die Alexa App. Denn Skill habe ich gefunden und hinzugefügt.
                          Als Tests habe ich bisher folgendes gemacht:
                          - Per Browser kommt er über https://meine.dynddns.me/alexa auf die gleiche Seite wie von intern über http://IP:9000. Somit würde ich sagen Nginx klappt?
                          - Wenn ich in der Plugin Oberfläche schaue wird mir mein Alexa device gelistet. Und kann auch über Test Functions geschaltet werden.

                          Wo kann ich jetzt weiter ansetzen? Wie kann ich das nun troubleshooten?
                          In der Lampda Funktion? In einem Nginx log?

                          Danke für eure Hilfe...
                          Chris

                          PS: Ich hab den Fehler gefunden. Im Nginx access.log kam nichts an. Daher hab ich die Lamdba Funktion nochmal neu gemacht. Nun klappt es. Das Socketverbindungsthema bleibt. Kann man hier auf einen baldigen Fix hoffen?
                          Zuletzt geändert von cypher2000; 04.02.2021, 14:50.

                          Kommentar


                            Hallo zusammen,

                            ich sags gleich, ich habe nicht verändert 😋 - trotztem ging die Alexa Integration von einem Tag auf den anderen nicht mehr, "Gerät reagiert nicht".
                            Skill in der iOS app deaktiviert.
                            -> aktivieren geht nicht mehr. "Verknüpfung mit smarthomeNG konnte diesmal nicht hergestellt werden"
                            -> plugin backend geht nach wie vor, "test-functions" der Items mit TurnOff/TurnOn gehen nach wie vor um Items zu schalten.

                            Habe jetzt ein wenig zugewartet, weil ich dachte, e.v. eine Änderung am AWS oauth, dann müssten vermutlich mehrere Beiträge hier kommen, aber nichts dergleichen.

                            Habt ihr eine Idee wo ich ansetzen kann den Fehler zu suchen?

                            Danke
                            Johannes

                            Kommentar


                              Zitat von jonsson Beitrag anzeigen
                              ich sags gleich, ich habe nicht verändert 😋 - trotztem ging die Alexa Integration von einem Tag auf den anderen nicht mehr, "Gerät reagiert nicht".
                              Schau mal, ob das Zertifikat abgelaufen ist. Das Zertifikat muss mittels certbot immer wieder aktualisiert werden.

                              Kommentar


                                Cannon grazie mille!
                                Normal bekomme ich dafür ja einen e-Mail reminder, aber ja, das wars!

                                Kommentar

                                Lädt...
                                X