Raspberry Pi 4

Zugriff auf openwebrx über Apache als Reverse Proxy

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.

openwebrx via apache reverse proxy
openwebrx im Browser

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:

  1. Internet Router <-> Webserver:80 <-> Anwendung openwebrx <-> Location /rx
  2. Internet Router <-> Webserver:80 <-> Anwendung smarthome <-> Location /smarthome
  3. Internet Router <-> Webserver:80 <-> Anwendung nodered <-> Location /red
  4. Internet Router <-> Webserver:443 <-> Anwendung openwebrx <-> Location /rx
  5. Internet Router <-> Webserver:443 <-> Anwendung smarthome <-> Location /smarthome
  6. Internet Router <-> Webserver:443 <-> Anwendung nodered <-> Location /red
  7. Internet Router <-> Smarthome:443 <-> Anwendung smarthome <-> Location /smarthome
  8. 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.

Wir benötigen Ihre Zustimmung um den Inhalt von YouTube laden zu können.

Mit dem Klick auf das Video werden durch den mit uns gemeinsam Verantwortlichen Youtube [Google Ireland Limited, Irland] das Video abgespielt, auf Ihrem Endgerät Skripte geladen, Cookies gespeichert und personenbezogene Daten erfasst. Damit kann Google Aktivitäten im Internet verfolgen und Werbung zielgruppengerecht ausspielen. Es erfolgt eine Datenübermittlung in die USA, diese verfügt über keinen EU-konformen Datenschutz. Weitere Informationen finden Sie hier.

Jmx0O2lmcmFtZSB0aXRsZT0mcXVvdDtTYXRlbGxpdGVuIEVtcGZhbmcgZGVzIFFPLTEwMCBtaXQgb3BlbndlYnJ4JnF1b3Q7IHdpZHRoPSZxdW90OzEyMDAmcXVvdDsgaGVpZ2h0PSZxdW90OzY3NSZxdW90OyBzcmM9JnF1b3Q7aHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvdnBqVy1zdGFUOHM/ZmVhdHVyZT1vZW1iZWQmcXVvdDsgZnJhbWVib3JkZXI9JnF1b3Q7MCZxdW90OyBhbGxvdz0mcXVvdDthY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlOyB3ZWItc2hhcmUmcXVvdDsgYWxsb3dmdWxsc2NyZWVuJmd0OyZsdDsvaWZyYW1lJmd0Ow==

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.

Joachim

Aus Leidenschaft für Technik. Aktuelle Themen sind Datensicherheit, Software für Datenschutz, Mobile Geräte, Smartphone Sicherheit und Anwendungen, Raspberry Pi Geek.

Alle Beiträge ansehen von Joachim →

3 Gedanken zu “Zugriff auf openwebrx über Apache als Reverse Proxy

  1. 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

    1. 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert