Reverse Proxy LAN

Hier kommt alles rein was nicht direkt zur OpenWB gehört.
Antworten
loni78
Beiträge: 27
Registriert: So Jul 28, 2019 9:51 pm

Reverse Proxy LAN

Beitrag von loni78 »

Hallo zusammen,

ich würde gerne die openWB im internen Lan hinter einem ReverseProxy betreiben. Hat das schon jemand mal hinbekommen?

Grüße
Rafael
Benutzeravatar
mrinas
Beiträge: 2144
Registriert: Mi Jan 29, 2020 10:12 pm
Has thanked: 8 times
Been thanked: 5 times

Re: Reverse Proxy LAN

Beitrag von mrinas »

wird vermutlich schwierig, neben den reinen HTTP Aufrufen gibts auch Kommunikation via MQTT, das wird über den ReversePRoxy nicht klappen.

Was genau hast Du denn vor?
15,2kWp SMA (SB4000TL-21, SB3.0, STP6.0-SE + BYD HVS, EnergyMeter), openWB Standard+, openWB Pro, Smart #1 (ersetzt den e2008), Tesla Model Y LR.
yankee
Beiträge: 481
Registriert: Sa Mai 16, 2020 11:34 am

Re: Reverse Proxy LAN

Beitrag von yankee »

loni78 hat geschrieben: Do Mär 18, 2021 3:20 pmich würde gerne die openWB im internen Lan hinter einem ReverseProxy betreiben. Hat das schon jemand mal hinbekommen?
Also ich habe zu Hause noch seperat einen kleinen SSH Server. Folgendes funktioniert:

Code: Alles auswählen

ssh user@myserver -D 5459
Dann im Browser SOCKS-Proxy auf localhost:5459 stellen, funktioniert alles.

Das hier funktioniert nicht so richtig:

Code: Alles auswählen

ssh user@myserver -L 5459:OPENWB_IP:80 -L 9001:OPENWB_IP:9001
Dann mit dem Browser auf http://localhost:5459. Also einmal auf Port 80 abgezielt für HTTP und einmal auf 9001 für websockets. Die Einstellungsseiten gehen alle, aber die Haupseite lädt nicht. "jQuery.Deferred exception: An invalid or illegal string was specified ClientImpl.prototype._doConnect@http://localhost:5459/openWB/web/js/mqttws31.js:916:23" kommt in der Konsole.

Es sagt leider nicht so genau warum. Ich vermute, dass openWB den Port nicht entfernt aus der URL und dann die MQTT-Adresse ohne Rücksicht darauf baut. Aber analysiert habe ich es nicht. Nimmt man jedoch:

Code: Alles auswählen

ssh user@myserver -L 80:OPENWB_IP:80 -L 9001:OPENWB_IP:9001
Und geht dann ohne Portangabe auf localhost, dann geht alles.

Ich vermute du denkst eher an einen "richtigen" reverse Proxy (Apache oder Squid oder so). Das sollte kein Problem sein. Warum nicht? Hast du denn shcon was ausprobiert?
mrinas hat geschrieben: Do Mär 18, 2021 8:13 pm wird vermutlich schwierig, neben den reinen HTTP Aufrufen gibts auch Kommunikation via MQTT, das wird über den ReversePRoxy nicht klappen.
MQTT geht in dem Fall über WebSockets und das kann auch ein ReverseProxy.
ralf22
Beiträge: 20
Registriert: Sa Mai 01, 2021 7:00 pm

Re: Reverse Proxy LAN

Beitrag von ralf22 »

Also ich hab das jetzt erfolgreich eingerichtet, Eckpunkte:
- Fritzbox Portforwarding nur ipv6
- ReverseProxy Nginx auf eigenem Raspi, dieser macht eine Client-Zertifikat-Validierung
- Eigene domain via dynv6.com ... update mit ddclient
- Letsencrypt Zertifikat für meine Domain
- Client-Zertifikat für die Authentifizierung generiert und auf dem iphone unter Device Management installiert

Die obigen Eckpunkte beschreibe ich jetzt nicht bzgl. der Einrichtung, da gibt es genügend Anleitungen im Netz, hier nur das Wichtigste:
- Fritzbox, reine Freigabe auf die ipv6-Adresse des Raspi für die Ports 80 (wegen letsencrypt), 443 (ssl) und 900 (ssl)
- ReverseProxy, siehe unten. Hier hab ich etwas gekniffelt, bis ich eine Konfiguration hatte die nur auf meinem Domain-Namen das Zertifikat verwendet und auch den WebSocket-Upgrade richtig macht. Wer sich beim Handshake nicht mit dem richtigen SNI meldet, bekommt nur ein Dummy-Zertifikat. Das ist ein Versuch der Verschleierung des Hostnames, falls nur jemand die IPv6 in die Hände bekommt. Mehr aber auch nicht, könnt ihr auch weglassen.
- wer will, dass das auch aus dem lokalen Netz aufrufbar ist muss in der Fritzbox bei DNS-Rebind die eigene Domain als Ausnahme eintragen

Hier die Konfiguration für /etc/nginx/sites-available/www.example.com:

Code: Alles auswählen

server {
        root /var/www/html;
        index index.html;
        listen [::]:443 ssl ipv6only=on; # managed by Certbot
        server_name www.example.com ; # managed by Certbot

        if ($host != www.example.com ) {
            return 404;
        }

        location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
        }

        ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

        ssl_client_certificate /path/to/cert/ca.crt;  # Path to your CA certificate for validating clients
        ssl_verify_client optional;

        location /openWB/ {
                if ($ssl_client_verify != SUCCESS) {
                        return 403;
                }
                proxy_pass http://192.168.178.200/openWB/;
                proxy_http_version 1.1;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
        root /var/www/html;
        index index.html;
        listen [::]:9001 ssl ipv6only=on;
        server_name www.example.com ;

        if ($host != www.example.com ) {
            return 404;
        }

        ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

        ssl_client_certificate /path/to/cert/ca.crt;  # Path to your CA certificate
        ssl_verify_client optional;

        location / {
               if ($ssl_client_verify != SUCCESS) {
                       return 403;
                }
                proxy_pass http://192.168.178.200:9001;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }
}

# Default server block to reject all other domains
server {
        listen [::]:443 ssl default_server;
        listen [::]:9001 ssl default_server;
        server_name _;

        ssl_certificate /path/to/cert/default_dummy/dummy.crt;
        ssl_certificate_key /path/to/cert/default_dummy/dummy.key;

        return 444;
}

server {
        if ($host = www.example.com ) {
                return 301 https://$host$request_uri;
        } # managed by Certbot

        listen [::]:80 ;
        server_name www.example.com ;
        return 404; # managed by Certbot
}
Bin auf Feedback gespannt.
derNeueDet
Beiträge: 4447
Registriert: Mi Nov 11, 2020 7:16 pm
Has thanked: 4 times
Been thanked: 26 times

Re: Reverse Proxy LAN

Beitrag von derNeueDet »

Im Endeffekt baust du ein SSL VPN mit nem Client Zertifikat auf.

Die Einrichtung ist nicht trivial, ich hab das auch schon mal mut ner FHEM Instanz getestet, habs dann aber wieder zurück gebaut, da mir die Verteilung von Client Zertifikaten auf alle möglichen Clients zu aufwändig war.

IPSec VPN der Fritz Box hatte ich überall schnell eingerichtet. Und seit Wireguard ist das Handling ja noch einfacher und seit ein paar Wochen auch auf meiner "alten" 7490 verfügbar.

VG
Det
10kWp PV mit SMA Tripower 10000TL-10 (PE11 mit SDM72V2); 2,4kWp mit Solis 2.5 G6 (EE11 mit SDM120). OpenWB Standard+. EVU EM540 an einem Raspi mit Venus OS. BEV Mercedes EQA 300 (06/2024)
openWB
Site Admin
Beiträge: 8482
Registriert: So Okt 07, 2018 1:50 pm
Has thanked: 1 time
Been thanked: 24 times

Re: Reverse Proxy LAN

Beitrag von openWB »

Schön gemacht, aber nicht trivial!
Dabei nicht vergessen das software2 derweil eine vollwertige Cloud hat.
Supportanfragen bitte NICHT per PN stellen.
Hardwareprobleme bitte über die Funktion Debug Daten senden mitteilen oder per Mail an support@openwb.de
aiole
Beiträge: 7735
Registriert: Mo Okt 08, 2018 4:51 pm
Has thanked: 14 times
Been thanked: 31 times

Re: Reverse Proxy LAN

Beitrag von aiole »

openWB hat geschrieben: Di Nov 07, 2023 6:42 am Schön gemacht, aber nicht trivial!
Dabei nicht vergessen das software2 derweil eine vollwertige Cloud hat.
und das läuft richtig gut!
Antworten