FHEM absichern ist sehr wichtig egal ob Sie auf die FHEM Oberfläche intern (Heimnetzwerk) oder von außen (Internet) zugreifen. Die Weboberfläche müssen Sie mit Benutzername und Password absichern. So ist jeder Zugriff auf die FHEM Oberfläche mit Browser, Smartphone oder Tablett gesichert. Dazu muss der Benutzername und das Kennwort Base64 codiert werden. Unter Raspberry Pi OS muss folgendes im Terminal eingegeben werden:

Seiteninhalt:
FHEM Webzugriff absichern
echo -n benutzername:passwort | base64
Das Ergebnis ist in Form YmVudXR6ZXJuYW1lOnBhc3N3b3J0, dann müssen Sie diese Zeichenkette in die FHEM Befehlsleiste eingeben. Einfacher geht auch mit online Encoder unter base64encode.
attr WEB basicAuth YmVudXR6ZXJuYW1lOnBhc3N3b3J0
####################################################
attr WEBphone basicAuth YmVudXR6ZXJuYW1lOnBhc3N3b3J0
####################################################
attr WEBtablet basicAuth YmVudXR6ZXJuYW1lOnBhc3N3b3J0
####################################################
mit "Save" speichern und "shutdown restart" ausführen
FHEM absichern mit Reverse Proxy
Der Reverse Proxy holt Ressourcen für einen externen Client (Zugriff z.B. von Außen) von einem oder mehreren internen Servern. Die wahre Adresse des internen Zielsystems bleibt dem externen Client verborgen. Das unterscheidet ihn vom typischen Proxy, der mehreren Clients eines internen (in sich abgeschlossenen) Netzes den Zugriff auf ein externes Netz gewährt (Auszug Wikipedia).
Was wollen wir damit genau tun:
- Apache Server installieren.
- Reverse Proxy einrichten.
- DynDNS einrichten und Zugriff über Internet mit eindeutigen Namen sichern, unabhängig davon ob die IP Adresse von DSL Anschluss sich geändert hat (zum Beispiel https://myfhem.dyndns.info).
- Letsencrypt Zertifikat installieren, so ist SSL Zugriff von Außen zertifiziert und keine Browser oder App macht uns Probleme.
Apache Server installieren
Bevor Sie anfangen, sollten Sie ihren Raspberry Pi auf den neusten stand bringen. Das erledigen Sie über das Terminal (Windows Benutzer mit Putty SSH Client) mit folgenden Befehlen:
sudo apt-get update
sudo apt-get upgrade
Jetzt installieren wir Apache 2 Webserver.
sudo apt install apache2
#########################
Als nächstes werden die benötigten Rechte angelegt.
#########################
sudo chown -R www-data:www-data /var/www/html/
sudo chmod -R 770 /var/www/html/
Jetzt ist schon möglich Apache Webserver zu testen, er meldet sich unter: http://Raspberry Pi IP Adresse.

FHEM absichern mit Reverse Proxy
Unter Raspberry Pi OS wird das Proxy Modul direkt mit der Installation des Apache Webserver mit installiert. Verwendet man eine andere Distribution muss dieses entsprechend nachinstalliert werden. Jetzt aktivieren wir Proxy Modul mit:
sudo a2enmod proxy proxy_http
#######################################
Wenn nicht vorhanden installieren mit:
#######################################
sudo apt-get install libapache2-mod-proxy-html
Als nächstes legt man und aktiviert eine default Konfigurationen für das Proxy Modul an.
sudo nano /etc/apache2/conf-available/proxy_default.conf
#########################################
Tragen wir ein:
#########################################
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</IfModule>
##########################################
Diese Konfiguration wird jetzt aktiviert.
##########################################
sudo a2enconf proxy_default
Eine neue Konfigurationsdatei fhem.conf anlegen und aktivieren:
sudo nano /etc/apache2/conf-available/fhem.conf
##################################
Tragen wir ein:
##################################
<IfModule mod_proxy.c>
<Location /fhem>
ProxyPass http://localhost:8083/fhem
ProxyPassReverse http://localhost:8083/fhem
</Location>
</IfModule>
##################################
Aktivieren mit:
##################################
sudo a2enconf fhem
##################################
Apache Webserver neustarten
##################################
sudo service apache2 restart
FHEM absichern DynDNS einrichten
Bis jetzt haben wir die FHEM Oberfläche mit Benutzername und Passwort gesichert, Apache Webserver installiert und FHEM absichern mit Reverse Proxy durchgeführt. Bleibt uns DynDNS und Letsencrypt einrichten. Zuerst geht weiter mit DynDNS, hier ist eine Liste mit verschiedenen Anbieter. Einfach gewünschte Anbieter (unsere Empfehlung spdyn.de) auswählen und automatische DynDNS Aktualisierung gemäß Anbieter Anleitung durchführen.

Der beste Weg geht über die Fritzbox selbst, denn AVM bietet DynDNS unter dem Namen MyFritz an. Das ist zuverlässig, aber nicht jeder hat Fritzbox und andere möchte die AVM eigene Angebot für DynDNS nicht nutzen.
FHEM absichern mit Letsencrypt
Die Letsencrypt Zertifikate sind kostenlos. Der Anbieter hat die Beantragung automatisiert. Das Zertifikat ist nur 3 Monate gültig, was jedoch kein Problem ist, weil wir automatisch und rechtzeitig das Zertifikat verlängern. Es muss auf Raspberry Pi ein Certbot installiert werden, der diese Aufgabe übernimmt. Bevor wir starten, stoppen wir Apache Server und am Router öffnen wir Port 80 und 443.

sudo service apache2 stop
sudo apt-get update
sudo apt-get install git
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --verbose --apache -d <domainname>
Mit Cron automatisieren wir das Letsencrypt Zertifikat- Verlängerung.
sudo crontab -e
####################
Verlängerung immer am 01. jeder 2 Monat um 4:00
####################
* 4 1 1/2 * /home/pi/letsencrypt/letsencrypt-auto renew
Starten wir Apache Server wieder mit sudo service apache2 start. FHEM ist jetzt unter: https://meine DynDNS/fhem erreichbar.
Wir haben dir mit “FHEM absichern – Clever mit Rev3rse Proxy” Artikel weitergeholfen? Dann zeig dich erkenntlich und empfiehlst uns weiter. Vielen Dank schon mal!
Hallo bei mir hapert es nach dem Schritt: CD /letsencrypt
pi@FhemServer:~ $ cd letsencrypt
pi@FhemServer:~/letsencrypt $ ./letsencrypt-auto –verbose –apache -d
-bash: Syntaxfehler beim unerwarteten Wort `newline‘
pi@FhemServer:~/letsencrypt $ ./letsencrypt-auto –verbose –apache -d holger-xxxx.xxx.xxx
-bash: ./letsencrypt-auto: Datei oder Verzeichnis nicht gefunden
Das ist im Verzeichnis:
pi@FhemServer:~/letsencrypt $ dir
acme certbot-nginx
AUTHORS.md CHANGELOG.md
certbot CODE_OF_CONDUCT.md
certbot-apache CONTRIBUTING.md
certbot-ci docker-compose.yml
certbot-compatibility-test Dockerfile-dev
certbot-dns-cloudflare letsencrypt-auto-source
certbot-dns-cloudxns letstest
certbot-dns-digitalocean LICENSE.txt
certbot-dns-dnsimple linter_plugin.py
certbot-dns-dnsmadeeasy mypy.ini
certbot-dns-gehirn pytest.ini
certbot-dns-google README.rst
certbot-dns-linode snap
certbot-dns-luadns tests
certbot-dns-nsone tools
certbot-dns-ovh tox.cover.py
certbot-dns-rfc2136 tox.ini
certbot-dns-route53 windows-installer
certbot-dns-sakuracloud
Was kann ich tun wie geht’s weiter?
Apache zuerst stoppen (sudo service apache2 stop) und dann Letsencrypt ausführen.
Siehe Anleitung.