Recentemente, segui o guia install-cloud para instalar o Discourse em uma instância AWS Lightsail. Apesar de seguir as instruções atentamente e começar do zero várias vezes, infelizmente recebo um erro de “conexão recusada” ao tentar acessar meu fórum.
As etapas que segui foram:
Criar uma nova instância Lightsail
Atribuir um endereço IP estático
Abrir a porta 443
Apontar meu subdomínio (forum.procedural.audio) para o endereço IP
Seguir os comandos de instalação do Discourse no guia, incluindo fornecer um endereço de e-mail para LETS_ENCRYPT
Navegar até meu fórum… conexão recusada
A execução de ./discourse-doctor mostra que a versão do Discourse em forum.procedural.audio é NÃO ENCONTRADA. Consigo receber um e-mail de teste do Discourse com sucesso.
A execução de ping forum.procedural.audio não recebe dados de volta, mas encontra o IP estático correto.
Notei os seguintes erros nos logs
Portanto, parece que o problema está relacionado ao SSL, embora eu não tenha certeza de como corrigi-lo. No diretório shared/standalone/ssl/, existem quatro arquivos
forum.procedural.audio.cer (arquivo está vazio)
forum.procedural.audio.key (arquivo contém uma chave)
forum.procedural.audio_ecc.cer (arquivo está vazio)
forum.procedural.audio_ecc.key (arquivo contém uma chave)
Então, não tenho certeza se os arquivos .cer estarem vazios é parte do problema. No entanto, também noto que os logs indicam que ele está procurando o arquivo em /shared/ssl/* em vez de /shared/standalone/ssl/*, o que também parece relevante.
O problema é que sua instância do Lightsail não está acessível externamente. É isso que o discourse-doctor estava lhe dizendo - se você abriu apenas a porta 443, este é provavelmente o motivo.
O HTTPS na porta 443 não funcionará até que você tenha um certificado. Você não tem um certificado (e esses arquivos de certificado estão vazios) porque o Let’s Encrypt não conseguiu se registrar devido ao problema de comunicação.
Assumindo que você atribuiu um endereço externo estático e também abriu a porta 80, tente novamente. A porta 80 precisará estar aberta de qualquer maneira para que qualquer cliente que se conecte via HTTP possa ser redirecionado.
forum.procedural.audio não aparece no DNS, ou, em outras palavras, o nome do host não se resolve para um IP. Acabei de verificar via CloudFlare e Google DNS, nenhum dos dois consegue encontrar esse nome de host. Se eu não consigo resolver, o discourse-doctor também não consegue.
Quando você criou o registro ‘a’ para o seu servidor? Você verificou os tempos de replicação deles?
Certifique-se de que isso esteja corrigido antes de tentar construir o servidor novamente. O Let’s Encrypt dá um número finito de tentativas para se inscrever/renovar e, quando você atinge esse limite, não poderá obter um certificado por sete dias.
Eu tenho o domínio no Namecheap há dois dias, que aponta para o Route 53 (a camada extra de indireção é porque o Route 53 não suporta domínios .audio). A entrada do domínio principal existe há a maior parte desses dois dias. O registro de subdomínio existe há cerca de uma hora.
Se este fosse o problema, acho que executar ping forum.procedural.audio da minha instância falharia na resolução do endereço IP. Mas o IP é resolvido.
Hmm. Bem, https://dnschecker.org/#A/forum.procedural.audio mostra que o nome se resolve em vários lugares, então talvez seja um problema de propagação. Quando 1.1.1.1 ou 8.8.8.8 o consultam, não recebo resposta. No entanto, NS-337.AWSDNS-42.COM o retorna, então você pode precisar esperar um pouco.
Mas discourse-setup tentará consultar o endereço e ver se consegue se conectar a si mesmo. Se isso estiver falhando, geralmente é um problema de DNS ou as portas não estão abertas.
Já faz quase uma semana e continuo sem conseguir implantar um fórum. Alguém tem mais ideias? As portas 80 e 443 estão abertas. Não acho que seja um problema de DNS – discourse-doctor não encontra a versão do discourse em localhost (além de em forum.procedural.audio). Qualquer ajuda é bem-vinda.
Então, acho que eu estava errado, mas não tenho certeza do que fazer a respeito. Não tenho certeza por que o discourse-doctor não consegue encontrar a versão do discourse em localhost.