Discourse in UNRAID Ubuntu Server VM hinter NPM Reverse Proxy installiert, löst Hostnamen nicht auf

Hallo zusammen! Ich habe verschiedene Beiträge hier gelesen, ohne Erfolg, daher dachte ich, ich würde mein aktuelles Setup im Detail erklären, in der Hoffnung, dass jemand Feedback für mich hat, um das Problem zu lösen.

Ich betreibe derzeit einen Unraid-Server. Unraid hostet Docker-Container sowie VMs. Ich habe einen Nginix Reverse Proxy Manager (NPM) in einem Docker-Container laufen, der Reverse-Proxies für alle meine anderen Docker-Container verwaltet. Meine Firewall ist so eingestellt, dass sie allen WAN-Verkehr auf den Ports 80/443 an NPM sendet, und ich leite den Verkehr innerhalb von NPM an meine Container weiter.

Ich bin der folgenden Anleitung gefolgt: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

Sie gibt zwar an, dass sie für die Installation auf einem Cloud-Server ist, aber meiner ist eine selbst gehostete Bare-Metal-Maschine.

Systeminformationen vom So, 28. Jan. 07:35:54 UTC 2024

  Systemlast:              0.5126953125
  Auslastung von /:               45.9% von 13.16GB
  Speicherauslastung:             6%
  Swap-Auslastung:                0%
  Prozesse:                125
  Angemeldete Benutzer:          0
  IPv4-Adresse für docker0: 172.17.0.1
  IPv4-Adresse für enp1s0:  10.30.20.150

Ich habe eine VM in Unraid gestartet, Ubuntu Server installiert, eine statische IP-Adresse zugewiesen, Docker installiert und Discourse heruntergeladen. Bei der Ausführung des Setups erhalte ich folgende Fehlermeldung.

Hostname für Ihr Discourse? [discourse.example.com]: forum.mydomain.net

Überprüfung Ihres Domainnamens . . .
WARNUNG: Port 443 des Computers scheint über den Hostnamen nicht erreichbar zu sein:
WARNUNG: Verbindung zu (Port 80) schlägt ebenfalls fehl.

Dies deutet darauf hin, dass forum.mydomain.net auf eine IP-Adresse aufgelöst wird, die diese Maschine, auf der Sie Discourse installieren, nicht erreicht.

Das erste, was Sie tun sollten, ist zu bestätigen, dass forum.mydomain.net auf die IP-Adresse dieses Servers aufgelöst wird.
Dies tun Sie normalerweise an dem Ort, an dem Sie die Domain erworben haben.

Wenn Sie sicher sind, dass die IP-Adresse korrekt aufgelöst wird, könnte es sich um ein Firewall-Problem handeln.
Eine Websuche nach "Ports öffnen IHRE CLOUD-DIENSTLEISTUNG" könnte hilfreich sein.

Dieses Tool ist nur für die gängigsten Installationen konzipiert. Wenn Sie das obige Problem nicht lösen können, müssen Sie containers/app.yml selbst bearbeiten und dann eingeben

./launcher rebuild app

Ich kann meine Ubuntu VM unter der statischen IP-Adresse 10.30.20.150 von meinem NPM-Container aus anpingen. Ich habe meine NPM-Konfiguration so eingerichtet, dass sie HTTPS 10.30.20.150 Port 443 sowie HTTP Port 80 ansteuert, bisher ohne Erfolg. Wenn das Setup fehlschlägt, scheint es den Discourse-Container innerhalb der VM zu schließen?

Gibt es eine Möglichkeit, dies zu umgehen?
Vielleicht meine Firewall-Ports bearbeiten, um den Reverse-Proxy zu umgehen und direkt auf die VM zuzugreifen, damit sie ein Zertifikat erhalten und den Container ausführen kann, und dann, sobald sie läuft, die config.yml manuell bearbeiten, um meinen Reverse-Proxy zu verwenden?
Könnte ich die Installation irgendwie bearbeiten, um kein SSL-Zertifikat zu verlangen und auf Port 80 zu laufen, und dann das SSL-Zertifikat über NPM zu erhalten?

Zuletzt habe ich in einigen Beiträgen gesehen, dass es eine “production”- und eine “development”-Version von Discourse gibt… es scheint, dass die Dev-Version auf einem lokalen Port über HTML ausgeführt werden kann? Wenn das stimmt, stelle ich mir vor, dass ich alles einfacher hinter meinen Reverse-Proxy stellen könnte..? Soweit ich gelesen habe, ist das Produktionspaket einfacher zu aktualisieren und hat möglicherweise Leistungsverbesserungen.

Ich würde mich sehr über Hilfe, Feedback oder Vorschläge zu diesem Thema freuen.

Dies ist die einzig unterstützte Produktionsinstallation hier.

Aber ich bin nicht überzeugt, dass sie für Ihre Situation geeignet ist, da Sie bereits einen Reverse-Proxy haben.

Sie könnten die Discourse-Basis-Image untersuchen und Ihre eigene maßgeschneiderte Komposition rückentwickeln:

https://hub.docker.com/r/discourse/base/

1 „Gefällt mir“

Können Sie in der App.yml den Verweis auf Port 80 und 443 mit einem # entfernen?

Befindet sich diese Datei in /var/discourse/containers? Ich kann nicht in dieses Verzeichnis wechseln, es wird ‘Zugriff verweigert’ angezeigt.

wäre also das Grundkonzept dieses Ansatzes, die Discourse-Basis-Dockerfile zu bearbeiten und die Zeilen zu entfernen, die den Reverse-Proxy installieren/konfigurieren, der mit dem Paket geliefert wird?

Nein, ich würde eine komplett maßgeschneiderte Docker-Compose-Datei (oder was auch immer Sie für die Orchestrierung verwenden) erstellen und eine benutzerdefinierte Dockerfile für Discourse verwenden.

Das habe ich noch nie gemacht und es klingt ein wenig einschüchternd. Ich habe keine Ahnung, wo ich anfangen soll. Ich frage mich, ob schon jemand den Weg gegangen ist, den ich gehe, und bereits eine Lösung gefunden und veröffentlicht hat.

Ich frage mich, ob es möglich wäre, ähnlich wie dieser Typ hier, die Container, die im Reverse Proxy erstellt wurden, zu isolieren, damit ich eine Installation abschließen kann, oder ob ich sie richtig an meinen externen Reverse Proxy weiterleiten kann, der in seinem eigenen Docker-Container läuft?

2 „Gefällt mir“

Es ist im fortgeschrittenen Bereich der Systemadministration angesiedelt, aber Docker Compose ist im Grunde wie das Spielen mit sehr coolen Legosteinen – es ist nicht so schwer, wie es aussieht, und es gibt viel Hilfe im Web.

Es wäre eine großartige Lernerfahrung, eine sehr übertragbare Fähigkeit zu entwickeln, leg los!

Ihr Link sieht auch wie ein weiterer guter Ort aus, um es zu versuchen.

2 „Gefällt mir“

Ja, das ist derjenige.

Es ist jedoch nicht so einfach. Wenn ich das gemacht habe, habe ich immer noch den Launcher benutzt, um ein Image zu erstellen, es in ein Repository zu pushen und es dann zu starten. Dann muss man auch Mittel haben, um Assets vorkompilieren, die Datenbank migrieren und vielleicht noch ein paar andere Dinge zu tun.

Der Methode „andere Websites ausführen“ zu folgen, ist wahrscheinlich das Richtige.

3 „Gefällt mir“

Ja, das ist nicht trivial, aber ich habe bei einem Kunden eine ziemlich gute Docker Compose-Lösung verwendet – kein launcher in Sicht!

Ich habe auch eine private Cloud-Entwicklungsinstallation mit DC …

2 „Gefällt mir“