Orientação sobre configuração multi-site

Olá a todos!

Tenho trabalhado na configuração de uma instância Discourse multi-site e, embora tenha feito alguns progressos, estou encontrando alguns obstáculos e realmente gostaria de receber orientação de alguém. Já passei pelo guia Configuração multi-site com Docker, mas ainda tenho algumas perguntas:

  1. Onde posso encontrar o arquivo “multisite.yml” mencionado? Não o vejo na minha pasta discourse/templates.
  2. Preciso configurar hooks para after_postgres mesmo que eu esteja apenas usando o volume padrão e não um banco de dados dedicado?
  3. Existe um template app.yml simples para uma configuração básica multi-site? Não estou procurando adicionar plugins ou nada sofisticado, apenas algo direto para começar.

Para contexto, atualmente estou executando uma instância Discourse padrão em uma VM GCP, acessível via mamacares. Meu app.yml é praticamente o padrão, sem plugins ou banco de dados dedicado. Se alguém tiver experiência com isso ou souber de um guia de início rápido para configurar uma configuração multi-site, ficaria muito grato pela ajuda!

Este é o meu app.yml atual para referência (removi os dados sensíveis)

## este é o template do container Docker Discourse autônomo e tudo-em-um
##
## Após fazer alterações neste arquivo, você DEVE reconstruir
## /var/discourse/launcher rebuild app
##
## TENHA *MUITO* CUIDADO AO EDITAR!
## ARQUIVOS YAML SÃO SUPER SUPER SENSÍVEIS A ERROS DE ESPAÇAMENTO OU ALINHAMENTO!
## visite http://www.yamllint.com/ para validar este arquivo conforme necessário

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Descomente a próxima linha para habilitar o listener IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Descomente estas duas linhas se desejar adicionar Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## quais portas TCP/IP este container deve expor?
## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
## veja https://meta.discourse.org/t/17247 para detalhes
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Defina db_shared_buffers para um máximo de 25% da memória total.
  ## será definido automaticamente pelo bootstrap com base na RAM detectada, ou você pode substituir
  db_shared_buffers: "256MB"

  ## pode melhorar o desempenho da ordenação, mas adiciona uso de memória por conexão
  #db_work_mem: "40MB"

  ## Qual revisão Git este container deve usar? (padrão: 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

  ## Quantas requisições web concorrentes são suportadas? Depende da memória e dos núcleos da CPU.
  ## será definido automaticamente pelo bootstrap com base nas CPUs detectadas, ou você pode substituir
  UNICORN_WORKERS: 4

  ## TODO: O nome de domínio que esta instância Discourse responderá
  ## Obrigatório. Discourse não funcionará com um número IP puro.
  DISCOURSE_HOSTNAME: 'www.mamacares.com'

  ## Descomente se você quiser que o container seja iniciado com o mesmo
  ## nome de host (-h option) especificado acima (padrão "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Lista de e-mails separados por vírgula que se tornarão administradores e desenvolvedores
  ## na inscrição inicial, exemplo 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: '---------'

  ## TODO: O servidor de e-mail SMTP usado para validar novas contas e enviar notificações
  # ENDEREÇO SMTP, nome de usuário e senha são necessários
  # AVISO o caractere '#' na senha SMTP pode causar problemas!
  DISCOURSE_SMTP_ADDRESS: ----------
  #DISCOURSE_SMTP_PORT: --------
  DISCOURSE_SMTP_USER_NAME: ----------
  DISCOURSE_SMTP_PASSWORD: ------------
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, padrão true)
  #DISCOURSE_SMTP_DOMAIN: discourse.example.com    # (requerido por alguns provedores)
  #DISCOURSE_NOTIFICATION_EMAIL: noreply@discourse.example.com    # (endereço para enviar notificações de)

  ## Se você adicionou o template Lets Encrypt, descomente abaixo para obter um certificado SSL gratuito
  #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## O endereço CDN http ou https para esta instância Discourse (configurado para puxar)
  ## veja https://meta.discourse.org/t/14857 para detalhes
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## O ID da conta e a chave de licença do MaxMind para pesquisas de endereço IP
  ## veja https://meta.discourse.org/t/-/173941 para detalhes
  #DISCOURSE_MAXMIND_ACCOUNT_ID: 123456
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## O container Docker é stateless; todos os dados são armazenados em /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins vão aqui
## veja https://meta.discourse.org/t/19157 para detalhes
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

## Quaisquer comandos personalizados para executar após a construção
run:
  - exec: echo "Iniciando comandos personalizados"
  ## Se você quiser definir o endereço de e-mail 'De' para seu primeiro registro, descomente e altere:
  ## Após receber o primeiro e-mail de inscrição, comente a linha novamente. Ela só precisa ser executada uma vez.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fim dos comandos personalizados"

Muito obrigado e aguardo qualquer conselho que você possa compartilhar!

3 curtidas