Hallo Claudio,
die Frage ist alt, vermutlich hast Du das schon gelöst.
Falls noch jemand die Idee hat, ich habe nun eine Lösung mit Reverse Proxy auf einem Raspberry Pi.
Setup: 2 Instar Kameras sollen nur über einen Raspberry Pi ins Internet, der als Reverse Proxy arbeitet. Webserver auf dem Raspi ist Lighttpd. Bisher habe ich immer versucht, die Umleitung über Verzeichnisse zu realisieren:
- myproxy/cam1 zeigt auf Kamera 1
- myproxy/cam2 zeigt auf Kamera 2
alles war dann über
https://myproxy.mydomain/camN erreichbar. Das funktionierte nicht mit der WebUI von Instar. Die Android App "IP Cam Viewer" kam damit klar. Kürzlich habe ich den IP Cam Viewer durch "tinyCAM PRO" ersetzt. (Diese kennt zwar meine Instar 6014 und Instar 5905 nicht, beide laufen aber mit den Einstellung der Instar 6012 recht geschmeidig.)
Nun habe ich die Proxy-Konfiguration geändert.
Die Kameras werden nun angesprochen über verschiedene Ports:
Im LAN habe ich der Einfachheit halber die selben Ports für http verwendet. Diese werden in der WebUI der Kameras unter /Netzwerk -> IP Konfiguration eingestellt.
Der Raspberry ist mit einem selbstgenerierten SSL-Zeritifikat ausgestattet. (Zu openssl gibt es zahlreiche Tutorials im Internet)
Für Lighttpd müssen mod_proxy und mod_ssl aktiviert werden.
In der Datei /etc/lighttpd/10-proxy.conf steht nur die Aktivierung des mod_proxy Moduls:
/usr/share/doc/lighttpd/proxy.txt
server.modules += ( „mod_proxy“ )
Die Proxy-Einstellungen habe ich in die Datei /etc/lighttpd/10-ssl.conf übernommen, da lighttpd keine doppelten Einträge vom Typ „$SERVER[„socket“] ==“ akzeptiert.
Die ssl.conf sieht nun folgendermaßen aus:
/usr/share/doc/lighttpd/ssl.txt
Standard Webseite
$SERVER[„socket“] == „0.0.0.0:443“ {
ssl.engine = „enable“
ssl.pemfile = „/etc/lighttpd/server.pem“
ssl.cipher-list = „ECDHE-…“
ssl.honor-cipher-order = „enable“
}
Kamera 1
else $SERVER[„socket“] == „0.0.0.0:444“ {
ssl.engine = „enable“
ssl.pemfile = „/etc/lighttpd/server.pem“
ssl.cipher-list = „ECDHE-selber Schlüssel wie oben“
ssl.honor-cipher-order = „enable“
proxy.server = ( „“ => ( „“ => ( „host“ => „192.168.1.12“,„port“ => 444 )))
}
Kamera 2
else $SERVER[„socket“] == „0.0.0.0:445“ {
ssl.engine = „enable“
ssl.pemfile = „/etc/lighttpd/server.pem“
ssl.cipher-list = „ECDHE-selber Schlüssel wie oben“
ssl.honor-cipher-order = „enable“
proxy.server = ( „“ => ( „“ => ( „host“ =>„192.168.1.13“, „port“ => 445 )))
}
Will man das Ganze unverschlüsselt ohne SSL, so reicht es, folgende Blöcke in die /etc/lighttpd/10-proxy.conf einzutragen:
Kamera 1
$SERVER[„socket“] == „0.0.0.0:444“ {
proxy.server = ( „“ => ( „“ => ( „host“ => „192.168.1.12“,„port“ => 444 )))
}
Kamera 2
else $SERVER[„socket“] == „0.0.0.0:445“ {
proxy.server = ( „“ => ( „“ => ( „host“ =>„192.168.1.13“, „port“ => 445 )))
}
Da sich Lighttpd und Apache in der Syntax ähnlich sind, funktioniert das unter Apache2 vielleicht analog. Ports 443 bis 445 wurden im DSL-Router für den Raspberry freigegeben. Die IP-Cams gehen nicht direkt ins Netz. (Neben der SSL-Verschlüsselung loggt der Raspberry Pi auch alle Zugriffe mit. Gleichzeitig dient er als FTP-Server, der die Aufnahmen über einen Autofs-Mount bei Bedarf mit sshfs aus dem Linux-Fuse Load direkt auf einen anderen Linux-Server außer Haus schickt … aber das sprengt jetzt hier die Fragestellung ).
Was jetzt NICHT funktioniert … zumindest wenn man das mit SSL verschlüsselt:
- Das Instar WebUI hat -eingeloogt als Admin- weiterhin kein Bild und man kann außer den PTZ-Funktionen nichts nutzen
Was jetzt auch mit HTTPS funktioniert ist:
- Das Instar WebUI ist -eingeloggt als Benutzer- fast vollständig nutzbar, wenn man als Videomodus MJPEG einstellt. (H264 und JPEG funktionieren nicht.)
- Meine Instar 6014 und Instar 5905 sind auch mit der Android App "tinyCAM PRO" nutzbar ... wenn auch ohne Audio.
Vielleicht hilft das hier irgend jemand weiter ... oder jemand hat noch eine Idee, was man besser machen kann.
Gruß
bona