FHEM Tutorial-Reihe - Part 21: Zugriff auf FHEM über das Internet (ReverseProxy)

Oft wurde es sich gewünscht - heute gehen wir das Thema an: Zugriff auf FHEM von überall auf der Welt! Wir gehen dabei aber nicht den 0815-Weg (Port-Forwarding auf 8083 + selbstsigniertes Zertifikat und Fehlermeldungen), sondern punkten mit einem gültigen Zertifikat, welches sich reglmäßig erneuert, einer sicheren Kommunikation über einen ReverseProxy und der Grundlage für ein einweiterbares System für den Zugriff auf weitere Dateien auf dem Raspberry Pi.

Was wird benötigt?

  • Eine echte Domain. DynDNS-Dienstleister arbeiten nicht mit LetsEncrypt zusammen
  • Eine IPv4-Adresse. DSLite oder IPv6 wird in diesem Tutorial nicht unterstützt
  • Eine FritzBox (optional, klappt auch mit anderen Routern)
  • Eine laufende FHEM-Installation (auf Debian)
  • Ein installierter Apache Webserver
  • Linux-Kenntnisse
  • Etwas Geduld

ALL-INKL.COM - Webhosting Server Hosting Domain Provider

Was wir tun:

  • Subdomain als DDNS anlegen (z.B. bei all-inkl.de)
  • FritzBox so konfigurieren, dass die richtige IP regelmäßig hinterlegt wird
  • Port-Forwarding auf Port 443 zum Raspberry Pi
  • Generierung des SSL-Zertifikates
  • Konfiguration des Apache Virtual Host

Alle Infos im Video:

Dir gefällt dieses Video? Dann lass mir doch gerne ein Abo da, um kein Video mehr zu verpassen!

Folgende Befehle brauchst Du:

cd /opt
sudo git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --help
./letsencrypt-auto certonly --rsa-key-size 4096 -d <domain>

Dann den Schritten im Setup (wie im Video gezeigt) folgen.

sudo a2enmod proxy proxy_http
sudo service apache2 restart
cd /etc/apache2/sites-available/
sudo vi <domain>.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName fhem.haus-automatisierung.com

    ServerAdmin info@haus-automatisierung.com
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/fhem.haus-automatisierung.com.error.log
    CustomLog ${APACHE_LOG_DIR}/fhem.haus-automatisierung.com.access.log combined

    SSLCertificateFile /etc/letsencrypt/live/fhem.haus-automatisierung.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/fhem.haus-automatisierung.com/privkey.pem

    Include /etc/letsencrypt/options-ssl-apache.conf

    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On

    <Location /fhem>
        ProxyPass http://localhost:8083/fhem
        ProxyPassReverse http://localhost:8083/fhem
    </Location>

    <Directory />
        RedirectPermanent / /fhem
    </Directory>

    <Proxy *>
        AuthType Basic
        AuthName "Password for FHEM Required"
        AuthUserFile /etc/fhem-htpasswd
        Require valid-user
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>
</IfModule>
sudo apt-get install libapache2-mod-proxy-html
cd /etc/apache2/sites-enabled
sudo ln -s ../sites-available/<domain>.conf .
sudo htpasswd -c -s /etc/fhem-htpasswd <username>
sudo a2enmod ssl proxy_html
sudo apachectl configtest
sudo service apache2 restart

Cronjob zur Zertifikatserneuerung:

crontab -e

Kleine Änderung gegenüber dem Video - der angegebene Befehl war falsch. Ich führe jetzt einfach täglich um 23 Uhr ein renew durch. Dieses erkennt automatisch, welche Zertifikate bald ablaufen und erneuert diese gegebenenfalls.

0 23 * * * /opt/letsencrypt/letsencrypt-auto renew && sudo service apache2 restart
Matthias Kleine

Matthias Kleine

Großer Fan und Anhänger von OpenSource-Projekten und erweiterbare Haus-Automatisierungskomponenten. Je offener und flexibler das System, desto besser. Ich lege mich ungern auf einzelne Protokolle oder Standards fest, sondern probiere aus allen Welten das Beste zu verheiraten. Hauptberuflich Softwareentwickler und Blogger, sowie Trainer im Bereich Smart Home mit FHEM.


** Wenn Du über einen dieser Links etwas kaufst, bekommen wir eine kleine Provision von Amazon. Das Produkt wird dadurch natürlich NICHT teurer.