Skonfiguruj serwer owncloud i serwer rocket.chat na jednym komputerze / ip za routerem

1

Mam następujący scenariusz:

Mam statyczny adres IP od mojego dostawcy Internetu. Korzystam z tego od lat na małym serwerze raspbian na malinowym PI z uruchomioną owncloud.

Kupiłem teraz o wiele mocniejsze pudełko zotac (czterordzeniowy procesor, 8 GB RAM, 256 GB SSD) i próbuję uzyskać zarówno serwer owncloud uruchomiony na https, jak i serwer rocket.chat (podobny do Slack) który oczywiście powinien również działać na https.

Pudełko Zotac obsługuje Ubuntu Server 18.04 LTS i znajduje się za routerem Airport Extreme. Mam 2 różne subdomeny w mojej głównej domenie wskazujące na mój adres IP.

Skonfigurowałem routing dla portów 80, 443i 8443aby wszystkie były kierowane na lokalny adres IP mojego pudełka zotac 192.168.1.33. Przykład:

wprowadź tutaj opis obrazu

Serwer owncloud (Apache 2 z PHP 7.2 i MySQL 5.7) działa https://cloud.mydomain.examplei chcę teraz pracować nad rocket.chat https://chat.mydomain.example:8443, a nawet lepiej https://chat.mydomain.com.

Rocket.chat jest instalowany w snapie, gdzie rocket.chat działa na serwerze caddy localhost:3000. Próbowałem postępować zgodnie z konfiguracją https opisaną na https://rocket.chat/docs/installation/manual-installation/ubuntu/snaps/autossl/, ale nie udało mi się go uruchomić. Próbowałem także skonfigurować Apache, który uruchamia serwer owncloud, aby działał jako odwrotne proxy, jak opisano w https://stackoverflow.com/questions/8541182/apache-redirect-to-another-port , ale nie udało się to działa.

Następnie próbowałem skonfigurować host wirtualny dla portu 8443 za pomocą tego pliku rocketchat.conf:

<VirtualHost *:8443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
    SSLCertificateKeyFile /etc/private/ssl/apache-selfsigned.key
    ServerAdmin [email protected]
    ServerName localhost
    ProxyPreserveHost On

    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / https://localhost:3000/
    ProxyPassReverse / https://localhost:3000/
</VirtualHost>

Nie rozumiem też, dlaczego nie mogę po prostu zmusić mojego caddy do słuchania na porcie 8443 (i nadal używać https), podczas gdy Apache słucha na 80 i 443.

Jaka byłaby optymalna konfiguracja dla mojego scenariusza? Jakie kroki należy podjąć?

connexo
źródło

Odpowiedzi:

2

Myślę, że oficjalna dokumentacja Rocket.Chat jest wystarczająco jasna:

Działa za serwerem odwrotnym Apache SSL Reverse

Uruchom to jako root:

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

Dodaj swój klucz prywatny do /etc/ssl/private/chat.domain.com.key

Zablokuj uprawnienia: chmod 400 /etc/ssl/private/chat.domain.com.key

Dodaj swój certyfikat do /etc/ssl/certs/chat.domain.com.crt

Dodaj swój średniozaawansowany do /etc/ssl/certs/intermediate.ca.pem

Edytuj /etc/apache2/sites-enabled/rocketchat.confi upewnij się, że używasz rzeczywistej nazwy hosta zamiast przykładowej nazwy hosta „twoja_nazwa_hosta.com” poniżej.

<VirtualHost *:443>

ServerAdmin [email protected]
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 %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*)           ws://localhost:3000/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*)           http://localhost:3000/$1 [P,L]

ProxyPassReverse / http://localhost:3000/
</VirtualHost>

Uruchom ponownie Apache: service apache2 restart

Kiedy to mówi

pamiętaj, aby użyć rzeczywistej nazwy hosta zamiast przykładowej nazwy hosta „twoja_nazwa_hosta.com”

to prawdopodobnie znaczy

pamiętaj, aby https://www.example.comzamiast swojego adresu użyć rzeczywistego zewnętrznego adresu https (np. )http://localhost:3000

Rzemiosło
źródło
Jak już wspomniałem, port 443 jest już używany w Apache dla owncloud. Dlatego nawet nie zacząłem konfigurować Apache2 jako odwrotnego proxy z tak długim wyjaśnieniem. Potrzebuję rozróżnienia na podstawie rzeczywistej nazwy serwera, a nie portu. Dlatego zamierzałem użyć portu 8443. Czy możesz mieć dwa różne pliki hostów wirtualnych, zaczynając od <VirtualHost :*443>?
connexo
1
Tak ! Możesz użyć *: 443 dla wielu hostów. Upewnij się, że używasz innej nazwy serwera.
Craft
@connexo Dla portu 443 mechanizmem, który pozwala to zrobić, jest Wskazanie nazwy serwera .
Anaksunaman