O container do Discourse-app inicia e depois para silenciosamente

Certo! Eu apliquei estupidamente a configuração na página listada acima, em comparação com outros arquivos de configuração do nginx e não consegui entender por que o proxy não estava escutando em 80:443 para o discourse… :confused:

É o que eu esperava ver:

server {
	listen 80;
	server_name discourse.mydomain.com;
    return 301 https://$host$request_uri;  # roteamento para https
}

server {
	listen 443 ssl
	listen [::]:443 ssl;
	server_name discourse.mydomain.com;

	ssl_certificate      /etc/letsencrypt/live/discourse.mydomain.com/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/discourse.mydomain.com/privkey.pem;

	root /var/www/html;

	# Adicione index.php à lista se você estiver usando PHP
	index index.html index.htm index.nginx-debian.html;

	location / {
      proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:; # usando socket
      proxy_set_header Host $http_host;
      proxy_http_version 1.1;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
	}
}

NPM: Segui o conselho de @pfaffman e li Use Nginx Proxy Manager to manage multiple sites with Discourse, então avaliei a opção de instalar o NPM, mas isso parece exagero…

Obrigado a todos pela ajuda!

Para referência, npm e o nginx proxy manager são coisas diferentes. Você está confundindo sua terminologia e, assim, as pessoas que tentam ajudá-lo.

2 curtidas

Então você precisa configurar esse nginx para fazer proxy para o Discourse.

Eu recomendo que você apenas crie uma VM nova apenas para o Discourse.

1 curtida

Desculpe Stephen pela confusão, eu apenas usei o nome da ferramenta que é referenciada no artigo. Entendo que NPM e nginx (como) proxy manager são coisas diferentes, é por isso que usei letras maiúsculas…

É exatamente isso que estou tentando fazer e entendo que você não pode dar suporte nisso. No entanto, qualquer dica / link seria apreciado!

Eu simplesmente não posso, Jay: estou tentando ajudar um amigo a implantar o aplicativo e não posso modificar a configuração do servidor dele. É por isso que tenho que consertar o problema do nginx…

A propósito, meu entendimento é:

  • O Discourse está escutando nas portas 80/443.
  • O nginx está desempenhando o papel de um switch, despachando requisições para diferentes aplicações, com base em seus nomes de domínio:
    • netxcloud.mydomain.com tentando alcançar a porta 80 → a requisição é roteada para server_IP:8000
    • crm.mydomain.com tentando alcançar a porta 80 → a requisição é roteada para server_IP:9000
    • discourse.mydomain.com tentando alcançar a porta 80 → a requisição é roteada para http://unix:/var/discourse/shared/standalone/nginx.http.sock: (espero que os dois pontos finais não sejam um erro de digitação) pois o script de configuração configurou o Discourse para escutar nesse socket.

Estou certo nisso?

Muito obrigado pela sua ajuda!

Isso é bastante irritante e confuso, mas para ser justo com @jlgarnier, essa sigla foi usada pela primeira vez por @tophee ou @pfaffman em Usando o Nginx Proxy Manager para gerenciar vários sites com Discourse para se referir ao Nginx Proxy Manager. Eu não gosto disso, mas se estiver ‘errado’, a culpa não é realmente do OP.

Por exemplo, o tópico tem uma seção chamada Instalar NPM focada inteiramente no Nginx Proxy Manager.

Uau, isso me enganou também.
Irritante como esse projeto sequestrou uma sigla existente oito anos após a original.

2 curtidas

Não tenho certeza se tem; naveguei pelo site deles e não os vi usando a sigla.

Eles o utilizam em suas configurações do Docker. nginx-proxy-manager/docker/docker-compose.dev.yml at develop · NginxProxyManager/nginx-proxy-manager · GitHub

services:
  npm:
    image: nginxproxymanager:dev
    container_name: npm_core
1 curtida

Ah, ops! Eu não tinha percebido isso. :slightly_smiling_face:

Olá a todos,

Tentarei configurar o nginx novamente esta tarde. Alguém pode confirmar a sintaxe exata para o socket: http://unix:/var/discourse/shared/standalone/nginx.http.sock:? Quero ter certeza de que os dois pontos finais não são um erro de digitação…

Obrigado antecipadamente por qualquer ajuda!

Não acho que dois pontos devam estar ali, não.

De fato… Apliquei no discourse.conf as modificações que propus na sexta-feira passada e o Discourse agora funciona bem! Pelo menos consigo acessar a página de boas-vindas, mas não recebo o e-mail de ativação, o que não está relacionado ao Discourse (suspeito que meu amigo não criou a conta de e-mail solicitada :blush:).

Devo um agradecimento caloroso pela ajuda que você forneceu e espero não voltar a este fórum tão cedo! :wink:

2 curtidas

Finalmente, de volta mais cedo do que o esperado, mas você provavelmente será capaz de me dar um pontapé inicial com suas ótimas sugestões! :grin:

A situação é:

  • Discourse configurado e funcionando, Docker (ou Portainer) indica que o contêiner está saudável e eu consigo acessar a página de boas-vindas forums.mydomain.com.
  • Não recebo nenhum e-mail de ativação, apesar da conta de e-mail técnica ter sido criada corretamente (provedor de hospedagem = OVH).
  • Testei o envio de um e-mail desta conta técnica (com a configuração abaixo) = OK.
  • A configuração de e-mail atual é:
DISCOURSE_SMTP_ADDRESS: ssl0.ovh.net
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: forums@mydomain.com
DISCOURSE_SMTP_PASSWORD: "Str0ngPassw0rd"
DISCOURSE_SMTP_ENABLE_START_TLS: false
DISCOURSE_SMTP_DOMAIN: mydomain.com
DISCOURSE_NOTIFICATION_EMAIL: noreply-forums@mydomain.com

Eu realmente não sei por onde devo começar a investigar e ficaria feliz com qualquer conselho!

Obrigado antecipadamente pela sua ajuda!

A primeira coisa que verificarei é se forums@mydomain.com foi configurado para enviar em nome de noreply-forums@mydomain.com. Isso precisa ser verificado no seu provedor de e-mail.

1 curtida

Não tenho certeza se este endereço pode enviar ‘em nome de’, então atualizei o app.yml para definir o mesmo endereço:

DISCOURSE_SMTP_ADDRESS: ssl0.ovh.net
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: forums@mydomain.com
DISCOURSE_SMTP_PASSWORD: "Str0ngPassw0rd"
DISCOURSE_SMTP_ENABLE_START_TLS: false
DISCOURSE_SMTP_DOMAIN: mydomain.com
DISCOURSE_NOTIFICATION_EMAIL: forums@mydomain.com

Tentei telnet ssl0.ovh.net 465 = OK

No entanto, o discourse-doctor relata:

========================================
Discourse 2.9.0.beta9
Versão do Discourse em forums.mydomain.com: Discourse 2.9.0.beta9
Versão do Discourse em localhost: NÃO ENCONTRADA
==================== PROBLEMA DE DNS ====================
Este servidor relata NÃO ENCONTRADO, mas forums.mydomain.com relata Discourse 2.9.0.beta9.
Isso sugere que você tem um problema de DNS ou que um proxy intermediário é o culpado.

[...]

Testando o envio para myprivatemail@yahoo.fr usando ssl0.ovh.net:465, nome de usuário: forums@mydomain.com com autenticação simples.
======================================== ERRO ========================================
                                    ERRO INESPERADO

Net::ReadTimeout

====================================== SOLUÇÃO =======================================

O problema de e-mail pode estar ligado ao suposto problema de DNS? Eu não tenho um “proxy intermediário”, apenas estou executando o nginx como servidor proxy web…

Este é provavelmente o seu problema. Você pode tentar uma porta diferente? Eu tive os melhores resultados com a porta 587, se ela for suportada pelo seu provedor de e-mail.

Você precisará comentar esta linha ou defini-la como true se mudar a porta para 587.

Não, meu provedor de e-mail (o mesmo que meu provedor de hospedagem) só permite a porta 465. Aliás, li que preciso configurar o registro SPF e DKIM para o domínio (é este subdomínio?) e ainda não configurei nenhum deles: isso pode ter algum impacto?

Veja Solução de problemas de e-mail em uma nova instalação do Discourse

1 curtida

Estou navegando no post, mas esqueci algumas informações:

  • O DNS é gerenciado pelo nosso provedor de hospedagem (para alguns serviços), digamos no ServerA.
  • O Discourse está rodando em outro servidor (ServerB) que é hospedado por um provedor diferente.

Meu entendimento é então: O Discourse no ServerB se conecta ao servidor de e-mail no ServerA, autenticando-se com e-mail/senha para usar o serviço SMTP fornecido pelo provedor de hospedagem do ServerA.

Esta é uma configuração anormal ou ainda posso usar a configuração normal de e-mail do app.yml aqui?