Despliegue de Discourse en Lightsail: "conexión rechazada"

Hola,

Recientemente seguí la guía install-cloud para instalar discourse en una instancia de AWS lightsail. A pesar de seguir las instrucciones de cerca y empezar de cero varias veces, desafortunadamente obtengo un error de “conexión rechazada” al intentar acceder a mi foro.
Los pasos que seguí fueron:

  1. Crear una nueva instancia de lightsail
  2. Asignar una dirección IP estática
  3. Abrir el puerto 443
  4. Apuntar mi subdominio (forum.procedural.audio) a la dirección IP
  5. Seguir los comandos de instalación de discourse en la guía, incluyendo proporcionar una dirección de correo electrónico para LETS_ENCRYPT
  6. Navegar a mi foro… conexión rechazada

Ejecutar ./discourse-doctor muestra que la versión de discourse en forum.procedural.audio es NOT FOUND. Puedo recibir con éxito un correo electrónico de prueba de discourse.
Ejecutar ping forum.procedural.audio no recibe datos pero encuentra la IP estática correcta.
Noté los siguientes errores en los logs

$ ./launcher logs app
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
(se repite muchas más veces)

Así que parece que el problema está relacionado con SSL, aunque no estoy seguro de cómo solucionarlo. En el directorio shared/standalone/ssl/ hay cuatro archivos

  1. forum.procedural.audio.cer (el archivo está vacío)
  2. forum.procedural.audio.key (el archivo contiene una clave)
  3. forum.procedural.audio_ecc.cer (el archivo está vacío)
  4. forum.procedural.audio_ecc.key (el archivo contiene una clave)

Así que no estoy seguro de si el hecho de que los archivos .cer estén vacíos es parte del problema. Sin embargo, también noto que los logs indican que está buscando el archivo en /shared/ssl/* en lugar de /shared/standalone/ssl/*, lo que también parece relevante.

Gracias por tu ayuda.

1 me gusta

El problema es que tu instancia de Lightsail no es accesible externamente. Eso es lo que discourse-doctor te estaba diciendo: si solo abriste el puerto 443, probablemente sea por eso.

HTTPS en el puerto 443 no funcionará hasta que tengas un certificado. No tienes un certificado (y esos archivos de certificado están vacíos) porque Let’s Encrypt no pudo inscribirse debido al problema de comunicación.

Suponiendo que asignaste una dirección externa estática, abre también el puerto 80 y vuelve a intentarlo. El puerto 80 deberá estar abierto de todos modos para que cualquier cliente que se conecte a través de HTTP pueda ser redirigido.

Acabo de comprobar y este nombre de host no es válido. Primero tienes que arreglar eso.

no se puede resolver forum.procedural.audio: Host desconocido
1 me gusta

Los puertos 22 y 80 están abiertos por defecto para las instancias de Lightsail. Así que no creo que abrir el puerto 80 sea la solución.

¿Disculpe, podría explicar más detalladamente? ¿En qué sentido el nombre de host no es válido?

forum.procedural.audio no aparece en DNS, o dicho de otra manera, el nombre de host no se resuelve a una IP. Acabo de comprobarlo a través de CloudFlare y Google DNS, ninguno de los dos puede encontrar ese nombre de host. Si yo no puedo resolverlo, entonces discourse-doctor tampoco podrá.

¿Cuándo creaste el registro ‘a’ para tu servidor? ¿Has comprobado sus tiempos de replicación?

Asegúrate de que esto esté arreglado antes de intentar crear el servidor de nuevo. Let’s Encrypt da un número finito de intentos para inscribirse/renovar y cuando los agotas no podrás obtener un certificado durante siete días.

1 me gusta

He tenido el dominio en Namecheap durante dos días, el cual apunta a Route 53 (la capa extra de indirección se debe a que Route 53 no admite dominios .audio). La entrada del dominio principal ha existido durante la mayor parte de esos dos días. El registro del subdominio ha existido durante aproximadamente una hora.

Si este fuera el problema, creo que ejecutar ping forum.procedural.audio desde mi instancia fallaría al resolver la dirección IP. Pero la IP sí se resuelve.

No se resuelve externamente, Let’s Encrypt utiliza DNS para garantizar que el servidor es lo que afirma ser.

ping forum.procedural.audio                                                                                                               ✔  1909  10:59:47
ping: no se puede resolver forum.procedural.audio: Host desconocido

Hmm. Bueno, https://dnschecker.org/#A/forum.procedural.audio muestra que el nombre se resuelve en varios lugares, así que tal vez sea un problema de propagación. Cuando 1.1.1.1 o 8.8.8.8 lo buscan, no obtengo respuesta. Sin embargo, NS-337.AWSDNS-42.COM sí lo devuelve, así que es posible que solo tengas que esperar un tiempo.

Pero discourse-setup intentará buscar la dirección y ver si puede conectarse consigo mismo. Si eso falla, normalmente es un problema de DNS o que los puertos no están abiertos.

1 me gusta

Hola,

Ha pasado casi una semana y sigo sin poder desplegar un foro. ¿Alguien tiene ideas adicionales? Los puertos 80 y 443 están abiertos. No creo que sea un problema de DNS: discourse-doctor no encuentra la versión de discourse en localhost (además de en forum.procedural.audio). Cualquier ayuda es apreciada.

nslookup.exe forum.procedural.audio
Server:  dns.google
Address:  8.8.8.8

*** dns.google can't find forum.procedural.audio: Server failed

Es un problema de DNS.

3 Me gusta

Hmmm https://dnschecker.org/#A/forum.procedural.audio muestra que se ha propagado a 31/32 ubicaciones. Nunca he oído hablar de registros DNS que tarden más de 144 horas en propagarse. Pero ahora, al comprobar https://www.nslookup.io/domains/forum.procedural.audio/dns-records/#cloudflare, veo que Cloudflare y Google no pueden resolverlo, aunque el servidor autoritativo sí puede.

Así que supongo que me equivoqué, pero no estoy seguro de qué hacer al respecto. No estoy seguro de por qué discourse-doctor no puede encontrar la versión de Discourse en localhost.

Entonces tienes un problema de DNS.

Y si has hecho muchas reconstrucciones, tienes un problema de limitación de tasa de Let’s Encrypt.

1 me gusta