Ich habe Discourse jetzt auf 2 verschiedenen VMs installiert.
Ich verwende die offiziellen Installationsanweisungen.
Eine läuft auf Debian 12 in einer VMWare Fusion-Instanz auf einem Mac Pro, die andere ist Ubuntu 24 in einer VM, die unter TrueNAS läuft.
Beide sind auf dedizierten Servern im lokalen Netzwerk mit Bridge-Netzwerken und haben eindeutige zugängliche IP-Adressen.
Der TN-Server hostet mehrere andere docker-Container-Anwendungen, die alle funktionieren und via LAN und Internet zugänglich sind. Der Mac Pro hosts nativ ein Wiki.
Auf beiden läuft die Bootstrap-Funktion durch, aber ich bekomme keine funktionierende Seite. Im Browser steht nur ‘Server antwortet nicht’.
Laut docker ps ist der Container “app” läuft und hört auf den Ports 80 und 443, ufw meldet, dass diese Ports erlaubt sind.
Für eine Weile zeigte die Debian-Seite eine nginx-Standard-Willkommensseite, aber jetzt antwortet diese auch nicht mehr.
Ich bin kein Entwickler oder Web-Zauberer, daher bin ich mir unsicher, wie ich troubleshooting betreiben soll. Ich habe Grok um Hilfe gebeten, aber bisher hat nichts funktioniert.
Ich habe eine öffentlich zugängliche statische IP-Adresse und einen Domainnamen, der auf diese Adresse zeigt.
Ich verwende im Allgemeinen einen Wildcard-A-Record, um jeden Host auf diese IP zu verweisen, aber bei meiner Fehlerbehebung stieß ich auf einen Beitrag, in dem gesagt wurde, dass Discourse möglicherweise nicht gut mit proxied Adressen im Cloudflare-DNS funktioniert, also habe ich einen eigenen A-Record erstellt und die Proxy-Funktion für diesen deaktiviert.
[Zitat=“tknospdr, Beitrag:1, Thema:364284”]
Bei beiden wird die Bootstrap-Funktion abgeschlossen, aber ich erhalte keine funktionierende Seite. Im Browser erscheint nur „Server antwortet nicht“.
[/Zitat]
Haben Sie discourse-setup ausgeführt? Hat der Verbindungstest bestanden?
Verwende ich den Begriff ‘Bootstrap-Funktion’ richtig?
Ich möchte nur sicherstellen, dass wir vom gleichen sprechen.
./discourse-setup ist doch das Bootstrap, richtig?
Wenn ich also sage, es bootstrapped, und der Container läuft, dann hat der Verbindungstest, der ganz zu Beginn der Einrichtung durchgeführt wird, bestanden.
[Zitat=“tknospdr, Beitrag:5, Thema:364284”]
./discourse-setup ist das Bootstrap, richtig?
[/Zitat]
Nun, eine Art. Es erstellt eine app.yml und führt dann ./launcher bootstrap app aus.
Wenn du es schon mehrfach ohne funktionierenden DNS ausgeführt hast, hast du die Rate-Limits von Let’s Encrypt erreicht. Die einfachen Lösungen sind, eine Woche zu warten oder einen anderen Domainnamen zu verwenden.
[Zitat=“tknospdr, Beitrag:3, Thema:364284”]
Ich habe einen dedizierten A-Eintrag erstellt und das Proxy für diesen ausgeschaltet.
[/Zitat]
Und auf dieser Maschine läuft sonst nichts?
Und als du discourse-setup ausgeführt hast, hat es nicht reklamiert, dass es keine Verbindung zu sich selbst herstellen kann?
[zitat=“pfaffman, post:6, topic:364284”]
Wenn du es schon mehrfach ausgeführt hast, ohne dass DNS richtig funktioniert, hast du die Rate-Limits von Let’s Encrypt erreicht. Die einfachen Lösungen sind, eine Woche zu warten oder einen anderen Domainnamen zu verwenden.
[/zitat]
Ich habe es nur einmal auf jeder VM ausgeführt und jeweils einen anderen Hostnamen verwendet.
[zitat=“pfaffman, post:6, topic:364284”]
Und läuft auf diesem Rechner sonst nichts?
[/zitat]
Frisch installierte VMs, auf denen nichts anderes läuft. Auf der eigentlichen Hardware laufen andere Dinge. Aber sie haben separate interne IP-Adressen von ihren Hosts.
[zitat=“pfaffman, post:6, topic:364284”]
Und als du discourse-setup ausgeführt hast, hat es sich nicht beschwert, dass es sich nicht verbinden konnte?
[/zitat]
Korrekt.
Hier sind die Fehler, die ich im Installationsausgabe gefunden habe. Keiner scheint ernsthafte Probleme zu verursachen:
690:M 30. Apr 2025 22:05:22.859 # Warnung: Der Server TCP-Lokalsocket *:6379 konnte nicht erstellt werden: bind: Adresse bereits in Gebrauch
690:M 30. Apr 2025 22:05:22.859 # Fehler beim Lauschen auf Port 6379 (TCP), Abbruch.
109:M 30. Apr 2025 21:59:42.411 # WARNUNG: Memory Overcommit muss aktiviert sein! Ohne diese Einstellung können Hintergrundspeicherungen oder Replikationen bei geringem Arbeitsspeicher fehlschlagen...
2025-04-30 21:59:41.125 UTC [60] postgres@postgres FEHLER: Datenbank "discourse" existiert bereits
2025-04-30 21:59:41.274 UTC [63] postgres@discourse FEHLER: Rolle "discourse" existiert bereits
WARNUNG: Nicht aufgelöste oder mehrdeutige Spezifikationen während Gem::Specification.reset:
stringio (≥ 0)
Verfügbare/installierte Versionen dieses Gems:
- 3.1.7
- 3.1.5
- 3.1.1
WARNUNG: Aufgelöste Spezifikationen werden bereinigt. Versuchen Sie 'gem cleanup <gem>'
Bitte melden Sie einen Fehler, falls dies Probleme verursacht.
Die Einstellung 'staticAddonTrees' wird in der nächsten Version von Embroider standardmäßig auf true gesetzt und kann nicht deaktiviert werden. Um sich darauf vorzubereiten, sollten Sie 'staticAddonTrees: true' in Ihrer Embroider-Konfiguration einstellen.
Die Einstellung 'staticAddonTestSupportTrees' wird in der nächsten Version von Embroider standardmäßig auf true gesetzt und kann nicht deaktiviert werden. Um sich darauf vorzubereiten, sollten Sie 'staticAddonTestSupportTrees: true' in Ihrer Embroider-Konfiguration einstellen.
Node.js heap_size_limit ist kleiner als 2048MB. Einstellung von --max-old-space-size=2048 und CHEAP_SOURCE_MAPS=1
-e DISCOURSE_SMTP_DOMAIN=discourse.example.com
[BABEL] Hinweis: Der Codegenerator hat die Formatierung von /var/www/discourse/app/assets/javascripts/discourse/ember/ember-template-compiler.js aufgrund der Überschreitung der maximalen Größe von 500KB optimiert.
[BABEL] Hinweis: Der Codegenerator hat die Formatierung von /var/www/discourse/app/assets/javascripts/discourse/ember/ember.js aufgrund der Überschreitung der maximalen Größe von 500KB optimiert.
Ich habe nicht darüber nachgedacht, dass Port 80 bereits in Verwendung ist und ich nur die eine externe IP-Adresse habe, dass ich selbst dann, wenn die Domain-Prüfung während des Einrichtungsprozesses bestanden hat, die Ports auf der Host-Seite ändern musste, um alles zum Laufen zu bringen.
Ich verwende NPM intern.
Schritte, um die Funktionalität zu gewährleisten:
Ändere den Host-Seitenport auf 7080 für HTTP
Da ich den Traffic durch meinen Proxy-Manager leite, habe ich mein Leben vereinfacht und die LE-Skripte deaktiviert
Das App aktualisiert
Den ‘ext IP:80’ auf ‘int IP:7080’ im Reverse Proxy übergeben, dann haben die Container die Ports reversiert… dann haben sie den Hokey Pokey gemacht und sich gedreht.