Satria (Diskussion | Beiträge) (→SSL / HTTPS) |
Satria (Diskussion | Beiträge) (→SSL / HTTPS) |
||
Zeile 53: | Zeile 53: | ||
Ergebnis: Es funktioniert, aber in der motioneye.log finden sich hunderte Fehler, die auch dazu führen, dass der Server sich ständig neu startet. | Ergebnis: Es funktioniert, aber in der motioneye.log finden sich hunderte Fehler, die auch dazu führen, dass der Server sich ständig neu startet. | ||
+ | |||
+ | === nginx als reverse proxy === | ||
+ | Eine weitaus vielversprechendere Methode ist es, einen einfachen nginx Webserver, konfiguriert als reverse proxy, in das MotionEyeOS Linux zu integrieren. Das Schwierige hier ist, dass dieses Linux nicht mal über apt-get verfügt, das heißt: Handarbeit! | ||
+ | |||
+ | Ich habe auf einem Raspbian Stretch per "apt-get install nginx" das Paket installiert und mir alles herausgezogen, was nötig ist, um es auf MotionEyeOS laufen zu lassen, was erstaunlich wenig ist. Die Struktur der benötigten Dateien schaut so aus: | ||
+ | |||
+ | <code><poem> | ||
+ | /data/etc/userinit.sh (Das ist das Skript, mit dem man nginx (und andere tools) beim booten starten kann) | ||
+ | /etc/init.d/S86nginx | ||
+ | /etc/nginx/nginx.conf | ||
+ | /etc/nginx/* (Unter den übrigen Dateien hier gibt es sicher einige überflüssige, aber sie stören nicht) | ||
+ | /usr/lib/libpcre.so.3.13.3 -> /usr/lib/libpcre.so.3 | ||
+ | /usr/sbin/nginx | ||
+ | /var/lib/nginx/ (Ordner muss nur angelegt werden) | ||
+ | /var/log/nginx/ (Ordner muss nur angelegt werden) | ||
+ | </poem></code> | ||
+ | |||
+ | Die '''/etc/nginx/nginx.conf''' sieht nur so aus: | ||
+ | <code><poem> | ||
+ | include /data/etc/nginx.conf | ||
+ | </poem></code> | ||
+ | damit dort die richtige Konfiguration liegen kann. Das erleichtert die Administration, denn /etc ist normalerweise schreibgeschützt gemounted. | ||
+ | |||
+ | Die '''/data/etc/userinit.sh''' sieht so aus: | ||
+ | <code><poem> | ||
+ | /etc/init.d/S86nginx start | ||
+ | </poem></code> | ||
+ | |||
+ | Wenn jetzt die /data/etc/nginx.conf korrekt ist, hat man beim booten einen https nginx webserver, der alles zu MotionEye weiterleitet :) | ||
+ | |||
+ | Das nginx-Paket habe ich hier zum Download. Es fehlt nur die userinit.sh, da die von meinem Paket nicht überschrieben werden soll, falls sie schon existiert. | ||
+ | |||
+ | [[Datei:Nginx-for-motioneyeos.7z]] | ||
== Quellen == | == Quellen == |
Version vom 28. Januar 2020, 22:42 Uhr
Inhaltsverzeichnis
Was ist MotionEyeOS
Es handelt sich um eine Webanwendung, die für verschiedene Hardware-Plattformen bereitgestellt wird, unter Anderem auch für den Raspberry PI 3, was sie sehr interessant macht. Denn diese Webanwendung stellt eine kostenlose Videoüberwachungs-Zentrale dar, an die man mehrere Kameras anschließen bzw. IP Kameras konfigurieren kann, deren Bild+ und Videomaterial dann hiermit verwaltet werden. Das schließt ganz besonders auch MotionDetection mit ein.
SSH
Login mit RSA key
Der public key des RSA-Schlüsselpaars muss nach
/data/etc/ssh_authorized_keys
gespeichert werden.
Konfiguration ohne UI
Startup Skript
Eine Datei
in /data/etc/userinit.sh
wird beim Booten ausgeführt.
Motion Detection ein/ausschalten
Wenn man nach einer Möglichkeit sucht, die Bewegungserkennung und die daran gekoppelte Alarmbildgenerierung automatisiert ein- oder auszuschalten, muss zunächst die Webschnittstelle des tools "motion" im LAN verfügbar machen, denn sie ist auf localhost beschränkt:
Per SSH editiert man die Datei
/data/etc/motion.conf
und verändert hier den Wert
webcontrol_localhost on
zu
webcontrol_localhost off
Speichern und über die Weboberfläche sofort neustarten, ohne hier weitere Änderungen zu machen und anzuwenden. Danach ist motion über den Port 7999 konfigurierbar, und zwar wie folgt, wobei raspi die Adresse oder der Name des Raspberrys ist und 1 die Nummer der konfigurierten Kamera, um die es gerade geht:
- http://raspi:7999/1/detection/status
- Gibt den Status der Bewegungserkennung aus.
- http://raspi:7999/1/detection/start
- Aktiviert die Bewegungserkennung.
- http://raspi:7999/1/detection/pause
- Pausiert die Bewegungserkennung
Leider ist das nicht von Dauer. Irgendwie startet sich der Dienst neu mit den konfigurierten Werten!
SSL / HTTPS
Um den Server auf HTTPS umzustellen, sind einige manuelle Schritte nötig:
- SSL Zertifikat bzw. Schlüsselpaar erzeugen:
z.B.: ssl_motioneye.key und ssl_motioneye.pem - Schlüsselpaar nach /data/etc kopieren.
- /data/etc/motioneye.conf editieren und diese 2 Zeilen anhängen:
sslcert /data/etc/ssl_motioneye.pem
sslkey /data/etc/ssl_motioneye.key - 2 Quelldateien herunterladen:
Motioneye@github --> server.py
Motioneye@github --> settings.py - settings.py editieren. Am Ende hinzufügen:
SSLCERT = "/data/etc/ssl_motioneye.pem"
SSLKEY = "/data/etc/ssl_motioneye.key" - server.py editieren. Oben zu den import Statements:
from tornado import httpserver
Dann die Zeile
application.listen(settings.PORT, settings.LISTEN)
ersetzen mit:
if os.path.exists(settings.SSLCERT) and os.path.exists(settings.SSLKEY):
http_server = httpserver.HTTPServer(application,ssl_options={
"certfile": settings.SSLCERT,
"keyfile": settings.SSLKEY,
})
http_server.listen(settings.PORT)
else:
application.listen(settings.PORT, settings.LISTEN)
Ergebnis: Es funktioniert, aber in der motioneye.log finden sich hunderte Fehler, die auch dazu führen, dass der Server sich ständig neu startet.
nginx als reverse proxy
Eine weitaus vielversprechendere Methode ist es, einen einfachen nginx Webserver, konfiguriert als reverse proxy, in das MotionEyeOS Linux zu integrieren. Das Schwierige hier ist, dass dieses Linux nicht mal über apt-get verfügt, das heißt: Handarbeit!
Ich habe auf einem Raspbian Stretch per "apt-get install nginx" das Paket installiert und mir alles herausgezogen, was nötig ist, um es auf MotionEyeOS laufen zu lassen, was erstaunlich wenig ist. Die Struktur der benötigten Dateien schaut so aus:
/data/etc/userinit.sh (Das ist das Skript, mit dem man nginx (und andere tools) beim booten starten kann)
/etc/init.d/S86nginx
/etc/nginx/nginx.conf
/etc/nginx/* (Unter den übrigen Dateien hier gibt es sicher einige überflüssige, aber sie stören nicht)
/usr/lib/libpcre.so.3.13.3 -> /usr/lib/libpcre.so.3
/usr/sbin/nginx
/var/lib/nginx/ (Ordner muss nur angelegt werden)
/var/log/nginx/ (Ordner muss nur angelegt werden)
Die /etc/nginx/nginx.conf sieht nur so aus:
include /data/etc/nginx.conf
damit dort die richtige Konfiguration liegen kann. Das erleichtert die Administration, denn /etc ist normalerweise schreibgeschützt gemounted.
Die /data/etc/userinit.sh sieht so aus:
/etc/init.d/S86nginx start
Wenn jetzt die /data/etc/nginx.conf korrekt ist, hat man beim booten einen https nginx webserver, der alles zu MotionEye weiterleitet :)
Das nginx-Paket habe ich hier zum Download. Es fehlt nur die userinit.sh, da die von meinem Paket nicht überschrieben werden soll, falls sie schon existiert.
Datei:Nginx-for-motioneyeos.7z