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.

3 curtidas

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.

1 curtida

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.

2 curtidas

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!

1 curtida

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.

1 curtida

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

./launcher rebuild app

2 curtidas

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

2 curtidas

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?

2 curtidas

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

2 curtidas

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.

1 curtida

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)

1 curtida
3 curtidas

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: )

3 curtidas

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.

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.