Discourse + servidor web. É possível ou melhor evitar?

Aviso rápido: Sou relativamente novo na criação de um ambiente VPS do zero, mas tenho experiência suficiente com hospedagem web (especificamente compartilhada e dedicada gerenciada) para ter uma ideia do que estou fazendo e conseguir entender tutoriais.

Dito isso, estou atualmente usando o droplet mais barato da DigitalOcean para experimentação. Sou um entusiasta, não espero ter muito tráfego e estou apenas tentando criar duas instâncias que ofereçam uma página inicial de algum tipo (provavelmente WordPress) e um fórum Discourse correspondente — uma instância para design de jogos e outra para minha comunidade de criadores de conteúdo.

Tenho consciência de que o Discourse e o Apache não funcionam bem juntos por causa da decisão do Discourse de usar a porta 80, e também sei que existem soluções alternativas, mas parecem haver várias formas com resultados não confirmados e nenhum “sim, isso funciona” oficial por parte do Discourse.

Estou um pouco confuso sobre por que uma plataforma tão incrível foi projetada para ser tão obstaculizadora na gestão de um servidor web ao mesmo tempo, mas minha experiência com o software até agora me deixou interessado o suficiente para encontrar uma maneira de fazê-la funcionar. Vi que existe uma integração com o WordPress e ela é promovida em uma página de recursos, mas, novamente, o Discourse parece não ser projetado para ser nada além de autônomo.

Alguma dica ou opinião de quem já passou pela mesma situação? Obrigado!

Acho que é isso que você está procurando:

@neounix tem experiência em rodar o Discourse com o apache2, então pode dar algumas dicas.

4 curtidas

Isso é uma recomendação para migrar para o Nginx então? Não tenho absolutamente nenhuma experiência com ele e qualquer servidor web que já usei, inclusive os pré-configurados, utilizou o Apache.

Também há esta informação sobre o Apache: Set up Discourse on a server with existing Apache sites

No entanto, parece haver um grande número de problemas para fazê-lo funcionar corretamente, especialmente com SSL.

Seria mais simples executar duas instâncias (droplets), uma para o site e outra especificamente para o Discourse? Suponho que eu possa apenas alterar o registro DNS do subdomínio para apontar para a instância do Discourse e isso deve resolver o problema. Só acho estranho rodar dois servidores apenas para um fórum.

Olá @OrbitStorm

Bem-vindo!

O Discourse não é nada obstrutivo.

Dominar a execução do Discourse em contêineres Docker atrás de um servidor web proxy reverso é uma experiência muito gratificante; seja usando Apache2 ou nginx.

Se você já executa aplicativos atrás do Apache, é fácil configurar uma ou até 100 instâncias do Discourse em contêineres Docker atrás do Apache!

5 curtidas

Agradeço a resposta.

Digo isso com o máximo respeito, mas o Discourse, pronto para uso, efetivamente exige seu próprio servidor. Usar um proxy reverso para executar um servidor web paralelo ao Discourse no mesmo VPS é uma loteria, como evidenciam os comentários e outras reclamações, e o SSL pode ou não funcionar. Além disso, é virtualmente impossível rodar duas instâncias do Discourse no mesmo servidor. Tudo isso, para mim, é um obstáculo. Não há outro software de fórum, incluindo plataformas de alto nível como XenForo ou Invision, que exija esse nível de esforço com tanta incerteza. São pacotes caros, então suponho que você está recebendo o que não pagou ao escolher o Discourse. Como um novo usuário diante de todos esses obstáculos, parece que o Discourse foi projetado sem levar em conta nada além de si mesmo (ou seja, websites).

Por que não, como mencionado em minha postagem original, usei uma implantação de um clique para o Discourse. Portanto, terei que fazer tudo ao contrário para tentar configurar o Apache (ou o Nginx, se não encontrar um tutorial) no mesmo servidor. Se vou usar o Discourse como minha principal plataforma de fórum, não tenho interesse em rodar dois servidores para uma única comunidade. Isso é simplesmente absurdo.

Eu sinceramente acho que é viável. Não sou especialista e apenas sigo os ótimos guias e tutoriais aqui e ali. Tive pouco ou nenhum problema para configurar o Discourse atrás do Nginx, então talvez eu tenha sido um pouco sortudo, mas acho que está longe de ser impossível :slightly_smiling_face:
Gosto destes:
https://linuxize.com/post/how-to-install-nginx-on-ubuntu-18-04/
https://linuxize.com/post/secure-nginx-with-let-s-encrypt-on-ubuntu-18-04/
Acho que pode não ser um caminho fácil adicionar multisite/multicontainers e clone S3 à mistura :sweat_smile:

E para a combinação Postfix/Dovecot:
https://linuxize.com/post/install-and-configure-postfix-and-dovecot/

1 curtida

@Benjamin_D O problema que tenho é que todos os tutoriais disponíveis aqui deixam de fora algum aspecto do meu ambiente atual. Existe um tutorial para o Apache, mas usando CentOS. Eu uso Ubuntu. O outro tutorial, de Kane York, usa Nginx, mas, como mencionei, eu uso Apache.

Também não estou fazendo nada excessivamente complexo. Estou apenas usando o DigitalOcean, Linux + Ubuntu 18.04, hospedando tudo no droplet (sem usar armazenamento de terceiros), etc. Estou usando o Mailgun como solução de e-mail, mas não acredito que ele ofereça uma caixa de entrada, o que está bem por enquanto.

Só estou tentando tornar tudo o mais simples possível.

1 curtida

@OrbitStorm

Na verdade, o Discourse é, na minha opinião, o melhor software de código aberto para fóruns e construção de comunidades do planeta atualmente, por muitas razões. Aqui estão apenas algumas:

  1. O Discourse é de código aberto e conta com uma comunidade forte e uma equipe de desenvolvimento central muito inteligente (e capaz).

  2. O Discourse foi projetado para rodar em um container Docker em produção, o que traz muitos benefícios:

  • O Discourse pode ser facilmente implantado no modo standalone sem necessidade de um servidor web ou banco de dados externo.

  • O Discourse pode ser facilmente implantado no modo multi-container, proporcionando maior confiabilidade e atualizações sem interrupções.

  • O Discourse também pode ser implantado em configurações de alta disponibilidade usando Docker Swarm e Kubernetes, onde ele pode escalar para cima e para baixo “sob demanda”.

  • O Discourse é fácil de fazer backup e restaurar. Podemos usar o backup padrão do Discourse (pronto para uso) e restaurá-lo em qualquer lugar do mundo em um container Docker novo e limpo.

  1. O Discourse roda facilmente atrás de servidores proxy reverso Apache2 e nginx. Isso também oferece várias vantagens, entre elas:
  • O Discourse pode rodar em um servidor web existente, seja nginx ou Apache2, com pouco esforço, tanto em portas TCP/IP expostas pelo Docker quanto em sockets de domínio UNIX.

  • Executar aplicativos baseados na web atrás de proxies reversos é uma prática bem estabelecida. Essa configuração não é exclusiva do Discourse, mas o Discourse oferece suporte a ela.

  • Configurar SSL é muito simples atrás de um proxy reverso e pode ser tão fácil quanto certbot -d meu.grande-discourse.site, usando o LETSENCRYPT, que é gratuito e suportado.

  1. O Discourse está totalmente documentado, commit a commit, no GitHub, para que qualquer pessoa possa acompanhar as alterações no código.

  2. O Discourse possui um modelo de negócios progressivo, que traz alguns benefícios importantes, incluindo:

  • O Discourse, o software central e muitos plugins, temas e componentes excelentes, são gratuitos.

  • O Discourse oferece suporte gratuito, incluindo suporte padrão de configuração, no meta.

  • O Discourse oferece hospedagem comercial para quem não deseja fazer auto-hospedagem ou prefere uma abordagem mais “sem preocupação”.

  • O Discourse incentiva consultoria comercial e desenvolvimento de plugins em sua comunidade, criando um ecossistema de negócios viável.

  1. Há mais, mas quero encerrar isso!

Eu (nós) concordamos com todas as decisões tomadas pela equipe central do Discourse? E eles concordam com todas as nossas (ou minhas) ideias e sugestões?

Não, claro que não; e nem deveriam, assim como nós ou eu. Somos livres para sugerir, enviar sugestões de código, PRs, e a equipe central do Discourse abordará essas sugestões com uma mente aberta.

Mas, no fim das contas, a equipe central precisa manter a comunidade do Discourse avançando em uma direção coesa, o que não é fácil quando centenas de pessoas de diferentes culturas desejam configurações diferentes e têm prioridades, modelos de negócios e ideias distintas.

Em outras palavras, não há nada a “evitar” (palavras do título do seu tópico) no Discourse, especialmente configurar proxies reversos e dominar o Docker. Muitos (incluindo eu) estão migrando para o Kubernetes por causa do Discourse, não apenas para o Discourse, mas também para outros aplicativos web.

O Discourse é a “coisa mais distante” de “obstrutivo” (novamente, suas palavras, não as minhas); e como ele é baseado em containers, por design, “o céu é o limite” para como administradores de sistema experientes podem implantar o Discourse em ambientes de produção altamente escaláveis; e também é simples o suficiente para que iniciantes possam implantá-lo facilmente no modo standalone.

Preciso dizer mais?

Como diz a música do REM (Losing My Religion):

Oh não, eu disse demais, eu preparei tudo

Encerrando este tópico… Boa sorte, @OrbitStorm

2 curtidas

Se eu entendi corretamente, o que você quer é o nginx ouvindo e redirecionando um subdomínio para o Apache de um lado e outro subdomínio para o container onde o Discourse está, do outro lado (configurado expondo a porta correta no app.yml ou usando o template web.socketed), ou você está usando o Apache como proxy?

Acho que o nginx é usado em vez do HAProxy no tutorial do CentOS :thinking:

Quase, mas não. Para reiterar, estou no Linux + Ubuntu 18.04. Estou usando o Apache para servir um site HTML padrão (WordPress no futuro) e tenho o Discourse instalado em um subdomínio. Preciso apenas descobrir como configurar um proxy reverso (conforme esses tutoriais) que redirecionará o tráfego das portas 80 e 443 para novas portas, já que o Apache já usa ambas. Não tenho interesse em usar o Nginx porque não tenho experiência com ele e não quero adicioná-lo ao Apache e tornar minha configuração ainda mais complexa.

Não sou um desenvolvedor avançado. Sou apenas um cara com entendimento fluente do frontend, entendimento básico de painéis, entendimento limitado de SSH e praticamente nenhum entendimento de tudo o mais (é por isso que estou usando tutoriais).

Meu objetivo final é ter dois domínios com uma página inicial respectiva e com múltiplas instâncias do Discourse (uma para cada site). Coisas simples.

1 curtida

Não tenho certeza se é mais complexo usar o Apache como servidor e proxy do que empacotar o nginx ou o HAproxy :sweat_smile:
Sobre o tutorial, CentOS ou Ubuntu não devem fazer muita diferença, apt em vez de yum,
https://support.cloudflare.com/hc/en-us/articles/360029696071-Restoring-original-visitor-IPs-Option-2-Installing-mod-remoteip-with-Apache em vez de

Posso sugerir isso para o Apache como proxy reverso:

1 curtida

Se você quer que sua vida seja fácil, então execute o Discourse em seu próprio droplet. Você realmente não pode executar o Discourse e o Apache em um droplet de 1 GB, então dois droplets de 1 GB nem custam mais.

2 curtidas

@pfaffman Minha intenção nunca foi ficar no menor droplet, estou apenas usando-o enquanto configuro tudo. Não faz sentido pagar uma taxa horária maior enquanto experimento.

A única razão pela qual não estou tão animado em rodar dois droplets é porque provavelmente terei 3 a 4 domínios diferentes para migrar para o DigitalOcean. Não quero estar pagando por 6 a 8 droplets. Isso é insanidade.

Se você quiser mais de 3 sites Discourse, provavelmente precisará configurar um multisite. Tenho uma configuração que faço com o Traefik, embora esteja investigando outros proxies reversos.

Se você estiver usando o Apache e quiser múltiplos sites distintos, o termo de busca relevante é VirtualHost.

4 curtidas

Com um droplet pequeno, você pode querer reduzir os buffers. Meu droplet tem 4 GB de memória e 4 núcleos compartilhados.

2 curtidas

Consegui encontrar uma solução graças ao Bobbyiliev da DigitalOcean.

Você pode encontrar essa solução aqui: Discourse not loading with Apache and proxy redirect - #8 by OrbitStorm

3 curtidas

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