Ein Server für 2 Discourse-Communities?

Richtig. Das ergibt Sinn. Und ich denke, die Verwendung von Mailgun wäre für mich in Ordnung.

Ich werde das alles besser verstehen, wenn ich anfange, eine Multisite einzurichten!

3 „Gefällt mir“

Ich springe ein, weil ich mich in einer ähnlichen Situation wie @alltiagocom befinde – ich habe Discourse auf einem eher kleinen Hetzner-Server für meine Haupt-Community installiert, denke aber im Hintergrund darüber nach, ein paar andere Facebook-Gruppen auf Discourse umzustellen, sobald ich den Dreh raus habe.

Ich bin mit „Wordpress Multisite“ vertraut, habe aber verstanden, dass Discourse Multisite aufwändiger ist. Ich habe mich gefragt, was weniger Kopfzerbrechen bereiten würde: zwei eigenständige Websites (oder mehr) zu betreiben oder eine Multisite.

Irgendwelche Erkenntnisse dazu?

Multisite hätte definitiv weniger Wartungsaufwand und somit weniger Kopfschmerzen, aber das kann variieren (YMMV)

1 „Gefällt mir“

Für Discourse-Neulinge empfehle ich, nur zwei Sites zu betreiben.

Ich habe ein Thema erstellt, wie man Multisite ohne Reverse-Proxy betreibt, aber es ist inzwischen veraltet.

Ich denke, alles, was sich ändern muss, ist

kann durch das neue

DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com
2 „Gefällt mir“

Meine zwei Cents, nachdem ich den ganzen Tag damit verbracht habe, dies mit Hilfe meiner alten Notizen, ChatGPT, Claude, des Discourse AI-Bots und einiger hier geteilter Themen (und nachdem ich Notizen und noch mehr Notizen über den gesamten Prozess gemacht habe) zu bearbeiten.

Alles schien einwandfrei zu funktionieren, bis ich zu dem Punkt kam, an dem ich den Reverse-Proxy hinzufügen musste. Meine erste Instanz, die einwandfrei funktionierte, funktionierte nicht mehr. Ich stellte dem KI-Bot von Discourse ein paar weitere Fragen, aber da es mein erster Tag war, hörte er auf zu arbeiten. Es ist eine Einschränkung für neue Benutzer des Bots. Claude, der super hilfreich war, hörte ebenfalls auf, weil ich die kostenlose Version nutze. ChatGPT ist das unzuverlässigste von allen, daher werden alle Antworten von ihm immer mit SEHR viel Zögern von mir aufgenommen…

Dann kam ich wieder ins Forum und begann, ein paar Themen dazu zu lesen, einige davon von @pfaffman verfasst. Das war der letzte Tropfen. Zu komplex, zu viele Fachbegriffe, als dass ich überhaupt verstehen könnte, was ich fragen soll.

Zusammenfassung: Meine erste Instanz funktionierte, also setze ich sie auf den vorherigen Stand zurück (ich bearbeite die app.yml-Datei so, wie sie vor den Änderungen war. Ich baue neu, während ich tippe.

Ehrlich gesagt, angesichts der ganzen Komplexität, auch wenn es mir ermöglichen würde, weitere Communities hinzuzufügen, nachdem ich das erste große Hindernis überwunden habe, glaube ich nicht, dass das Sparen von 4 pro Monat für eine zusätzliche Community das Ende der Welt bedeutet. Da ich bereits weiß, wie man einen Server bei Hetzner einrichtet und dann Discourse installiert, werde ich mich jetzt auf 2 Communities beschränken, 8 für beide bezahlen und weitermachen. Wenn man bedenkt, dass ich vor ein paar Monaten 12 $ für einen Droplet bei Digital Ocean bezahlt habe, kann ich mir die Mühe machen, den gleichen Betrag für 3 Communities zu bezahlen, wenn ich möchte.

Unabhängig davon finde ich diese Abenteuer immer interessant, weil ich dabei etwas Neues lerne und am Ende zumindest sagen kann, warum ich es nicht tun möchte, anstatt nur zu sagen: „Ich werde es nicht tun, weil ich nicht weiß, ob ich es kann.“

Ich weiß die Zeit und die Hilfe zu schätzen, die ihr alle hier geteilt habt, und hoffentlich wird dieses Thema anderen helfen, die das erreichen wollten, was ich versucht habe.

:raising_hands:
Ende der Übertragung!

8 „Gefällt mir“

Das ist genau der Grund, warum ich sagte, Sie müssen Ihre Strategie überdenken. Obwohl das, was Sie zu erreichen versuchten, nicht unmöglich war, da es schon einmal gemacht wurde, erfordert es ein erhebliches Verständnis von Discourse, um es richtig hinzubekommen.

Ich würde empfehlen, weiterhin in Ihrer Freizeit zu experimentieren, wenn Sie mehr darüber lernen möchten, wie Discourse funktioniert. So haben die meisten von uns hier es gelernt.

9 „Gefällt mir“

Ich habe viel länger gebraucht, als ich zugeben möchte, um es (größtenteils) herauszufinden!

6 „Gefällt mir“

6 Beiträge wurden in ein neues Thema aufgeteilt: Mehrere App-Container für eine einzelne Discourse-Site

Ich dokumentiere eine unterstützte Discourse-Multisite-Installation als Befehls-für-Befehl-Runbook.

Ich habe zuvor mit einem Ansatz „mehrere eigenständige Installationen auf einem Server“ experimentiert, aber diese Konfiguration wird nicht unterstützt. Dieser Beitrag konzentriert sich nur auf die unterstützte Multisite-Architektur, umgeschrieben in einem linearen Format für Leute, die explizite Schritte bevorzugen.


Was dies ist (unterstützt)

  • Ein Discourse-App-Container (app)
  • Multisite aktiviert über multisite.yml
  • Geteilte Postgres + Redis (verwaltet von Discourse)
  • Konnektivität über Unix-Sockets (kein Docker-Netzwerk erforderlich)
  • Mehrere Hostnamen werden intern auf separate Sites weitergeleitet

Was dies nicht ist

  • Mehrere unabhängige Discourse-Container hinter HAProxy
  • Rolling Rebuilds durch Entleeren von App-Knoten
  • Pro-Site-SMTP-Anmeldeinformationen (SMTP wird geteilt)

Betriebshinweise (damit die Erwartungen korrekt sind)

Rebuilds / Ausfallzeiten

Bei Multisite gibt es nur einen App-Container. Daher startet ./launcher rebuild app den einzigen Knoten neu. Das bedeutet, dass für alle Sites eine kurze Ausfallzeit zu erwarten ist.

Zertifikate / Host-Validierung

Fügen Sie alle Hostnamen zu DISCOURSE_HOSTNAME_ALIASES hinzu, damit Let’s Encrypt + Host-Validierung zuverlässig funktionieren.

Backups / spätere Migration

Jede Site erstellt ihr eigenes Backup unter /admin/backups. Das Wiederherstellen eines Site-Backups auf einer eigenständigen Installation ist der normale Migrationspfad.


Vollständiges unterstütztes Multisite-Runbook (Befehl für Befehl)

0) Host-Voraussetzungen

Schritt Befehl
System aktualisieren apt-get update && apt-get upgrade -y
Abhängigkeiten installieren apt-get install -y git curl sudo

1) Discourse Docker installieren

Schritt Befehl
Repo klonen git clone https://github.com/discourse/discourse_docker.git /var/discourse
Verzeichnis wechseln cd /var/discourse

2) Erste Site installieren (zuerst eine einzelne Site)

Schritt Befehl
Setup ausführen ./discourse-setup

Dies erstellt /var/discourse/containers/app.yml und startet den ersten Hostnamen (z. B. forum1.example.com).


3) Multisite aktivieren

Schritt Befehl
Config-Verzeichnis erstellen mkdir -p /var/discourse/config
Multisite-Datei bearbeiten nano /var/discourse/config/multisite.yml

Beispiel multisite.yml:

forum1:
  host_names:
    - forum1.example.com

forum2:
  host_names:
    - forum2.example.com

4) app.yml bearbeiten, um Multisite + Hostnamen-Aliase zu aktivieren

Schritt Befehl
app.yml bearbeiten nano /var/discourse/containers/app.yml

Hinzufügen:

  • DISCOURSE_MULTISITE: true
  • DISCOURSE_HOSTNAME_ALIASES: forum1.example.com,forum2.example.com

5) Rebuild

Schritt Befehl
Rebuild ./launcher rebuild app

6) Multisite-Datenbanken migrieren

Schritt Befehl
In Container wechseln ./launcher enter app
Multisite-Migration ausführen rails multisite:migrate
Beenden exit
Schritt Befehl
Neustart ./launcher restart app

7) Verifizieren

Besuchen Sie:

  • https://forum1.example.com
  • https://forum2.example.com

Jede Site hat ihre eigenen Admins, Benutzer, Uploads und Backups.


8) Backups / spätere Migration

Pro-Site-Admin:

  • /admin/backups

Stellen Sie dieses Backup später auf einer eigenständigen Installation wieder her, wenn Sie die Site auf einen eigenen Server aufteilen möchten.


Wenn etwas oben mit den aktuellen Best Practices in Konflikt steht, werde ich dieses Runbook gerne aktualisieren – die Absicht ist, eine lineare, unterstützte Multisite-Checkliste bereitzustellen, die Versuch und Irrtum reduziert.

2 „Gefällt mir“

Wow! Das ist die klare Anleitung, die ich brauchte, um etwas Klarheit in die trübe Welt von Multisite zu bekommen!! Es scheint tatsächlich sehr machbar und einfacher zu sein, als ich es mir vorgestellt hatte.

Es ist irgendwie schade, dass es nur in einem einzigen Container gemacht werden kann, aber ich kann intuitiv verstehen, warum das notwendig ist. Daher wäre es am besten für mehrere kleinere, ruhigere selbst gehostete Foren geeignet.

Ihre Antwort verdient definitiv einen eigenen (Wiki-)Beitrag und sollte gut ausgeschildert werden.

2 „Gefällt mir“

Könnte etwas für mich sein :heart_eyes:

1 „Gefällt mir“

Ist dies auch anwendbar, wenn Discourse bereits als „Monosite“ läuft und man es in eine Multisite umwandeln möchte?

Vielen Dank für die Arbeit!

1 „Gefällt mir“

Danke! Dies entspricht immer noch der aktuellen unterstützten Multisite-Praxis – nichts davon steht im Konflikt mit der Funktionsweise von Discourse Multisite heute.

Ja, die gleichen Schritte gelten, wenn eine bestehende Monosite-Installation in eine Multisite umgewandelt wird: Eine Monosite ist effektiv eine Multisite mit einer einzigen Standardseite. Sie können DISCOURSE_MULTISITE aktivieren, multisite.yml (einschließlich der bestehenden Seite) hinzufügen, einmal neu erstellen und rails multisite:migrate an Ort und Stelle ausführen.

Wenn hier etwas ist, das die Best Practices nicht mehr widerspiegelt, aktualisiere ich das Runbook sehr gerne – das Ziel ist eine lineare, unterstützte Checkliste, die Versuch und Irrtum vermeidet.

3 „Gefällt mir“