Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Du musst dem certbot das Verzeichnis als Pfad mitgeben, in den er die responses speichern soll. Bei mir z. b. /var/www
dann versucht letsencrypt per http/80 die responses zu verifizieren.
Ok, jetzt hat das mit dem certifikat schon mal funktioniert. Nachdem ich den 80 und den 443 Port aufgeschaltet hatte und den Pfad für den certificatstest nochmal geändert habe.
Der Pfad war bei mir /var/www/html/....
Wie auch immer, soweit so gut. -> Es wird langsam...
Nächstes Problem:
Nun started das Alexa Plugin nicht mehr korrekt da ich die folgende Meldung bekomme.
Jemand eine Idee?
Code:
017-03-26 13:54:37 WARNING Main -------------------- Init smarthomeNG 1.2.451 --------------------
2017-03-26 13:54:37 INFO Main Init Scheduler
2017-03-26 13:54:37 INFO Main Init Plugins
2017-03-26 13:54:39 INFO Main Init UZSU
2017-03-26 13:54:39 INFO Main OperationLog MeldelisteConfigPuffer: logging to file /usr/local/smarthome/var/log/operationlog/{name}-{year:04}.log, keeping 100 entries in memory, caching active
2017-03-26 13:54:39 INFO Main OperationLog Meldeliste_IPCAM: logging to file /usr/local/smarthome/var/log/operationlog/{name}-{year:04}.log, keeping 100 entries in memory, caching active
2017-03-26 13:54:39 INFO Main OperationLog Meldeliste: logging to file /usr/local/smarthome/var/log/operationlog/{name}-{year:04}.log, keeping 100 entries in memory, caching active
2017-03-26 13:54:40 INFO Main Init AVM Plugin
2017-03-26 13:54:40 INFO Main Alexa: service setup at 192.168.178.168:8089
2017-03-26 13:54:40 ERROR Main Plugin alexa exception: [Errno 98] Die Adresse wird bereits verwendet
Traceback (most recent call last):
File "/usr/local/smarthome/lib/plugin.py", line 63, in __init__
plugin_thread = PluginWrapper(smarthome, plugin, classname, classpath, args, instance)
File "/usr/local/smarthome/lib/plugin.py", line 108, in __init__
exec("self.plugin.__init__(smarthome{0})".format(args))
File "<string>", line 1, in <module>
File "/usr/local/smarthome/plugins/alexa/__init__.py", line 43, in __init__
service_host, int(service_port), service_https_certfile, service_https_keyfile)
File "/usr/local/smarthome/plugins/alexa/service.py", line 19, in __init__
self.server = HTTPServer((host, port), handler_factory)
File "/usr/lib/python3.4/socketserver.py", line 429, in __init__
self.server_bind()
File "/usr/lib/python3.4/http/server.py", line 133, in server_bind
socketserver.TCPServer.server_bind(self)
File "/usr/lib/python3.4/socketserver.py", line 440, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 98] Die Adresse wird bereits verwendet
2017-03-26 13:54:40 INFO Main Init Items
2017-03-26 13:54:40 INFO Main Alexa: service setup at 192.168.178.168:8089 2017-03-26 13:54:40 ERROR Main Plugin alexa exception: [Errno 98] Die Adresse wird bereits verwendet
Ok, ich hab zwar keine Ahnung von wem aber ich habe nun den Port intern zurück auf den Standard gestellt. Ich forwarde jetzt also den Port 8089 an die 9000. in der config von nginx geändert und zertifikate neu erzeugt:
Code:
# SSL-Redirect & LetsEncrypt Endpoint
server {
listen 80 default_server;
# redirect every requested $host (any, even invalid ones) to its SSL URL
location / {
return 301 https://$host$request_uri:8089;
}
# LetsEncrypt Endpoint
location /.well-known {
allow all;
alias /var/www/.well-known;
}
}
# Sitemap
server {
listen 8089 ssl default_server;
access_log /var/log/nginx/sitemap.log combined;
auth_basic "alexa";
auth_basic_user_file /etc/nginx/htpasswd;
include /etc/nginx/include.d/common;
#add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
root /var/www/sitemap;
index index.html;
}
}
# Alexa
server {
listen 8089 ssl;
server_name xxxx.ddns.net;
access_log /var/log/nginx/alexa.log combined;
auth_basic "alexa";
auth_basic_user_file /etc/nginx/htpasswd.alexa;
include /etc/nginx/include.d/common;
location / {
proxy_pass http://192.168.178.168: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;
}
}
# ANOTHER-SERVICE.YOUR-HOME.DYNDNS.TLD
Es gibt keine Fehlermeldung mehr und smarthome sagt mir das das Alexa Plugin gestartet wurde. Leider bringt der Test auf der AWS Lambda immer noch keinen Erfolg und folgenden Fehler:
Wenn ich im Browser direkt versuche auf den Link Https:\\xxxx.ddns.net:8089 zuzugreifen dann kommt diese Fehlermeldung.
Code:
Fehler: Gesicherte Verbindung fehlgeschlagen
Ein Fehler ist während einer Verbindung mit xxxx.ddns.net:8089 aufgetreten. SSL hat einen Eintrag erhalten, der die maximal erlaubte Länge überschritten hat. Fehlercode: SSL_ERROR_RX_RECORD_TOO_LONG
Die Website kann nicht angezeigt werden, da die Authentizität der erhaltenen Daten nicht verifiziert werden konnte.
Kontaktieren Sie bitte den Inhaber der Website, um ihn über dieses Problem zu informieren.
Ich bin mir noch nicht sicher ob es wirklich an nginx liegt.
Was genau für ein Pfad kommt den eigentlich in die AWS? SMARTHOME_PATH -> Was genau muß da rein?
Auf welches Verzeichnis ich das Zertifikat habe erstellen lassen also var/www/html ist davon unabhängig oder?
Wenn ich etwas an der Config datei von nxing ändere, muss ich das Zertifikat neu erstellen? Oder spielt das keine Rolle?
Noch etwas ist mir aufgefallen. Das Alexa Plugin mekdet dann das der Port belegt ist wenn die Weiterleitung von Extern nach intern auf den gleichen Port erfolgt, seltsam oder? Also xxxx.ddns.net:0815 wird auf 192.168.178.22:0815 weitergeleitet -> Dann kommt der Fehler.
Der nginx test sagt auich das alles i.o. ist mit der Config. Ich bekomme auch keine Fehler im Error Log.... Gibt es sonst eine möglichkeit die erfolgreiche einstellung/installation zu testen? ALso anders gesagt, wie kann ich prüfen ob xing so arbeitet das es für das Alexa Plugin funktioniert?
Was genau für ein Pfad kommt den eigentlich in die AWS? SMARTHOME_PATH -> Was genau muß da rein?
bspw. "/alexa/" -> der Pfad auf dem man im NGINX die ReverseProxy Regel gemapped hat
Wenn ich etwas an der Config datei von nxing ändere, muss ich das Zertifikat neu erstellen? Oder spielt das keine Rolle?
m.E. nein, weil das Zertifikat auf den dyndns Namen hört
Allgemein gibt es viele super Tutorials zum Thema NGINX, wenn man versteht was man konfiguriert, macht das einiges einfacher. Ich habe auch noch zusätzliche Sicherheiten wie Prüfung des Anfragenden Landes, http_referrer und user_agent drin.
Anbei meine Weiterleitungsregel und ein bischen mehr drumherum, viell. hilfts - Man sieht, dass Port 443 mit Kontextpfad /alexa/ auf meine http SmartHomeNG Instanz mit dem im Alexa Plugin definierten Port 9000 weiterleitet:
Danke für die Hilfe. So langsam komme ich der Sache näher. Mein Fehler lag bis hier hin darin das ich das Portforwarding nicht richtig eingestellt hatte. Nun passt es aber.
Fritzbox nimmt Port 9001 und übergibt ihn an Smarthome Server 9001 -> Der dann über nxing an die 9000.
Nun habe ich folgenden Fehler: Authentifizierung? Jemand eine Idee?
Code:
START RequestId: a744feea-12fa-11e7-94db-71bf9c646eac Version: $LATEST 2017-03-27T14:35:41.796Z a744feea-12fa-11e7-94db-71bf9c646eac requesting {"key3":"value3","key2":"value2","key1":"value1"} 2017-03-27T14:35:42.096Z a744feea-12fa-11e7-94db-71bf9c646eac HTTP 401 2017-03-27T14:35:42.098Z a744feea-12fa-11e7-94db-71bf9c646eac raw response: <html> <head><title>401 Authorization Required</title></head> <body bgcolor="white"> <center><h1>401 Authorization Required</h1></center> <hr><center>nginx</center> </body> </html> 2017-03-27T14:35:42.100Z a744feea-12fa-11e7-94db-71bf9c646eac SyntaxError: Unexpected token < at Object.parse (native) at IncomingMessage.<anonymous> (/var/task/index.js:39:24) at emitNone (events.js:72:20) at IncomingMessage.emit (events.js:166:7) at endReadableNT (_stream_readable.js:905:12) at nextTickCallbackWith2Args (node.js:437:9) at process._tickDomainCallback (node.js:392:17) END RequestId: a744feea-12fa-11e7-94db-71bf9c646eac REPORT RequestId: a744feea-12fa-11e7-94db-71bf9c646eac Duration: 433.88 ms Billed Duration: 500 ms Memory Size: 512 MB Max Memory Used: 13 MB RequestId: a744feea-12fa-11e7-94db-71bf9c646eac Process exited before completing request
Hä? Im idealen Setting leitet die Fritzbox gar nichts an den SmartHome Server. Bei mir geht alles über 443 gegen NGINX und von dort dann gegen SmartHome... das ist ja auch der Sinn der Sache eines Basic Auth geschützten ReverseProxies
Aber meine Fritze (Router) hängt doch vor meinem Smarthome Server und auf dem läuft NGINX. So gesehen geht das doch nicht anders... Nun kapier ich gar nix mehr..... Meine DNNS geht doch an meine Fritzbox und von dort aus je nach Portforward an die unterliegenden Geräte.
roho ja aber du solltest gegen NGINX routen, dort wird ja nur das durchgelassen, was durchgelassen werden soll.. nginx ist quasi dein filter für eingehende requests. ich habe das ding sogar auf einem eigenen raspi, um auch die hardware getrennt zu halten
smarthome hängt dann am ende der kette und wird nur noch auf dem dedizierten alexa port getriggert.
PS: ich glaube du meinst mit "SmartHome Server" nur die Maschine auf der NGINX läuft... NGINX sollte dann annehmen und auf den port von smarthome routen... für mich war "SmartHome Server" die Software SmartHomeNG, was sich ja wie ein server verhält.
Ok, das verstehe ich. Macht so auch Sinn. Nun ist es aber für den Moment so, das ich nxing nur für Alexa benötige und aus diesem Grund der Weg über den Forward.
Roho0303 ja korrekt... das nginx ist zudem der https endpunkt, sh kann ja nur http... ich nutze nginx bspw noch um für geofancy das network plugin zu erreichen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar