Use o CloudPanel para gerenciar vários sites com Discourse

Você pode ir diretamente ao meu tutorial passo a passo aqui…

No meu servidor dedicado (Hetzner), instalei uma instância limpa do Discourse (e é a única coisa no servidor neste momento.)

Agora quero usar o CloudPanel como proxy reverso, para que eu também possa usar o servidor para hospedar blogs Ghost e sites Wordpress para alguns dos meus clientes.

Pelo que li neste tutorial, e também tendo estudado os outros posts abaixo, parece possível.

Mas estou lutando com minha curva de aprendizado sobre proxies reversos.

Posso facilmente instalar e gerenciar meus sites usando o CloudPanel.

Mas, não está claro para mim a ordem ou procedimento correto para fazer o CloudPanel funcionar bem com o Discourse.

Gostaria de documentar o procedimento aqui neste post.

Alguém pode me guiar nisso?

Primeiro, siga um destes guias para mover o discourse para outra porta e remover os modelos ssl e let’s encrypt e reconstruir. Em seguida, diga ao seu proxy reverso para usar essa porta.

E se eu instalar o CloudPanel primeiro e criar um proxy reverso na interface…


… e/ou no Vhost Editor…

… eu poderia então instalar o Discourse?

Ou é necessário ou de alguma forma preferível instalar o Discourse primeiro?

Eu gostaria de fornecer os passos para a maneira mais simples/intuitiva (para outros simplórios como eu :slight_smile: )

Não importa. Desde que

  • O Discourse não use as portas 80/443 porque o conflito derrubará seu proxy reverso
  • O Discourse não use SSL, mas exponha a porta 80 para a porta que o proxy reverso usa para o backend

Portanto, não importa significa que o Discourse deve ser configurado como backend antes de você iniciar o proxy reverso e que ele estará inacessível em algum momento nesse ponto.

Não é uma configuração para simplórios. Você terá que entender como um proxy reverso funciona e como configurar o Discourse manualmente. Não será simples nem intuitivo.

Já é difícil o suficiente dar suporte à instalação padrão para novatos. Muitas, muitas horas foram gastas para fazer essas instruções funcionarem para pessoas que não sabem nada sobre administração de sistemas.

Muitas, muitas horas foram gastas para que essas instruções funcionassem para pessoas que não sabem nada sobre administração de sistemas.

@pfaffman Espero poder ajudar a reduzir essas horas para você daqui para frente!

O arquivo containers/app.yml é criado pelo instalador? (Não o encontro no repositório.)

Editei o arquivo standalone.yml e o renomeei para app.yml

Se eu colocar esse arquivo em containers/ e depois executar ./discourse-setup, isso deve funcionar?

(Assumindo que configurei corretamente as configurações no meu app.yml)

É isso.\n\nComo um recém-chegado ao Discourse, a maneira correta de fazer isso parece algo como:\n\n- Desative temporariamente seu proxy reverso.\n- Instale o Discourse com SSL/Lets Encrypt desativado\n- Verifique uma instalação funcional em :80\n- Altere a porta do Discourse para 81 ou outra porta não padrão, ou melhor ainda, use um socket.\n- Inicie o proxy reverso novamente, configure-o contra a instalação do Discourse (incluindo encapsulamento https)\n- Habilite force_https\n\nSe você não instalar o Discourse sem o RP ativo, há muitas áreas onde isso pode dar errado para solucionar problemas na prática.

Você não pode usar o discourse-setup para sua configuração. Se você o editou, execute

./launcher rebuild app

Milagre dos milagres – conseguimos! Obrigado por toda a sua ajuda! Documentarei o procedimento na postagem do Tópico acima.

OK, estou preso em algo (pequeno, eu acho)…

Para criar uma segunda instância do Discourse, eu crio e edito o app2.yml, e o server_name.conf para a segunda instância do Discourse, alterando o DISCOURSE_HOSTNAME e o server_name.

Mas então… como eu compilo o app2? Eu tentei:

service nginx restart

./launcher stop app

./launcher rebuild app2

e

./discourse-setup (eu usei ./discourse setup para instalar a primeira instância e depois voltei e editei o app.yml, e funcionou na primeira instância.)

Esse procedimento resultou em um Discourse no segundo URL, mas parece que ele está obtendo dados da primeira instância.

Não estou entendendo alguma coisa. Qual é a maneira correta de compilar o segundo site no segundo domínio?

Seu proxy reverso está configurado para escutar o segundo domínio e rotear o tráfego para uma porta diferente?

Você precisa alterar o diretório que ele usa onde diz /var/discourse/standalone para algo diferente (standalone2?).

Você pode querer usar uma configuração de dois contêineres para que você execute apenas uma cópia do postgres (acho que a Configuração multissite com Docker tem algumas dicas), mas se você tiver muita RAM, talvez não se importe.

Uau. Eu nunca teria descoberto isso sozinho. Você é meu herói do dia.

O que estou fazendo aqui é (para um cliente) construir um protótipo para um sistema de publicação versátil do Discourse para Criadores, integrando Ghost com Discourse.

Sou um desenvolvedor front-end e agora preciso aprender totalmente o sysadmin.

Então, preciso construir tanto um multisite quanto contêineres separados.

Esta é a configuração do meu servidor:

  1. um servidor dedicado na Hetzner (6 núcleos de CPU, 64 GB de RAM e 2x512 GB NVMe)

  2. um VPS na Contabo (8 núcleos de CPU, 30 GB de RAM e 200 GB NVMe)

Não sei nada sobre isso, mas se você e outros acharem que seu tutorial é confiável, sinta-se à vontade para criar um novo #documentation:sysadmin how-to advanced-setup e quaisquer outras tags que você achar adequadas :slight_smile:
(antes que sua resposta seja automaticamente excluída em um mês :stuck_out_tongue: )

OK sim. Para essa segunda instância, funcionou (após criar um novo Site no CloudPanel):

  1. Crie e edite manualmente o app2.yml, alterando cada instância nesse arquivo de standalone para standalone2

  2. Altere também standalone para standalone2 no arquivo Vhost

  3. Execute ./launcher rebuild app2

Acho que também limpei todos os caches do Cloudflare, reiniciei o nginx e depois reiniciei o servidor.

Obrigado novamente pela sua ajuda.