Richten Sie den owncloud-Server und den rocket.chat-Server auf einem einzelnen Computer / einer IP-Adresse hinter einem Router ein

740
connexo

Ich habe folgendes Szenario:

Ich habe eine statische IP-Adresse von meinem Internetanbieter. Ich habe das seit Jahren auf einem kleinen Raspbian-Server auf einem Himbeer-PI, der owncloud läuft, ausgenutzt.

Jetzt habe ich mir eine viel leistungsfähigere Zotac-Box (Quad-Core-Prozessor, 8 GB RAM, 256 GB SSD) gekauft und versuche, einen owncloud-Server auf https und einen rocket.chat-Server (ähnlich wie Slack) zum Laufen zu bringen. was natürlich auch auf https laufen sollte.

Die Zotac-Box läuft mit Ubuntu Server 18.04 LTS und befindet sich hinter einem Airport Extreme-Router. Ich habe in meiner Hauptdomäne 2 verschiedene Subdomains, die auf meine IP-Adresse verweisen.

Ich habe für die Ports konfiguriert Routing 80, 443und 8443alle lokalen meiner zotac Box‘IP - Adresse gerichtet bekommen 192.168.1.33. Beispiel:

enter image description here

Der owncloud-Server (Apache 2 mit PHP 7.2 und MySQL 5.7) funktioniert https://cloud.mydomain.exampleund ich möchte, dass rocket.chat nun https://chat.mydomain.example:8443oder besser noch funktioniert https://chat.mydomain.com.

Rocket.chat kommt als Snap-Installation, bei der Rocket.chat auf einem Caddy-Webserver läuft localhost:3000. Ich habe versucht, dem https-Setup unter https://rocket.chat/docs/installation/manual-installation/ubuntu/snaps/autossl/ zu folgen, konnte es jedoch nicht zum Laufen bringen. Ich habe auch versucht, den Apache, auf dem der owncloud-Server ausgeführt wird, als Reverse-Proxy einzurichten, wie in https://stackoverflow.com/questions/8541182/apache-redirect-to-another-port beschrieben, konnte es jedoch nicht Lass es funktionieren.

Dann habe ich versucht, mit dieser Datei rocketchat.conf einen virtuellen Host für Port 8443 einzurichten:

<VirtualHost *:8443> SSLEngine on SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/private/ssl/apache-selfsigned.key ServerAdmin admin@example.com ServerName localhost ProxyPreserveHost On  <Proxy *> Order allow,deny Allow from all </Proxy> ProxyPass / https://localhost:3000/ ProxyPassReverse / https://localhost:3000/ </VirtualHost> 

Ich verstehe auch nicht, warum ich meinen Caddy nicht einfach auf Port 8443 zum Hören bringen kann (und immer noch https verwendet), während der Apache auf 80 und 443 lauscht.

Welches wäre das optimale Setup für mein Szenario? Was wären die erforderlichen Schritte?

1

1 Antwort auf die Frage

2
Craft

Ich denke die offizielle Dokumentation von Rocket.Chat ist klar genug:

Läuft hinter einem Apache SSL Reverse Proxy

Führen Sie dies als root aus:

apt-get update apt-get install apache2 a2enmod proxy_http a2enmod proxy a2enmod ssl a2enmod proxy_wstunnel a2enmod rewrite 

Fügen Sie Ihren privaten Schlüssel zu hinzu /etc/ssl/private/chat.domain.com.key

Berechtigungen sperren: chmod 400 /etc/ssl/private/chat.domain.com.key

Fügen Sie Ihr Zertifikat zu /etc/ssl/certs/chat.domain.com.crt

Fügen Sie Ihr Zwischenprodukt hinzu /etc/ssl/certs/intermediate.ca.pem

Bearbeiten /etc/apache2/sites-enabled/rocketchat.confSie den aktuellen Hostnamen und geben Sie an Stelle des Beispiel-Hostnamens "Ihr_Hostname.com" unten Ihren aktuellen Hostnamen ein.

<VirtualHost *:443>  ServerAdmin it@domain.com ServerName chat.domain.com ErrorLog /var/log/chat.domain.com_error.log TransferLog /var/log/chat.domain.com_access.log LogLevel info SSLEngine On SSLCertificateFile /etc/ssl/certs/chat.domain.com.crt SSLCertificateKeyFile /etc/ssl/private/chat.domain.com.key SSLCertificateChainFile /etc/ssl/certs/intermediate.ca.pem  <Location /> Order allow,deny Allow from all </Location>  RewriteEngine On RewriteCond % =websocket [NC] RewriteRule /(.*) ws://localhost:3000/$1 [P,L] RewriteCond % !=websocket [NC] RewriteRule /(.*) http://localhost:3000/$1 [P,L]  ProxyPassReverse / http://localhost:3000/ </VirtualHost> 

Apache neu starten: service apache2 restart

Wenn es heißt

Stellen Sie sicher, dass Sie Ihren tatsächlichen Hostnamen anstelle des Beispiel-Hostnamens "Ihr_Hostname.com" verwenden.

es bedeutet wahrscheinlich

Vergewissern Sie sich, dass Sie stattdessen Ihre tatsächliche externe https-Adresse (z. B. https://www.example.com) verwendenhttp://localhost:3000

Wie bereits erwähnt, wird Port 443 auf dem Apache für owncloud bereits verwendet. Aus diesem Grund habe ich nicht einmal mit der Konfiguration von Apache2 als Reverse-Proxy mit dieser langen Erklärung begonnen. Ich brauche eine Differenzierung basierend auf dem tatsächlichen Servernamen, nicht auf dem Port. Deshalb wollte ich Port 8443 verwenden. Oder haben Sie zwei verschiedene virtuelle Hostdateien, die beide mit `beginnen"? connexo vor 6 Jahren 0
Ja ! Sie können *: 443 für mehrere vhost verwenden. Stellen Sie sicher, dass Sie einen anderen Servernamen verwenden. Craft vor 6 Jahren 1
@connexo Für Port 443 ist der Mechanismus, mit dem Sie dies tun können, [Server Name Indication] (https://en.wikipedia.org/wiki/Server_Name_Indication). Anaksunaman vor 6 Jahren 0