Um servidor para 2 comunidades Discourse?

Certo. Isso faz sentido. E acho que para mim usar o Mailgun será bom.

Vou entender tudo isso melhor se e quando eu começar a configurar um multisite!

3 curtidas

Entrando na conversa porque estou em uma situação semelhante à do @alltiagocom — instalei o Discourse em um servidor Hetzner pequeno para minha comunidade principal, mas tenho pensado, em segundo plano, em migrar alguns outros grupos do Facebook para o Discourse assim que eu pegar o jeito das coisas.

Estou familiarizado com o « Wordpress multisite », mas entendi que o multisite do Discourse é mais complicado. Eu estava me perguntando o que daria menos dor de cabeça: rodar dois sites autônomos (ou mais) ou um multisite.

Alguma visão sobre isso?

O Multisite definitivamente teria menos sobrecarga de manutenção, então menos dores de cabeça, mas pode variar para você (YMMV)

1 curtida

Para novatos no Discourse, recomendo apenas rodar dois sites.

Eu criei um tópico sobre como rodar multisite sem um proxy reverso, mas ele está desatualizado agora.

Eu acho que tudo que precisa mudar é

pode ser substituído pelo novo

DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com
2 curtidas

Minha opinião, depois de passar o dia todo trabalhando nisso com a ajuda das minhas anotações antigas, ChatGPT, Claude, o Bot de IA do Discourse e alguns tópicos compartilhados aqui (e depois de fazer anotações e mais anotações sobre todo o processo).

Tudo parecia estar funcionando perfeitamente até eu chegar ao ponto em que precisava adicionar o proxy reverso. Minha primeira instância, que estava funcionando bem, parou de funcionar. Perguntei mais algumas coisas ao bot de IA do Discourse, mas como é meu primeiro dia, ele parou de funcionar. É uma limitação para novos usuários do bot. Claude, que estava sendo super prestativo, também parou, porque estou na versão gratuita. O ChatGPT é o menos confiável de todos, então todas as respostas dele são sempre recebidas por mim com MUITA hesitação…

Então, voltei ao fórum e comecei a ler alguns tópicos sobre isso, alguns escritos por @pfaffman. Essa foi a gota d’água. Complexo demais, muitos termos técnicos para eu sequer entender o que perguntar.

Resumo: minha primeira instância estava funcionando, então vou revertê-la ao que era (editando o arquivo app.yml para o que era antes das alterações. Estou reconstruindo enquanto digito.

Para ser honesto, dada toda a complexidade, embora isso me permitisse adicionar mais comunidades depois de superar o primeiro grande obstáculo, não acho que economizar $4 por mês por uma comunidade extra será o fim do mundo. Como eu já sei como configurar um servidor na Hetzner e depois instalar o Discourse, vou me ater a 2 comunidades por enquanto, pagar os $8 por ambas e seguir em frente. Considerando que eu estava pagando $12 por um droplet na Digital Ocean há alguns meses, posso me dar ao trabalho de pagar o mesmo valor por 3 comunidades, se eu quiser.

Independentemente disso, sempre acho essas aventuras interessantes, porque aprendo algo novo no caminho e, no final, pelo menos posso dizer por que não quero fazer isso, em vez de apenas dizer “Eu não vou fazer isso, porque não sei se consigo”.

Agradeço o tempo e a ajuda que todos vocês compartilharam aqui, e espero que este tópico ajude outras pessoas que queiram alcançar o que eu estava tentando.

:raising_hands:
Fim da transmissão!

8 curtidas

É exatamente por isso que eu disse que você precisa repensar sua estratégia, embora o que você estava tentando alcançar não fosse impossível, pois já foi feito antes, requer um entendimento significativo de discurso para ser feito corretamente.

Eu recomendaria continuar experimentando no seu tempo livre se quiser aprender mais sobre como o discurso funciona, foi assim que a maioria de nós aqui aprendeu.

9 curtidas

Levei muito mais tempo do que gostaria de admitir para (principalmente) descobrir!

6 curtidas

6 publicações foram movidas para um novo tópico: Múltiplos contêineres de aplicativo para um único site Discourse

Estou documentando uma instalação Discourse multisite suportada como um manual de procedimentos comando por comando.

Eu experimentei anteriormente com uma abordagem de “múltiplas instalações autônomas em um único servidor”, mas essa configuração não é suportada. Este post foca apenas na arquitetura multisite suportada, reescrita em formato linear para pessoas que preferem etapas explícitas.


O que isto é (suportado)

  • Um container de aplicação Discourse (app)
  • Multisite habilitado via multisite.yml
  • Postgres + Redis compartilhados (gerenciados pelo Discourse)
  • Conectividade via sockets unix (não requer rede Docker)
  • Múltiplos nomes de host roteados para sites separados internamente

O que isto não é

  • Múltiplos containers Discourse independentes atrás de HAProxy
  • Reconstruções contínuas (rolling rebuilds) drenando nós de aplicação
  • Credenciais SMTP por site (SMTP é compartilhado)

Notas operacionais (para que as expectativas estejam corretas)

Reconstruções / tempo de inatividade

Em multisite, existe apenas um container de aplicação, então ./launcher rebuild app reiniciará o único nó. Isso significa que um curto tempo de inatividade para todos os sites é esperado.

Certificados / validação de host

Adicione todos os nomes de host a DISCOURSE_HOSTNAME_ALIASES para que Let’s Encrypt + validação de host funcionem de forma confiável.

Backups / migração posterior

Cada site faz seu próprio backup em /admin/backups. Restaurar um backup de site em uma instalação autônoma posteriormente é o caminho de migração normal.


Manual completo do multisite suportado (comando por comando)

0) Pré-requisitos do host

Etapa Comando
Atualizar sistema apt-get update \u0026\u0026 apt-get upgrade -y
Instalar dependências apt-get install -y git curl sudo

1) Instalar Discourse Docker

Etapa Comando
Clonar repositório git clone https://github.com/discourse/discourse_docker.git /var/discourse
Entrar no diretório cd /var/discourse

2) Instalar o primeiro site (primeiro um site único)

Etapa Comando
Executar configuração ./discourse-setup

Isso cria /var/discourse/containers/app.yml e inicia o primeiro nome de host (ex: forum1.example.com).


3) Habilitar multisite

Etapa Comando
Criar diretório de configuração mkdir -p /var/discourse/config
Editar arquivo multisite nano /var/discourse/config/multisite.yml

Exemplo de multisite.yml:

forum1:
  host_names:
    - forum1.example.com

forum2:
  host_names:
    - forum2.example.com

4) Editar app.yml para habilitar multisite + aliases de nome de host

Etapa Comando
Editar app.yml nano /var/discourse/containers/app.yml

Adicionar:

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

5) Reconstruir

Etapa Comando
Reconstruir ./launcher rebuild app

6) Migrar bancos de dados do multisite

Etapa Comando
Entrar no container ./launcher enter app
Executar migração multisite rails multisite:migrate
Sair exit
Etapa Comando
Reiniciar ./launcher restart app

7) Verificar

Visite:

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

Cada site tem seu próprio admin, usuários, uploads e backups.


8) Backups / migração posterior

Admin por site:

  • /admin/backups

Restaure esse backup em uma instalação autônoma posteriormente se você quiser separar o site em seu próprio servidor.


Se algo acima conflitar com as melhores práticas atuais, ficarei feliz em atualizar este manual de procedimentos - a intenção é fornecer uma lista de verificação linear de multisite suportada que reduz tentativa e erro.

2 curtidas

Uau! Este é o guia claro que eu precisava para obter alguma clareza no mundo nebuloso do multisite!! Parece muito viável e mais simples do que eu imaginava.

É meio chato que só possa ser feito em um único contêiner, mas eu entendo intuitivamente por que isso é necessário. Como resultado, seria mais adequado para vários fóruns auto-hospedados menores e mais tranquilos.

Sua resposta definitivamente merece seu próprio tópico (wiki) e deve ser bem sinalizada.

2 curtidas

Pode ser algo para mim :heart_eyes:

1 curtida

Isto também se aplica quando o Discourse já está rodando como « monosite » e se deseja convertê-lo para multissite?

Muito obrigado pelo trabalho!

1 curtida

Obrigado! Isso ainda está alinhado com a prática multissite suportada atual - nada aqui conflita com a forma como o multissite do Discourse funciona hoje.

Sim, os mesmos passos se aplicam ao converter uma instalação monosite existente para multissite: um monosite é efetivamente um multissite com um único site padrão. Você pode habilitar DISCOURSE_MULTISITE, adicionar multisite.yml (incluindo o site existente), reconstruir uma vez e executar rails multisite:migrate no local.

Se houver algo aqui que não reflita mais as melhores práticas, ficarei muito feliz em atualizar o runbook - o objetivo é uma lista de verificação linear e suportada que evite tentativa e erro.

3 curtidas