Site do Discourse não carrega após instalação sem ativar o Let's Encrypt

Sei o suficiente para ser perigoso ao ficar sentado na frente de uma sessão SSH aberta. Fiz a instalação sem problemas no outro dia e funcionou.

Hoje, no entanto, precisei reconstruir (estava em um servidor de desenvolvimento, não de produção) e, após seguir os mesmos passos, nada aparece após executar ./discourse-setup e acessar o site depois que a instalação foi concluída.

Também executei ./launcher start app e ainda assim nada.

Quais são algumas coisas típicas que devo fazer para solucionar problemas da instalação?

Nenhuma mensagem, nenhum erro de qualquer tipo após ./discourse-setup ou ./launcher start app?

Conte-nos como os ambientes são diferentes.

Você está usando um proxy reverso? CloudFlare?

Onde você está hospedando a instalação de produção?

Não, a instalação parece ter sido bem-sucedida. Quando verifico docker info, vejo que o contêiner também está em execução.

Estou executando Amazon Linux 2 na AWS e isso funcionou no outro dia no mesmo sistema operacional. O CloudFlare é usado apenas para DNS neste domínio.

Aqui está a ordem exata do que fiz. Git, docker e ncat foram instalados via amazon-linux-extras, conforme solicitado durante a instalação (mas isso não deve ser um problema, já que eu tinha um fórum de desenvolvimento funcional no outro dia).

  1. Instalar git
  2. Instalar e iniciar o docker
  3. Instalar ncat
  4. Instalar o Discourse
  5. Instalar nginx1.12

Por que você fez isso?

Uma pergunta justa. :joy: Fiz isso porque não estava funcionando após o passo 4… haha. Devo desinstalar?

Sim. Desinstale.

Provavelmente é um problema de DNS.

O que curl localhost retorna?

O que tail /var/discourse/shared/logs/var-log/nginx/access.log mostra?

O Discourse inclui um servidor web dentro do container.

curl: (7) Falha ao conectar em localhost porta 80: Conexão recusada

tail: não foi possível abrir '/var/discourse/shared/logs/var-log/nginx/access.log' para leitura: Arquivo ou diretório não encontrado

Executei a instalação normal, mas confirmei que a pasta shared nem sequer existe.

Obrigado pela ajuda, aliás! Como disse, sei o suficiente para ser perigoso… e nem sempre de um jeito bom. :smiling_face_with_sunglasses:

Desculpe.

tail /var/discourse/shared/standalone/logs/var-log/nginx/access.log

Ou, se ainda estiver errado,

find /var/discourse/shared -name access.log

para ver onde está o arquivo de log.

Encontrei aqui:

/var/discourse/shared/standalone/log/var-log/nginx/

Não havia um access.log, mas havia um error.log.

A mesma linha aparecia repetidamente nele (o domínio real foi substituído por example.com aqui):

2020/04/08 19:46:34 [emerg] 2112#2112: cannot load certificate "/shared/ssl/example.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

Não passei pelo processo de certificado com o Let’s Encrypt porque já possuo um certificado para este domínio. Ainda preciso fazer o Let’s Encrypt também?

Você precisa de um certificado.

Você pode pesquisar e encontrar instruções para instalar seu próprio certificado, que dizem ser uma dor de cabeça enorme, ou pode obter um gratuitamente e sem problemas, permitindo que o Let’s Encrypt o obtenha para você.

Bom, olha só isso. Funcionou.

Obrigado, @pfaffman, e a todos os outros que responderam. :+1:

Na verdade, vou retirar o que disse. O Chrome carregou a janela em um modo que mostrava a última carga de página bem-sucedida, mas uma atualização no modo anônimo mostra que ainda não está funcionando. Falha total da minha parte. :man_facepalming:

Existe algum link sobre como configurar o certificado do Let’s Encrypt? Preciso revisar o que fiz (ou o que não fiz).

Basta executar discourse-setup. Quando ele perguntar sobre o Let’s Encrypt, informe qualquer endereço de e-mail, ou o seu próprio, caso queira receber uma notificação se acharem que é necessário renovar.

Ok, foi isso que fiz… Eu achei que tudo fosse baseado no guia de instalação, mas ainda estou recebendo páginas em branco.

Parece que o Discourse está procurando o certificado no diretório /shared/ssl/, mas a localização real do meu certificado é /shared/standalone/ssl/

Minha configuração do app.yml está definida como:

   ## O contêiner Docker é sem estado; todos os dados são armazenados em /shared
volumes:
  • volume:
    host: /var/discourse/shared/standalone
    guest: /shared
  • volume:
    host: /var/discourse/shared/standalone/log/var-log
    guest: /var/log

Você pode tentar

cd /var/discourse
rm -r shared/standalone/ssl shared/standalone/letsencrypt
./launcher rebuild app

A linha do rm é de memória. Se esses diretórios não existirem, descubra o que eu deveria ter digitado.

Então, parece que estou limitado a 10 certificados por semana com o Let’s Encrypt. Acho que isso explica parte do motivo pelo qual não consigo prosseguir além dessa etapa.

Aqui está o que encontrei de outra pessoa que enfrentou esse problema após várias reconstruções: Trouble with SSL after lots of rebuilds - #14 by pfaffman

Então, suponho que não tenha outra opção agora a não ser instalar meu próprio certificado que já possuo?