Guide sur la configuration multi-sites

Salut tout le monde !

J’ai travaillé sur la configuration d’une instance Discourse multi-site, et bien que j’aie fait quelques progrès, je rencontre quelques obstacles et j’aurais vraiment besoin des conseils de quelqu’un. J’ai suivi le guide Configuration multi-site avec Docker, mais j’ai encore quelques questions :

  1. Où puis-je trouver le fichier « multisite.yml » mentionné ? Je ne le vois pas dans mon dossier discourse/templates.
  2. Dois-je configurer des hooks pour after_postgres même si j’utilise uniquement le volume standard et pas une base de données dédiée ?
  3. Existe-t-il un modèle app.yml simple pour une configuration multi-site de base ? Je ne cherche pas à ajouter de plugins ou quoi que ce soit de fantaisiste, juste quelque chose de simple pour commencer.

Pour contexte, j’exécute actuellement une instance Discourse standard sur une VM GCP, accessible via mamacares. Mon app.yml est pratiquement par défaut, sans plugins ni base de données dédiée. Si quelqu’un a de l’expérience avec cela ou connaît un guide de démarrage rapide pour configurer une configuration multi-site, j’apprécierais vraiment l’aide !

Voici mon app.yml actuel à titre de référence (j’ai supprimé les données sensibles)

## voici le modèle de conteneur Docker Discourse autonome tout-en-un
##
## Après avoir apporté des modifications à ce fichier, vous DEVEZ reconstruire
## /var/discourse/launcher rebuild app
##
## SOYEZ TRÈS PRUDENT LORS DE L'ÉDITION !
## LES FICHIERS YAML SONT EXTRÊMEMENT SENSIBLES AUX ERREURS D'ESPACEMENT OU D'ALIGNEMENT !
## visitez http://www.yamllint.com/ pour valider ce fichier si nécessaire

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Décommentez la ligne suivante pour activer l'écoute IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## voir https://meta.discourse.org/t/17247 pour les détails
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Définissez db_shared_buffers à un maximum de 25 % de la mémoire totale.
  ## sera défini automatiquement par bootstrap en fonction de la RAM détectée, ou vous pouvez le remplacer
  db_shared_buffers: "256MB"

  ## peut améliorer les performances de tri, mais augmente l'utilisation de la mémoire par connexion
  #db_work_mem: "40MB"

  ## Quelle révision Git ce conteneur doit-il utiliser ? (défaut : tests-passed)
  #version: tests-passed

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

  ## Combien de requêtes web simultanées sont prises en charge ? Dépend de la mémoire et des cœurs CPU.
  ## sera défini automatiquement par bootstrap en fonction des CPU détectés, ou vous pouvez le remplacer
  UNICORN_WORKERS: 4

  ## TODO : Le nom de domaine auquel cette instance Discourse répondra
  ## Obligatoire. Discourse ne fonctionnera pas avec un simple numéro IP.
  DISCOURSE_HOSTNAME: 'www.mamacares.com'

  ## Décommentez si vous souhaitez que le conteneur soit démarré avec le même
  ## nom d'hôte (-h option) que celui spécifié ci-dessus (défaut "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO : Liste des e-mails séparés par des virgules qui seront rendus administrateurs et développeurs
  ## lors de la première inscription, exemple 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: '---------'

  ## TODO : Le serveur de messagerie SMTP utilisé pour valider les nouveaux comptes et envoyer des notifications
  # L'adresse SMTP, le nom d'utilisateur et le mot de passe sont requis
  # ATTENTION le caractère '#' dans le mot de passe SMTP peut causer des problèmes !
  DISCOURSE_SMTP_ADDRESS: ----------
  #DISCOURSE_SMTP_PORT: --------
  DISCOURSE_SMTP_USER_NAME: ----------
  DISCOURSE_SMTP_PASSWORD: ------------
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (facultatif, par défaut true)
  #DISCOURSE_SMTP_DOMAIN: discourse.example.com    # (requis par certains fournisseurs)
  #DISCOURSE_NOTIFICATION_EMAIL: noreply@discourse.example.com    # (adresse pour envoyer les notifications)

  ## Si vous avez ajouté le modèle Lets Encrypt, décommentez ci-dessous pour obtenir un certificat SSL gratuit
  #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## L'adresse CDN http ou https pour cette instance Discourse (configurée pour tirer)
  ## voir https://meta.discourse.org/t/14857 pour les détails
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## L'ID de compte et la clé de licence MaxMind pour les recherches d'adresses IP géolocalisées
  ## voir https://meta.discourse.org/t/-/173941 pour les détails
  #DISCOURSE_MAXMIND_ACCOUNT_ID: 123456
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Les plugins vont ici
## voir https://meta.discourse.org/t/19157 pour les détails
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:
              #- www.mamacares.com
              - www.vet.community
  after_bundle_exec:
    - exec: cd /var/www/discourse &amp;&amp; sudo -E -u discourse bundle exec rake multisite:migrate

## Toutes les commandes personnalisées à exécuter après la construction
run:
  - exec: echo "Début des commandes personnalisées"
  ## Si vous souhaitez définir l'adresse e-mail "De" pour votre première inscription, décommentez et modifiez :
  ## Après avoir reçu le premier e-mail d'inscription, re-commentez la ligne. Elle ne doit s'exécuter qu'une seule fois.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fin des commandes personnalisées"

Merci beaucoup, et j’attends avec impatience tous les conseils que vous pourrez partager !

3 « J'aime »