Aktionen

PiKVM hinter Apache Reverse Proxy

Aus znilwiki

Changelog:

  • 2021-01-29 erste Version

Vorwort

Hurra! mein PiKVM läuft! Sogar mit einem zusätzlichen 4 Port HDMI/USB KVM Switch! https://github.com/pikvm/pikvm
Fehlt noch der Zugriff von extern darauf:

Ich betreibe eigentlich immer alles unter einer jeweils eigenen Subdomain hinter einem Apache Revers Proxy. Dieser verwaltet dann auch die dazu passenden Lets Encrypt Zertifikate
Dementsprechent wollte ich auch meinen PiKVM so erreichbar machen, scheiterte aber zunächst an der WebSocket Konfiguration. Ein wenig davon kannte ich schon Gucamole, aber es zickte Anfangs rum.
Wie so oft musste ich mir die Lösung aus vielen Quellen zusammensuchen

In diesem Beispiel gilt folgenden

192.168.178.2   = IP-Adresse des Apache Reverse Proxy Linux Servers (Ubuntu 20.04)
192.168.178.18  = IP-Adresse des PiKVM
kvm.znil.net    = Subdomain unter welcher der PiKVM per Reverse Proxy erreichbar sein soll



Voraussetzungen Apache Reverse Proxy

Folgende Module des Apache müssen aktiviert sein:

a2enmod rewrite
a2enmod proxy_http
a2enmod ssl
a2enmod proxy_wstunnel



Konfiguration der Subdomain

Hier eine eigene Konfigurationsdatei, angelegt als

/etc/apache2/sites-available/kvm.znil.net.vhost

mit folgendem Inhalt:

<VirtualHost 192.168.178.2:80>
        # Umleitung http zu https
        ServerName kvm.znil.net
        ServerAdmin webmaster@znil.net
        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

<VirtualHost 192.168.178.2:443>
        ServerName kvm.znil.net
        ServerAdmin webmaster@kvm.znil.net
        SSLEngine on
        SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
        SSLCertificateFile /etc/letsencrypt/live/kvm.znil.net/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/kvm.znil.org/privkey.pem

        SSLProxyEngine On
        SSLProxyVerify none
        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerName off
        SSLProxyCheckPeerExpire off

        RewriteEngine on
        RewriteCond ${HTTP:UPGRADE} ^WebSocket$ [NC]
        RewriteCond ${HTTP:CONNECTION} ^Upgrade$ [NC]
        RewriteRule .* wss:/192.168.178.18%{REQUEST_URI} [P,L]

        ProxyPass / https://192.168.178.18/
        ProxyPassReverse / https://192.168.178.18/

        <Location /api/ws>
                Order allow,deny
                Allow from all
                ProxyPass wss://192.168.178.18/api/ws
                ProxyPassReverse wss://192.168.178.18/api/ws
        </Location>

        ProxyRequests off
</VirtualHost>

Ihr müsste also alle

* 192.168.178.2 durch die lokale IP-Adresse von eurem Apache Revers Proxy ersetzen
* 192.168.178.18 durch die IP-Adresse eures PiKVM ersetzen
* kvm.znil.net durch eure Domäne/Subdomäne ersetzen
* webmaster@kvm.znil.net durch eine eurer Email-Adressen ersetzen
* /etc/letsencrypt/live/kvm.znil.net/ mit den Pfaden zu eurem Zertifikat ersetzen


Jetzt könnt die die Seite noch aktivieren

a2ensite kvm.znil.net.vhost

und den Apache neu starten:

systemctl restart apache2.service


Jetzt müsste es gehen!
Für die Verlängerung des Lets Encrypt Zertifikates empfehle ich euch Lets Encrypte Zertifikate erneuern mit Apache Reverse Proxy


Kommentare

Loading comments...