Hin und wieder gibt es den Wunsch, eine Anwendung die auf einem Raspberry Pi läuft, via Webserver zu erreichen. Hat den Vorteil das man kein VPN, keine weitere Portfreigabe und man sich nicht die Portnummer der Anwendung merken muss.
Eingerichtet ist es mit „openwebrx“ da die Anwendung auf einem Raspberry Pi läuft. Mit dieser Anwendung kann man mit einem einfachen USB TV-Stick alle Amateurfunk Frequenzen abhören. Inzwischen wurde das Projekt zwar eingestellt, doch Jakob DD5JFK hat einen Forke aufgesetzt. Das Programm wird von ihm weiterentwickelt und programmiert. Es gibt auch ein komplettes Raspberry Image zum Download. Erreichbar ist das neue Projekt unter der Webseite :
https://www.openwebrx.de/
So sieht die Anwendung aus wenn diese erfolgreich gestartet ist und über den Browser aufgerufen wird.
Wenn „openwebrx“ auf dem Rasperry Pi installiert ist und läuft ist die Anwendung über folgende URL’s im eigens lokalen Netzwerk erreichbar:
- http://openwebrx.local
- http://openwebrx.local:8073
Nehmen wir folgende technischen Daten als Basis:
- URL „openwebrx.local“ lokale IP-Adresse 192.168.1.10
- Apache Webserver IP-Adresse 192.168.1.20
- Apache Webserver via Internet erreichbar
- DNS-Name „webserver.ddns.net“ für Apache
- Virtuelle Maschine mit installiertem Apache Webserver (Lokales Netzwerk)
- Portfreigabe am Router zu Port 80 und 443
- DNS-Eintrag z.B. bei www.noip.com
Dazu richten wir erst mal einen Virtuellen Host ein für den HTTP Port 80. Dazu erstellen wir eine Datei unter „/etc/apache2/site-avaliable/openwebrx.conf“ mit folgenden Inhalt:
HINWEIS:
Wichtig ist hier dass der Port 8073 eingetragen wird und auch abschließende Trailing Slashes genutzt werden „http://xxxx/“. Es muss exakt wie es in der Konfiguration unter <Location> angegeben ist, eingetragen werden, sonst funktioniert der Webserver nicht und die Anwendung ist nicht erreichbar oder funktioniert nicht zu 100%. Auch die Datei „openwebrx.conf“ in der Apache Konfiguration so benennen sonst funktionieren anschließende Shell Befehle nicht. Also bitte exakt nach Dokumentation vorgehen und nichts hinzufügen, nichts ändern und nichts weglassen. IP-Adressen und DNS-Namen dürfen natürlich geändert und müssen angepasst werden.
<VirtualHost *:80> ServerName webserver.ddns.net ServerAdmin webmaster@localhost DocumentRoot /var/www/vhosts/openwebrx/htdocs ProxyPreserveHost On ProxyRequests Off ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Location /rx/> ProxyPass http://192.168.1.10:8073/ ProxyPassReverse http://192.168.1.10:8073/ RewriteEngine on RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC] </Location> <Location /rx/ws/> ProxyPass ws://192.168.1.10:8073/ws/ ProxyPassReverse ws://192.168.1.10:8073/ws/ RewriteEngine on RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC] </Location> </VirtualHost>
Dann müssen im Apache Webserver ein paar Module und Konfigurationen aktiviert und geladen werden:
sudo a2enmod proxy_wstunnel sudo a2enmod proxy sudo a2enmod proxy_balancer sudo a2enmod proxy_connect sudo a2enmod proxy_http sudo a2ensite openwebrx sudo service apache2 restart
Eine letzte Änderung auf dem Raspberry Pi wegen openwebrx in der Datei :
„etc/openwebrx/config_webrx.py“
server_hostname = "webserver.ddns.net/rx/"
sudo service openwebrx restart
Das sollte alles gewesen sein und der Raspberry Pi mit openwebrx unter „http://webserver.ddns.net/rx/“ erreichbar sein. Wenn alles richtig und korrekt eingetragen ist, steht dem Spaß nichts mehr im Weg.
Diese Konfiguration dient auch als Beispiel für viele andere Webanwendungen, wie zB. owncloud, nextcloud, Alfresco CMS, JITIS Videoserver, NodeRED, Smarthome, IoT Anwendungen usw. Also eigentlich alles was einen eigenen Port hat kann so in dieser Form an einen bestehenden Webserver angebunden werden.
Hier ein Beispiele wie es aussehen könnte mit einem oder mehrere virtuelle Webserver:
- Internet Router <-> Webserver:80 <-> Anwendung openwebrx <-> Location /rx
- Internet Router <-> Webserver:80 <-> Anwendung smarthome <-> Location /smarthome
- Internet Router <-> Webserver:80 <-> Anwendung nodered <-> Location /red
- Internet Router <-> Webserver:443 <-> Anwendung openwebrx <-> Location /rx
- Internet Router <-> Webserver:443 <-> Anwendung smarthome <-> Location /smarthome
- Internet Router <-> Webserver:443 <-> Anwendung nodered <-> Location /red
- Internet Router <-> Smarthome:443 <-> Anwendung smarthome <-> Location /smarthome
- Internet Router <-> Smarthome:443 <-> Anwendung nodered <-> Location /red
Weitere Namensbeispiele zum trennen von Anwendungen.
Trick: hier werden ebenfalls keine weitere Portfreigaben benötigt sondern wird nur die einzige bereits existierende Portfreigabe genutzt.
- webserver.ddns.net
- openwebrx.ddns.net
- smarthome.ddns.net
Schlußwort:
Die ganze Sache hat einen riesigen Vorteil, es muss nicht für jede neue Anwendung eine eigene Freischaltung auf den Internet Router eingetragen werden. Es benötigt genau eine einzige Portfreischaltung und zwar die zum Apache Webserver mit Port 80 und 443 für SSL/TLS Verschlüsselung. Als DNS-Provider benutze ich https://www.noip.com/, damit kann ich bis zu 25 verschiedene DNS-Namen einrichten (Bezahlaccount) und somit auf den Webserver mehrere virtuelle Server entsprechend der Anwendung aufbauen.
Wünsche viel Spaß beim basteln und bei Fragen wie immer die Kommentarfunktion unter dem Artikel nutzen.
Beste Grüße , Joachim
Zusammen Großes erreichen Egal ob einmalige Spende oder monatliche Mitgliedschaft, eure Unterstützung ist der Motor hinter meiner Leidenschaft. Jeder Beitrag fließt direkt in die Verbesserung der Qualität meiner Beiträge und die Vielfalt der behandelten Themen. Ich bin unglaublich dankbar für jede Form der Unterstützung, die ihr wählt. Besuche einfach meine Ko-fi-Seite unter https://ko-fi.com/joachimh.
Zwei Fragen zu meinem Verständnis:
Der Reverse Proxy läuft nicht auf dem RPi auf dem OpenWebRX läuft?
Agiert der Reverse Proxy nur im LAN oder sind die Clienten per WLAN am RPi angeschlossen?
Beste Grüße
Mathias
Hallo Mathias
richtig , der Reverse Proxy läuft nicht auf dem openwebrx, sondern lokal bei mir im Netz als virtuelle Maschine auf einem Synology NAS.
Der Reverse Proxy kommuniziert mit allen Rechnern oder Raspberry Pi’s die im Netz sind unabhängig ob Ethernet oder WLAN.
Grüße Joachim