Discourse Docker neben Apache betreiben

Hallo.

Ich versuche, Discourse Docker auf meinem bestehenden Server einzurichten. Ich betreibe keine anderen Docker-Container.

Mein Server läuft mit Apache (WordPress-Websites) und einigen anderen Webdiensten.

Ich kann nicht herausfinden, wie ich mein Subdomain ‘forum.rebelscience.club’ an meinen Docker-Container weiterleiten soll.

Wenn ich folgende Frage gestellt bekomme:

Hostname für dein Discourse? [discourse.example.com]: forum.rebelscience.club

Sehe ich Folgendes:

Überprüfung deines Domainnamens . . .
WARNUNG: Port 443 des Computers scheint über den Hostnamen forum.rebelscience.club nicht erreichbar zu sein.
WARNUNG: Die Verbindung zu http://forum.rebelscience.club (Port 80) schlägt ebenfalls fehl.

Dies deutet darauf hin, dass forum.rebelscience.club auf eine IP-Adresse aufgelöst wird, die nicht zu diesem
Rechner führt, auf dem du Discourse installierst.

Das Erste, was zu tun ist, besteht darin, zu bestätigen, dass forum.rebelscience.club auf die IP-Adresse dieses Servers aufgelöst wird.
Dies geschieht in der Regel dort, wo du die Domain erworben hast.

Wenn du sicher bist, dass die IP-Adresse korrekt aufgelöst wird, könnte es ein Firewall-Problem sein.
Eine Websuche nach „Ports öffnen DEIN CLOUD-DIENST

Hallo @rebelCoder

Dieses Thema wurde hier im Meta-Bereich bereits ausführlich diskutiert; du kannst im Meta nach „Apache Reverse Proxy

3 „Gefällt mir“

Entschuldigung, ich hätte erwähnen sollen, dass ich bereits einige Lösungen aus diesem Forum und von Digital Ocean geprüft und ausprobiert habe. Aber es funktioniert immer noch nicht. Ich habe Docker noch nie zuvor eingerichtet.

Lassen Sie mich meine aktuellen Einstellungen teilen:

/etc/hosts:
127.0.0.1       forum.rebelscience.club

Die Hosts-Datei und der DNS-Eintrag funktionieren, da phpBB heute dort lief. Jetzt versuche ich, es auf einen Docker-Container mit Discourse umzuleiten.

In containers/app.yml

Ich habe die Ports aktualisiert:

expose:
  - "8081:80"   # http
  - "8443:443" # https

In /etc/apache2/sites-enabled/discourse.conf

<VirtualHost *:80>
  ServerName forum.rebelscience.club
  ServerAlias www.forum.rebelscience.club

  <IfModule proxy_module>
    ProxyPreserveHost on
    ProxyPass / http://localhost:8081/
    ProxyPassReverse / http://localhost:8081/
  </IfModule>
</VirtualHost>

Was übersehe ich noch? Die Ausführung von ./discourse-setup schlägt weiterhin mit der Meldung aus dem ursprünglichen Beitrag fehl.

Ich glaube, Sie sollten einen VirtualHost für Port 443 haben. Das heißt, der Fehler auf Port 80 ist seltsam. Vielleicht fehlt Ihnen etwas (ein CNAME?) in Ihrem DNS.

Das ist seltsam. Es scheint etwas zu umständlich einzurichten.

Ich habe nur einen A Record für forum.rebelscience.club.

Ich habe meine .conf-Dateien mit einem Zertifikat aktualisiert:

cat /etc/apache2/sites-enabled/discourse.conf

<VirtualHost *:80>
  ServerName forum.rebelscience.club
  ServerAlias www.forum.rebelscience.club

  <IfModule proxy_module>
    ProxyPreserveHost on
    ProxyPass / http://localhost:8081/
    ProxyPassReverse / http://localhost:8081/
  </IfModule>
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.forum.rebelscience.club [OR]
RewriteCond %{SERVER_NAME} =forum.rebelscience.club
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

cat /etc/apache2/sites-enabled/discourse-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerName forum.rebelscience.club
  ServerAlias www.forum.rebelscience.club

  <IfModule proxy_module>
    ProxyPreserveHost on
    ProxyPass / http://localhost:8081/
    ProxyPassReverse / http://localhost:8081/
  </IfModule>

SSLCertificateFile /etc/letsencrypt/live/forum.rebelscience.club/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/forum.rebelscience.club/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Jetzt sehe ich 503 Service Unavailable.

Ich bin völlig ratlos. Was muss ich noch tun? setup.sh schlägt weiterhin mit der ursprünglichen Fehlermeldung fehl.

Im obigen Fall (Beispielkonfiguration) sollten Sie nur den Port 8081 in Docker freigeben (und nicht den Port 80 oder den Port 443).

Die Ports 80 und 443 werden vom Reverse-Proxy außerhalb des Containers freigegeben, und dieser Verkehr wird an Port 8081 weitergeleitet (in Ihrem obigen Beispiel), den Port, den Sie innerhalb des Containers freigegeben haben (auf Port 80 gemappt).

Dies funktioniert nur, wenn Sie Port 80 innerhalb des Containers auf Port 8081 (für den Host freigegeben) gemappt haben.

expose:
  - "8081:80"   # http

Hoffentlich hilft das.

PS: @rebelCoder, Ihrer Apache2-Konfiguration auf der SSL-Seite fehlen viele erforderliche Konfigurationsdetails.

Siehe diesen Beitrag:

1 „Gefällt mir“

Dies ist kein Problem mehr und kann geschlossen werden.

Du kannst discourse-setup nicht verwenden. Du musst die app.yml-Datei manuell bearbeiten, wie in den Themen zum Betrieb mit Apache beschrieben.