Zur Umsetzung solle ein Raspberry Pi 2/3 oder 3+ vorhanden sein. Desweiteren braucht man ein Image von Rasbian welches man hier runterladen kann. Dazu noch eine Micro-SD Karte, einen USB Micro-SD Kartenleser und je nach Geschmack einen USB WLAN Adapter falls man keinen Pi3b oder Pi3b+ nimmt.
Stückliste:
Eine sehr gutte Anleitung für Homematic Prxies aller Art, unter anderem für Mediola etc., gibt es hier. Daher habe ich unter anderem auch die Lets Encrypt Zertifikats Geschichte.
Nach dem Download des Betriebssystem Images muss dieses auf eine Micro-SD-Karte kopiert werden. Dazu das heruntergeladene Archiv entpacken und, unter Windows per WinImage oder unter Linux per dd auf die SD-Karte kopieren.
Die SD-Karte per SD-Card Reader an den Rechner anschliessen und dann mit einem Tool wie dem Win32DiskImager das runtergeladene Raspian auf die SD-Karte kopieren. (Vorher natürlich das Archiv entpacken)
Dazu unter „1“ das Image auswählen, unter „2“ die SD-Karte bzw. deren Laufwerksbuchstaben und dann unter „3“ bzw. „Write“ das Kopieren starten.
fdisk -l (Herausfinden welchen Devicenamen die SD-Karte bekommen hat) dd bs=4M if=2016-05-27-raspbian-jessie.img of=/dev/sdb (Name des Images und Name des SD-Karten Devices ersetzen)
Bevor man loslegen kann kann man noch den Start des ssh Dienstes aktivieren. Dazu muss in dem Image im Verzeichnis /boot eine Datei mit Namen „ssh“ angelegt werden. Geschieht dies unter Windows so ist drauf zu achten das die Datei keine automatische Endung wie .txt oder so erhaelt. Wenn man einen LC-Display am Raspberry betreiben will muss eventuell der Bildschirm gedreht werden da ansonsten das Bild auf dem Kopf steht. Dazu in der Datei /boot/config.txt die Zeile „lcd_rotate=2“ ergaenzen um den Bildschirminhalt um 180 Grad zu drehen.
Nach dem einlegen der SD-Karte in den Pi und dem Anschluss des Netzwerkkabels und anschliessend des Netzteils bootet der Pi und man kann auf dem Router, DHCP-Server, oder was auch immer bei euch die IP-Adressen vergibt, nachschauen welche sich der Pi geholt hat.
Danach kann man von Linux aus per SSH
ssh -l pi IP-ADRESSE
oder von Windows aus per Putty auf den Pi zugreifen.
Default Passwort für den User „pi“ ist „raspberry“.
Als erstes werden die Passwörter für root und pi geändert, am Besten natürlich verschiedene Passwörter benutzen. Auch dran denken das die Tastatur eventuell noch auf Englisch eingestellt ist und daher „z“ und „y“ vertauscht sind und Sonderzeichen auch nicht da sind wo sie sein sollten. Am Besten vorher mal auf der Konsole ausprobieren..
pi@raspberrypi:~ $ sudo passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully pi@raspberrypi:~ $ passwd Changing password for pi. (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Es sollte noch eine feste IP-Adresse für den Pi eingetragen werden, ansonsten würde der Proxy nur funktionieren bis der DHCP Server beim nächsten Mal eine neue IP-Adresse zuweisst.
Oben rechts auf dem Desktop gibt es ein Netzwerksymbol, darauf mit echts klicken und den ersten Punkt „Eigenschaften“ auswählen. Dann im Dialog für die Netzerkschnittstellen wlan0 oder eth0, je nachdem welche man verwenden will die feste IPv4-Adresse eintragen in der Form 127.0.0.1/23, also die Netzmaske hinter dem Schrägstrich. Dann noch das Standardgateway und die Namesnserver (Meistens der Inetrnetrouter) eintragen und fertig…
Die IP-Adresse wird in der Datei /etc/network/dhcpcd.conf eingetragen:
interface wlan0 inform 172.17.200.20/23 static routers=172.17.200.1 static domain_name_servers=172.17.200.1 static domain_search=n17.de
Wer will kann jetzt noch einige Komfortzusatzsoftware installieren. Ich benutze zum editieren gerne MC, den Midnight Commander, braucht man aber nicht unbedingt, VI tuts natürlich auch.
sudo apt-get install mc
Zur besseren Fehlersuche (falls man die man braucht) auch noch das Tool lsof installieren:
sudo apt-get install lsof
Falls Ihr euch nicht immer mit dem User pi anmelden wollt sondern auch aus der ferne per root arbeiten wollt so ist in der Datei /etc/ssh/sshd_config die Zeile
PermitRootLogin without-password
in
#PermitRootLogin without-password
zu ändern, d.h. auszukommentieren. Danach ssh neu starten mit:
sudo /etc/init.d/ssh restart
Dann per ssh auf dem Raspberry anmelden und erstmal Apache installieren (Wenn man sich direkt als User root und nicht als pi anmeldet braucht man das „sudo“ nicht):
sudo apt-get install apache2 apache2-utils libapache2-mod-rpaf apache2-utils
Dann das Proxy Modul in Apache aktivieren und den Apache neu starten:
sudo a2enmod ssl headers rewrite proxy proxy_http; systemctl restart apache2
Programmsuite für die kostenlosen letsencrypt Zertifikate installieren:
sudo apt-get install python-acme sudo apt-get install letsencrypt
Im Apache muss das Proxy-Modul aktiviert werden damit die Weiterleitung auf die Hoemmatic Zentrale funktioniert. Dazu muss man nur drei Links im Verzeichnis /etc/apache2/mods-enabled/ erstellen:
cd /ect/apache2/mods-enabled ln -s ../mods-available/proxy.conf ln -s ../mods-available/proxy_http.conf ln -s ../mods-available/proxy.load
Dann die /etc/apache2/sites-available/default-ssl.conf editieren:
mcedit /etc/apache2/sites-available/default-ssl.conf
Darin unter ServerAdmin die neue Zeile ergänzen: (ddns.meinserver.de durch euren DNS Namen ersetzen)
ServerName ddns.meinserver.de SSLEngine on
(Hier kommen die Einträge für das verwendete Zertifikat, die Dateioen dazu müssen in den entsprechenden Verzeichnissen abgelegt werden. cert.pem ist das Zertifikat, prickey.pem ist de private Schlüssel und chain.pem sind das Root und Intermediate-Zertifikat des Austellers letsencrypt oder andere) SSLCertificateFile /etc/apache2/ssl/cert.pem SSLCertificateKeyFile /etc/apache2/ssl/privkey.pem SSLCertificateChainFile /etc/apache2/ssl/chain.pem
Um den Zugriff nur für bestimmte Benutzer zu erlauben wird eine Datei konfiguriert in der Benutzer und Passwort stehen:
<Location /> AuthType basic AuthName "home" AuthUserFile /etc/apache2/datei_mit_benutzern Require valid-user </Location>
Dann noch der wichtigste Teil, die Konfiguration der Weiterleitung auf die CCU2/3, damit wird bewirkt das jeder Aufruf von /ccu auf die CCU2/3 weitergeleitet wird.: <IfModule mod_proxy.c> ProxyRequests off RewriteEngine On
redirectmatch ^/ccu$ /ccu/
rewritecond %{REQUEST_URI} ^/ccu/ rewriterule (.*) $1 [PT]
rewritecond %{HTTP_REFERER} https://mn.p7.de:83/ccu/ [OR] rewritecond %{HTTP_REFERER} https://mn.p7.de:83/webui/ [OR] rewritecond %{HTTP_REFERER} https://mn.p7.de:83/webui/js/extern [OR] rewritecond %{HTTP_REFERER} https://mn.p7.de:83/pda/ [OR] rewritecond %{HTTP_REFERER} https://mn.p7.de:83/api/ [OR] rewritecond %{HTTP_REFERER} https://mn.p7.de:83/addons/xmlapi/ [OR] rewritecond %{HTTP_REFERER} https://mn.p7.de:83/addons/cuxd/ [OR] rewritecond %{HTTP_REFERER} https://mn.p7.de:83/addons/cuxchart/ [OR] rewritecond %{HTTP_REFERER} https://mn.p7.de:83/ise/ [OR] rewritecond %{HTTP_REFERER} \?sid\=\@.+\@ [OR] rewritecond %{THE_REQUEST} \?sid\=\@.+\@
rewriterule ^/(.*) /ccu/$1 [PT] rewriterule ^/pda/(.*) /ccu/pda/$1 rewriterule ^/webui/(.*) /ccu/webui/$1 rewriterule ^/webui/js/extern/(.*) /ccu/webui/js/extern/$1 rewriterule ^/addons/db/(.*) /ccu/addons/db/$1 rewriterule ^/addons/xmlapi/(.*) /ccu/addons/xmlapi/$1 rewriterule ^/addons/cuxd/(.*) /ccu/addons/cuxd/$1 rewriterule ^/addons/cuxchart/(.*) /ccu/addons/cuxchart/$1 rewriterule ^/ise/(.*) /ccu/ise/$1
ProxyPass /ccu/ http://172.17.200.14/ timeout=1200 ProxyPassReverse /ccu/ http://172.17.200.14/ timeout=1200 </IfModule>
Danach muss der apache2 neu gestartet werden:
/etc/init.d/apache2 restart
Ein bisschen mehr Sicherheit, vor allem gegen Skript-Kiddies bekommt man indem man die Freigabe ins Internet (auf dem DSL-Router) nicht auf die Standardports 80 (http) oder 443 (https) konfiguriert.
Um die Tinymatic App so einzurichten das diese sich uber den oben eingerichteteten Apache Proxya synchronisiert brauchen wir jetzt folgende Daten:
Um jetzt per Tinymatic auf die CCU zuzugreifen muss Tinymatic folgendermasssen konfiguriert werden:
Die Einstellungen aufrufen:
dann die Serveradresse editieren und die offizielle DNS Namen eingeben (Also z.B. https://meinname.hm.de/ccu oder https://meinname.hm.de:455/ccu) und mit OK bestaetigen:
Dann auf „Netzwerkeinstellungen“ gehen und dort Haken bei „Fernzugriff aktivieren“ und „HTTPS verwenden“ setzen und dann auf „Entfernte CCU Adresse“ tippen:
Dort dann nochmal die o.a. Serveradresse eingeben, allerdings ohne das /ccu am Ende (Also z.B. https://meinname.hm.de oder https://meinname.hm.de:455):
Dann runterscrollen:
Dort dann den Haken bei „HTTP Authentifizierung“ setzen und nacheinander Benutzername und Passwort editieren und eingeben:
Dann wieder in die Einstellungen zurueckgehen und einmal „Vollständige Synchronisierung“ anklicken.