Configurazione Multisito

Ciao a tutti, sto cercando di far funzionare Multisite da alcuni giorni, ma senza successo.

Essere un lavoratore autonomo è piuttosto difficile in questo momento, quindi sto cercando di consolidare tutto su una singola VM.

Ho iniziato con un sito in un singolo container che è attivo da un po’ di tempo.

Poi l’ho messo dietro nginx per poter ospitare alcuni siti WordPress sullo stesso host. La gestione SSL è già a posto.

Il vecchio forum Discourse funziona bene, ma ora voglio aggiungere un nuovo forum utilizzando Multisite.

Ho seguito queste istruzioni: Multisite configuration with Docker

E ho aggiornato l’hook before_bundle_exec: con il nuovo nome host del forum.

Immagino che le mie domande siano:

  1. È solo il secondo nome host che va nell’hook before_bundle_exec:?
  2. È solo il primo nome host che va nella variabile env: DISCOURSE_HOSTNAME:?
  3. Le impostazioni SMTP nella sezione env: si applicano a tutti i siti?

Ecco cosa ho attualmente in app.yml. Qualsiasi aiuto sarebbe molto apprezzato.

## questo è il modello del container Docker Discourse "all-in-one", standalone
##
## Dopo aver apportato modifiche a questo file, DEVI ricostruire
## /var/discourse/launcher rebuild app
##
## FAI MOLTO *ATTENZIONE* QUANDO MODIFICHI!
## I FILE YAML SONO SUPER SUPER SENSIBILI A ERRORI NELLO SPAZIAMENTO O NELL'ALLINEAMENTO!
## visita http://www.yamllint.com/ per convalidare questo file quando necessario

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Scommenta queste due righe se desideri aggiungere Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"

## quali porte TCP/IP deve esporre questo container?
## Se desideri che Discourse condivida una porta con un altro server web come Apache o nginx,
## vedi https://meta.discourse.org/t/17247 per i dettagli
#expose:
#  - "80:80"   # http
#  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Imposta db_shared_buffers al massimo al 25% della memoria totale.
  ## verrà impostato automaticamente da bootstrap in base alla RAM rilevata, oppure puoi sovrascrivere
  db_shared_buffers: "1024MB"

  ## può migliorare le prestazioni di ordinamento, ma aggiunge l'uso di memoria per connessione
  #db_work_mem: "40MB"

  ## Quale revisione Git dovrebbe utilizzare questo container? (default: tests-passed)
  #version: tests-passed

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

  ## Quante richieste web simultanee sono supportate? Dipende dalla memoria e dai core della CPU.
  ## verrà impostato automaticamente da bootstrap in base alle CPU rilevate, oppure puoi sovrascrivere
  UNICORN_WORKERS: 4

  ## TODO: Il nome di dominio a cui risponderà questa istanza di Discourse
  ## Obbligatorio. Discourse non funzionerà con un semplice numero IP.
  DISCOURSE_HOSTNAME: forum.braidholmplaygroup.co.uk 

  ## Scommenta se desideri che il container venga avviato con lo stesso
  ## nome host (opzione -h) specificato sopra (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Elenco di email separate da virgola che diventeranno amministratori e sviluppatori
  ## all'iscrizione iniziale, esempio 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'foo@braidholmplaygroup.co.uk'

  ## TODO: Il server di posta SMTP utilizzato per validare nuovi account e inviare notifiche
  ## INDIRIZZO SMTP, nome utente e password sono obbligatori
  ## ATTENZIONE: il carattere '#' nella password SMTP può causare problemi!
  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           # (opzionale, default true)

  ## Se hai aggiunto il modello Lets Encrypt, scommenta qui sotto per ottenere un certificato SSL gratuito
  LETSENCRYPT_ACCOUNT_EMAIL: foo@braidholmplaygroup.co.uk

  ## L'indirizzo CDN per questa istanza di Discourse (configurato per recuperare)
  ## vedi https://meta.discourse.org/t/14857 per i dettagli
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## Il container Docker è senza stato; tutti i dati sono archiviati in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## I plugin vanno qui
## vedi https://meta.discourse.org/t/19157 per i dettagli
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

## Qualsiasi comando personalizzato da eseguire dopo la costruzione
run:
  - exec: echo "Inizio dei comandi personalizzati"
  ## Se desideri impostare l'indirizzo email 'From' per la tua prima registrazione, scommenta e modifica:
  ## Dopo aver ricevuto la prima email di iscrizione, riscommenta la riga. Deve essere eseguita solo una volta.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fine dei comandi personalizzati"

Sì.

Sì.

Sì.

A me sembra tutto a posto. Hai eseguito una ricompilazione e verificato se funziona? Ovviamente, dovrai configurare anche il proxy nginx esterno per il secondo sito, esattamente come hai fatto per il primo.