Aktionen

PiKVM hinter Apache Reverse Proxy

Aus znilwiki

Changelog:

  • 2021-01-29 erste Version

1 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



2 Voraussetzungen Apache Reverse Proxy

Folgende Module des Apache müssen aktiviert sein:

a2enmod rewrite
a2enmod proxy_http
a2enmod ssl
a2enmod proxy_wstunnel



3 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 Encrypt Zertifikate erneuern mit Apache Reverse Proxy


4 Kommentare

Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen. Bei einem Kommentar wird deine IP-Adresse zusammen mit dem Text, den angegebenen Namen bzw. der Email-Adresse in der Datenbank für die Kommentare dauerhaft gespeichert. Genaueres kannst du hier nachlesen: Datenschutzerklärung

______________________________________________________

Bitte beachte das der eingetragene Name oder die Email-Adresse für jeden sichtbar ist!