Multisite-Konfiguration

Hey Leute, ich versuche seit ein paar Tagen, Multisite zum Laufen zu bringen, aber bisher ohne Erfolg.

Als Selbstständiger ist es gerade ziemlich schwierig, daher versuche ich, alles auf einer einzigen VM zu konsolidieren.

Ich habe mit einer einzelnen Container-Site begonnen, die schon eine Weile läuft.

Anschließend habe ich sie hinter Nginx gestellt, damit ich auf demselben Host einige WordPress-Sites hosten kann. SSL ist hier bereits eingerichtet.

Das alte Discourse-Forum funktioniert einwandfrei, aber ich möchte nun ein neues Forum mit Multisite hinzufügen.

Ich habe diese Anweisungen befolgt: Multisite configuration with Docker

Und den before_bundle_exec:-Hook mit dem neuen Forumshostnamen aktualisiert.

Meine Fragen sind:

  1. Geht es im before_bundle_exec:-Hook nur um den zweiten Hostnamen?
  2. Geht im env: DISCOURSE_HOSTNAME:-Variablen nur der erste Hostname rein?
  3. Gelten die SMTP-Einstellungen im env:-Abschnitt für alle Sites?

Hier ist, was ich aktuell in der app.yml habe. Jede Hilfe wäre sehr willkommen.

## Dies ist die All-in-One, eigenständige Discourse Docker-Container-Vorlage
##
## Nach Änderungen an dieser Datei MÜSST ihr neu aufbauen
## /var/discourse/launcher rebuild app
##
## SEID *SEHR* VORSICHTIG BEIM BEARBEITEN!
## YAML-DATEIEN SIND SUPER SUPER EMPFINDLICH GEGENÜBER FEHLERN IN LEERZEICHEN ODER AUSRICHTUNG!
## Besucht http://www.yamllint.com/, um diese Datei bei Bedarf zu validieren

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Deaktiviert diese beiden Zeilen, wenn ihr Lets Encrypt (https) hinzufügen möchtet
  #- "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"

## Welche TCP/IP-Ports soll dieser Container exponieren?
## Wenn ihr wollt, dass Discourse einen Port mit einem anderen Webserver wie Apache oder Nginx teilt,
## siehe https://meta.discourse.org/t/17247 für Details
#expose:
#  - "80:80"   # http
#  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Setze db_shared_buffers auf maximal 25 % des gesamten Speichers.
  ## Wird automatisch vom Bootstrap basierend auf dem erkannten RAM gesetzt, oder ihr könnt es überschreiben
  db_shared_buffers: "1024MB"

  ## Kann die Sortierleistung verbessern, erhöht aber den Speicherverbrauch pro Verbindung
  #db_work_mem: "40MB"

  ## Welche Git-Revision soll dieser Container verwenden? (Standard: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt von Speicher und CPU-Kernen ab.
  ## Wird automatisch vom Bootstrap basierend auf den erkannten CPUs gesetzt, oder ihr könnt es überschreiben
  UNICORN_WORKERS: 4

  ## TODO: Der Domainname, auf den diese Discourse-Instanz antwortet
  ## Erforderlich. Discourse funktioniert nicht mit einer bloßen IP-Nummer.
  DISCOURSE_HOSTNAME: forum.braidholmplaygroup.co.uk 

  ## Deaktiviert, wenn ihr wollt, dass der Container mit demselben
  ## Hostnamen (-h-Option) wie oben angegeben gestartet wird (Standard "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Liste der durch Komma getrennten E-Mails, die bei der ersten Anmeldung zu Admin und Entwickler werden
  ## Beispiel: 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'foo@braidholmplaygroup.co.uk'

  ## TODO: Der SMTP-Mailserver, der zur Validierung neuer Konten und zum Senden von Benachrichtigungen verwendet wird
  ## SMTP-Adresse, Benutzername und Passwort sind erforderlich
  ## WARNUNG: Das Zeichen '#' im SMTP-Passwort kann Probleme verursachen!
  DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: apikey
  DISCOURSE_SMTP_PASSWORD:bar
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, Standard: true)

  ## Wenn ihr die Lets Encrypt-Vorlage hinzugefügt habt, deaktiviert unten, um ein kostenloses SSL-Zertifikat zu erhalten
  LETSENCRYPT_ACCOUNT_EMAIL: foo@braidholmplaygroup.co.uk

  ## Die CDN-Adresse für diese Discourse-Instanz (konfiguriert zum Abrufen)
  ## siehe https://meta.discourse.org/t/14857 für Details
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins gehen hier
## siehe https://meta.discourse.org/t/19157 für Details
hooks:
  after_postgres:
     - exec: sudo -u postgres createdb b_discourse || exit 0
     - exec:
          stdin: |
            grant all privileges on database b_discourse to discourse;
          cmd: sudo -u postgres psql b_discourse
          raise_on_fail: false

     - exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "alter schema public owner to discourse;"'
     - exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "create extension if not exists hstore;"'
     - exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "create extension if not exists pg_trgm;"'

  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - mkdir -p plugins
          - git clone https://github.com/discourse/docker_manager.git
  before_bundle_exec:
    - file:
        path: $home/config/multisite.yml
        contents: |
         secondsite:
           adapter: postgresql
           database: b_discourse
           pool: 25
           timeout: 5000
           db_id: 2
           host_names:
             #- forum.braidholmplaygroup.co.uk
             - forum.tssss.org

  after_bundle_exec:
    - exec: cd /var/www/discourse && sudo -E -u discourse bundle exec rake multisite:migrate

## Beliebige benutzerdefinierte Befehle, die nach dem Build ausgeführt werden sollen
run:
  - exec: echo "Beginn der benutzerdefinierten Befehle"
  ## Wenn ihr die 'From'-E-Mail-Adresse für eure erste Registrierung festlegen möchtet, deaktiviert und ändert:
  ## Nach Erhalt der ersten Anmelde-E-Mail den Kommentar wieder aktivieren. Muss nur einmal ausgeführt werden.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Ende der benutzerdefinierten Befehle"

Ja.

Ja.

Ja.

Das sieht für mich gut aus. Hast du einen Neuaufbau durchgeführt und geprüft, ob es funktioniert? Du musst natürlich genauso wie bei der ersten Seite auch für die zweite Seite einen externen Nginx-Proxy einrichten.