Aktionen

Linux Cockpit hinter Subdomain statt Port 9090 per Apache Reverse Proxy

Aus znilwiki

Nach einem Artikel in der c't habe ich auf meine diversen Linux Servern die Software Cockpit getestet:

http://cockpit-project.org/

Per Default ist das Webinterface unter

https://ip-address-of-machine:9090

zu erreichen.
Ich wollte das ganze nun hinter eine Subdomain packen. Es reicht wenn man einen der Server erreichen kann, die anderen kann man dann diesem hinzufügen und dann umschalten.
Da Sockets eingesetzt werden war es zunächst ein wenig fummelei - aber google sei Dank fand sich eine Lösung.

1 Vorbereitung

  • Subdomain beim Provider oder im DNS anlegen und auf die externe IP des Linux-Hosts zeigen lassen
  • Subdomain im Apache2 anlegen
  • SSL Zertifikat für Subdomain erstellen, z.B. per Let's Encrypt
  • Cockpit installiert und den Dienst gestartet, lauscht hinter Port 9090



2 Apache Module nachinstallieren / aktiviern

Um den Apache auch als Reverse Proxy nutzen zu können brauch es ein paar Module die erst noch aktiviert werden müssen:

a2enmod rewrite
a2enmod proxy_http
a2enmod ssl

Im Anschluss ein

service apache2 restart

und es kann losgehen.



3 Reverse Proxy Konfiguration

Die Konfigurationsdatei der Subdomäne wird wie folgt angepasst:

<VirtualHost 192.168.45.10:80>
	ServerName cockpit.znil.org
	RewriteEngine On
	RewriteCond %{HTTPS} !=on
	RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

<VirtualHost 192.168.45.10:443>
	ServerName cockpit.znil.org
	ServerAdmin webmaster@cockpit.znil.org
	SSLCertificateFile /etc/letsencrypt/live/cockpit.znil.org/fullchain.pem
	SSLCertificateKeyFile /etc/letsencrypt/live/cockpit.znil.org/privkey.pem
	
	SSLProxyEngine On
	RequestHeader set Front-End-Https "On"
	ProxyPreserveHost On
	SSLProxyVerify none
	SSLProxyCheckPeerCN off
	SSLProxyCheckPeerName off
	SSLProxyCheckPeerExpire off
	ProxyPass / https://127.0.0.1:9090/
	ProxyPassReverse / https://127.0.0.1:9090/
	ProxyPass /socket ws://127.0.0.1:9090/socket
	ProxyPassReverse /socket ws://127.0.0.1:9090/socket
	
	<Location "/cockpit/socket">
		ProxyPass "wss://127.0.0.1:9090/cockpit/socket"
	</Location>
</VirtualHost>

Anpassen müsst Ihr

  • IP-Adresse (alternativ *:80 und *:443)
  • Servernamen
  • Pfad zu den Zertifikatsdateien


Nach einem Neustart des Apache sollte es funktionieren.


4 Kommentare


Flowzow

3 Monaten zuvor
Punktzahl 0++
Welche apache mods werden gebraucht? ssl-proxy und headers scheint nicht zu reichen

BLinz

3 Monaten zuvor
Punktzahl 0++
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.