Problemas con Discourse 3.5.0.beta2-dev - SMTP y trabajos en segundo plano

El siguiente informe fue preparado para mí por ChatGPT, basado en mi experiencia real instalando Discourse (al no ser yo muy experto en tecnología, he estado recurriendo a la IA para obtener ayuda con tareas que me resultan difíciles). No necesito ayuda por ahora, pero espero que el informe pueda servir como una retroalimentación útil sobre la versión 3.5.0.beta2-dev.

==================

Estimado equipo de Discourse,

Quiero compartir algunos detalles de solución de problemas sobre los problemas de correo electrónico que encontré al ejecutar Discourse 3.5.0.beta2-dev. No necesito asistencia directa ya que he decidido volver a 3.4.0.beta4-dev, pero espero que este informe sea útil para identificar posibles problemas con la última versión de desarrollo.


1. Resumen del problema

Realicé una instalación limpia de Discourse en una nueva instancia de Vultr, utilizando el servicio SMTP de 20i (smtp.stackmail.com). Sin embargo, los correos electrónicos nunca se entregaron, a pesar de:

  • Una prueba de conectividad SMTP exitosa (openssl s_client -connect smtp.stackmail.com:587 -starttls smtp).
  • No aparecer errores en los registros de correo de 20i (lo que sugiere que Discourse en realidad no estaba enviando correos electrónicos).
  • Sidekiq fallando al procesar trabajos de correo electrónico.

Esto fue inesperado porque hace unas semanas, instalé con éxito Discourse 3.4.0.beta4-dev en una instancia idéntica sin ningún problema de correo electrónico.

Después de una depuración exhaustiva, descubrí que mi instalación actual había instalado inesperadamente Discourse 3.5.0.beta2-dev, lo que probablemente contribuyó a los problemas.


2. Problemas clave identificados

A. Los correos electrónicos no se entregaron

  • La configuración SMTP era correcta, verificada mediante pruebas manuales (las pruebas swaks y openssl tuvieron éxito).
  • Los correos electrónicos se encolaron en Sidekiq pero nunca se recibieron.
  • Los registros de correo de 20i no mostraron ningún rechazo ni intento de entrega (lo que sugiere que los mensajes nunca salieron de Discourse).
  • No aparecieron errores relacionados con el correo electrónico en production.log ( grep "smtp" no devolvió nada).

B. Problemas de Sidekiq y Redis

  • Inicialmente, Sidekiq no se estaba ejecutando (Sidekiq::Workers.new.size devolvió 0).
  • Reiniciar Sidekiq manualmente (sv restart sidekiq) falló porque Sidekiq faltaba como servicio.
  • Redis se estaba ejecutando (redis-cli ping devolvió PONG), pero los registros de Discourse aún mostraban errores de conexión a Redis (Errno::ECONNREFUSED).
  • Los registros de Sidekiq indicaban fallos en los trabajos debido a problemas de conexión a Redis, a pesar de que se confirmó que Redis estaba activo.
  • Iniciar Sidekiq manualmente (bundle exec sidekiq) permitió procesar trabajos, pero los correos electrónicos aún no se enviaban.

C. Desajuste de versión entre instalaciones

  • Mi instalación anterior (que funcionó) estaba en 3.4.0.beta4-dev.
  • Mi instalación actual instaló inesperadamente 3.5.0.beta2-dev, a pesar de utilizar el mismo método de configuración.
  • Dado que el correo electrónico funcionó perfectamente en 3.4.0.beta4-dev, sospecho de una regresión o un cambio que rompe la compatibilidad en la versión 3.5.

3. Acciones tomadas (Todas fallidas)

Intentamos sistemáticamente las siguientes soluciones:

:white_check_mark: Conectividad SMTP confirmada con:

openssl s_client -connect smtp.stackmail.com:587 -starttls smtp  # Exitoso
swaks --to my-email --server smtp.stackmail.com --port 587 --auth LOGIN  # Exitoso

:white_check_mark: Verificado que los correos electrónicos se encolaron:

Jobs.enqueue(:user_email, type: :test_message, to_address: 'masden@kumagaku.ac.jp')  # Devolvió un ID de trabajo
Sidekiq::Queue.new("default").size  # Devolvió 0 (indicando que el trabajo se procesó)

:white_check_mark: Revisados los registros de Discourse:

grep "smtp" /shared/log/rails/production.log  # No hay errores relacionados con SMTP
  • Fallos de conexión a Redis (Errno::ECONNREFUSED en production.log).

:white_check_mark: Reiniciados y activados manualmente los servicios:

sv restart sidekiq  # Falló, falta el servicio
redis-cli ping  # Confirmado que está en ejecución
bundle exec sidekiq  # Los trabajos se procesaron pero no se enviaron correos electrónicos

:white_check_mark: Comprobado si los correos electrónicos estaban siendo bloqueados por 20i:

  • No hubo rechazos ni intentos de entrega en los registros de correo de 20i.
  • Si los correos electrónicos hubieran sido rechazados, debería haber una entrada en el registro, pero no apareció nada.

4. Conclusión: Reversión a 3.4.0.beta4-dev

Después de una extensa solución de problemas, he decidido borrar la instalación y reinstalar 3.4.0.beta4-dev, ya que mi instalación anterior funcionó sin problemas en esa versión.

Aunque no necesito ayuda directa, quería informar de estos problemas porque:

  • El manejo de correo electrónico podría haber cambiado en la versión 3.5, impidiendo la transferencia SMTP.
  • La falta del servicio Sidekiq y los errores de Redis sugieren problemas de procesamiento de trabajos en segundo plano en la versión 3.5.
  • Dado que pude instalar 3.4.0.beta4-dev sin problemas, esto sugiere una posible regresión en la versión 3.5.

Espero que este informe sea útil para identificar posibles problemas en Discourse 3.5.0.beta2-dev.

Saludos cordiales,
Kirk

2 Me gusta

[cita=“Kirk Masden, post:1, topic:354732, username:Kirk”]
instalado inesperadamente Discourse 3.5.0.beta2-dev
[/cita]

Eso era esperado, porque es la versión actual.

Muchos están usando la misma última versión, y sidekiq funciona, y por lo tanto los correos también.

Así que quizá necesites ayuda, porque entonces no podrás reconstruir nada.

Y es mucho mejor que esto lo gestione alguien con más conocimientos, pero diría que aquí tenemos temas sobre sidekiq detenido. La búsqueda puede ayudar.

4 Me gusta

Sigo teniendo dificultades para instalar Discourse. Aquí tienes otro informe elaborado por ChatGPT. Creo que representa con precisión mi experiencia.


Informe: Problemas con la instalación de Discourse y servicio Sidekiq faltante

Contexto:
Intentamos una instalación limpia de Discourse en una instancia de Vultr, con la intención de configurar un despliegue estable y funcional. Sin embargo, encontramos problemas significativos, particularmente con servicios faltantes como Sidekiq, lo que impidió la entrega de correos electrónicos y el procesamiento de trabajos en segundo plano.


Resumen de los problemas encontrados

  1. Versión inesperada instalada
    • En lugar de la versión esperada v3.4.0.beta4-dev, la instalación se configuró por defecto en tests-passed, obteniendo una versión potencialmente inestable.
    • Faltaba el archivo VERSION, lo que hacía poco claro qué versión exacta se había instalado.
  2. Servicio Sidekiq faltante
    • El directorio /etc/service/sidekiq no estaba presente dentro del contenedor de Discourse.
    • Esto impidió que se ejecutaran todos los trabajos en segundo plano (correos electrónicos, notificaciones, tareas programadas).
  3. Problemas con el repositorio Git de Discourse
    • Ejecutar git rev-parse --abbrev-ref HEAD dentro del contenedor devolvió tests-passed, confirmando que se había instalado una versión no deseada.
    • Git arrojó un error de “propiedad dudosa detectada” (detected dubious ownership), que requirió intervención manual (git config --global --add safe.directory /var/www/discourse).
  4. Posibles problemas de dependencia
    • Incluso si se extrae una versión anterior de Discourse, existe la preocupación de que se obtengan dependencias más nuevas (Ruby, Redis, Sidekiq) durante la instalación, lo que podría causar problemas de compatibilidad.
    • Si las dependencias de Discourse no se fijan correctamente, la instalación puede comportarse de manera inconsistente entre entornos.
  5. Limitación de tasa de certificados SSL
    • Un intento de obtener un nuevo certificado SSL de Let’s Encrypt falló debido a que se superó el límite de tasa.
    • Esto provocó que Nginx no pudiera iniciarse, ya que no pudo cargar el archivo de certificado esperado.

Próximos pasos planificados

  1. Realizar un borrado completo y reinstalar
    • Eliminar /var/discourse por completo y volver a clonar el repositorio.
    • Extraer manualmente una versión estable (por ejemplo, v3.4.1) antes de ejecutar la instalación.
    • Usar ./discourse-setup en lugar de depender de los valores predeterminados para garantizar los parámetros correctos.
  2. Asegurar la instalación de Sidekiq
    • Antes de reconstruir, verificar que el servicio sidekiq esté incluido correctamente en el proceso de construcción.
    • Si Sidekiq falta después de la reconstrucción, verificar manualmente su instalación a través de bundle list | grep sidekiq.
  3. Fijar dependencias a versiones estables
    • Evitar problemas relacionados con dependencias utilizando explícitamente una imagen Docker de Discourse conocida y estable (por ejemplo, discourse/discourse:2.0.20240101).
    • Bloquear las versiones de gemas dentro del contenedor (bundle install --deployment --without test development).
  4. Reintentar la emisión del certificado SSL
    • Esperar el restablecimiento del límite de tasa de Let’s Encrypt y reintentar la generación del certificado SSL.
    • Si los problemas persisten, considerar el uso temporal de un certificado autofirmado para la resolución de problemas.

Solicitud de comentarios

Dados estos desafíos, agradeceríamos la opinión del equipo y la comunidad de Discourse sobre:

  • Sidekiq faltante en /etc/service/ en una instalación limpia – ¿Alguien más ha encontrado este problema?
  • Mejores prácticas para garantizar la estabilidad de las dependencias – ¿Existe una forma recomendada de fijar las versiones de las dependencias para las instalaciones de Discourse?
  • Posibles problemas con la instalación predeterminada de tests-passed – ¿Podría haber un problema con la forma en que se obtienen las versiones?

Cualquier información sería útil antes de proceder con la reinstalación. ¡Gracias de antemano!

En realidad no es inestable. Es la predeterminada para todos los foros ahora. Discourse no pondrá una rama inestable como predeterminada.

Hmm… ¿qué ves cuando vas a /sidekiq en tu foro?

¿Qué rama tienes la intención de instalar? ¿Quizás esta guía te ayudará?

3 Me gusta

Creo que lo que sea necesario son algunos detalles sobre la configuración de su VPS. CPU, RAM, espacio en disco y ziS, es decir, Ubuntu LTS 24.

Cuando dice que probó el correo, ¿utilizó la prueba de discourse y recibió un correo electrónico?

En mi archivo app.yml en su XP, debería tener 3 líneas de configuración principal para el SMTP.

  • Nombre de usuario:
  • Contraseña
  • PUERTO

Ahora, por lo que dijo, ¿esto funcionaba en una instalación anterior de discourse?

Como se mencionó, “Tests-Passed” es la versión recomendada para instalar. Estable, por lo que tengo entendido, es más para personas con plugins y temas personalizados, lo cual podría requerir actualizaciones más frecuentes para evitar fallos.

¿Puede compartir un registro de reconstrucción con errores? Recuerde desplazarse hacia arriba al capturar el registro, ya que el error final es solo un resultado fallido. Siempre puede redactar datos sensibles como usuario SMTP y contraseña.

También hay algunos temas sobre problemas con SMTP de correo electrónico que pueden tener soluciones.

1 me gusta

Disculpa mi tardía respuesta. Como escribí en respuesta a otro comentario, no puedo responder con detalles sobre mi último intento fallido porque he borrado gran parte del software para poder intentarlo de nuevo. Informaré tan pronto como pueda.

Gracias por tus detallados comentarios. Me disculpo por mi lenta respuesta.

Estoy intentando otra instalación con versiones anteriores de varios programas. Eso me dificulta responder a tus preguntas sobre mi intento fallido anterior. Tan pronto como pueda completar mi próxima instalación, informaré.

1 me gusta

Algo a considerar como prueba adicional si es necesario. Crea una cuenta gratuita en https://www.brevo.com; tienen un nivel gratuito de 300 correos electrónicos por día. Yo uso este en este momento.

Si tienes problemas para enviar correos, esto podría ayudar a probar si está relacionado con tu proveedor de correo.

2 Me gusta

TL;DR no confíes en ChatGPT, son falsas alarmas.

Es bueno pedir ayuda, es una mala idea confiar en ella, como mostraré a continuación.
Gracias por asegurarme que ChatGPT no me dejará sin trabajo pronto. :wink:

beta4-dev es tan potencialmente inestable como tests-passed

No existe tal archivo.

No debería existir tal directorio.

Lo dudo.

Esto es esperado.

Este es un comportamiento normal si usas git en un directorio sin ser el propietario.

Esto no tiene sentido. Y tests-passed es más nuevo de lo que ‘esperabas’, no más antiguo.

Esto se debe a que lo intentaste demasiadas veces.

6 Me gusta

Quiero enfatizar esto.
La mayoría de las veces, si le sugieres a ChatGPT que hay problemas que encontrar, encontrará problemas, incluso si no los hay. También es rápido para hacernos entrar en un bucle infinito de “soluciones” que sugiere continuamente.

5 Me gusta

¡Muchas gracias!

En lo que respecta a la IA, está claro que ChatGPT no ha sido una guía fiable. Por otro lado, he encontrado que la depuración es difícil, por lo que la tentación de confiar en ella es grande para alguien como yo.

Acabo de completar una instalación exitosa. ChatGPT (versión de pago) no pudo llevarme al objetivo, pero Claude de Anthropic (también versión de pago; uso ambos) finalmente lo hizo. Me ayudó a solucionar problemas que ChatGPT había introducido.

Intentaré escribir más sobre mi experiencia más adelante. ¡Gracias por todos sus útiles comentarios!

2 Me gusta

Estoy de acuerdo. Por mi uso, Claude es mucho más cómodo y generalmente da una respuesta correcta de inmediato.
¡Me alegro de que lo hayas conseguido!

5 Me gusta

¡Gracias! Es notable lo diferentes que pueden ser para ciertas tareas, casi como personas con personalidades distintas. Claude parece ser más “reflexivo” mientras que ChatGPT tiende a sacar conclusiones precipitadas y a adelantarse un poco más. He estado en situaciones en las que ChatGPT es mejor, sin embargo. Espero que AMBOS mejoren. La IA me ha ayudado a escribir muchos guiones que realmente funcionan, a pesar de que no soy un escritor de guiones. Tiene el potencial de ser una gran herramienta para personas con dificultades tecnológicas como yo, pero definitivamente necesita mejorar. Es realmente frustrante que te lleven por un camino sin salida. :frowning:

4 Me gusta

Aquí hay un breve informe sobre mi instalación exitosa con una pregunta sobre cómo proceder.

Todavía no estoy seguro de por qué tuve problemas con SMTP en intentos recientes. De hecho, mi primer intento hace unas semanas fue exitoso, pero estaba usando un servidor Vultr que decidí que era más grande de lo que necesitaba y la única forma de reducirlo era conseguir un servidor nuevo y más pequeño y luego borrar el más grande.

Según un correo electrónico que recibí, la versión de Discourse que instalé hace unas semanas era la 3.4.0.beta4-dev. El correo electrónico me recomendaba actualizar a la 3.4.0.beta4.

Dado que tuve problemas con SMTP en la 3.4.0.beta4-dev, pensé en intentar instalar una versión anterior y estable de Discourse. En una discusión con ChatGPT (poco fiable, lo sé), decidimos intentar instalar la 3.4.1. Pensé que esa versión sería estable. Esto es lo que terminamos instalando:

• Versión de Discourse: 3.5.0.beta2-dev
• Versión de Docker: 23.0.6
• sidekiq: 6.5.12
• Versión de PostgreSQL: PostgreSQL 15.12 (Debian 15.12-1.pgdg120+1)
• Versión de Redis: 7.0.15
• NGINX: 1.26.2
• Versión de Ubuntu: 22.04 LTS (Jammy Jellyfish)
• Versión de Git: 2.39.5

Creo que, independientemente de nuestra intención (es decir, mi intención asistida por IA) de instalar versiones estables anteriores, terminamos instalando Discourse 3.5.0.beta2-dev después de todo.

Fue difícil (muchos intentos fallidos y el uso de comandos que me dio la IA para arreglar cosas que no funcionaban), pero mi Discourse finalmente está en funcionamiento.

Aquí hay algunas preguntas:

  1. Si no me equivoco, actualmente no se anima a los usuarios a actualizar a la 3.5.0, presumiblemente porque aún no está completamente probada. Si es así, ¿por qué los novatos como yo se ven más o menos obligados a instalarla?

  2. Creo que mi versión de Docker es antigua (obsoleta). ¿Debería simplemente usar la terminal para actualizar a la última versión? Discourse está funcionando ahora y, dado que he tenido tantos problemas para llegar a este punto, no quiero hacer nada que pueda estropearlo.

  3. Creo que las otras versiones de software son bastante nuevas. Si ve algo que pueda ser problemático o que necesite una actualización, hágamelo saber.

  4. ¿Hay alguna página o sección de esta comunidad que aborde temas técnicos de “cuidado y mantenimiento”? Quiero mantener mi comunidad sana y funcionando y estar preparado con copias de seguridad, etc., para cualquier problema que pueda surgir.

2 Me gusta

Acabo de completar una restauración desde una copia de seguridad de la comunidad anterior de Discourse. Parece que fue bien y es posible que también haya actualizado Docker (problema mencionado anteriormente):

Me pregunto sobre este mensaje, que recibo inmediatamente después de la restauración: “El correo saliente se ha desactivado para los usuarios que no son del personal”.

Refiriéndome a otro hilo aquí:

Encontré dónde cambiar la configuración.

Así que, ahora supongo que estoy listo para empezar, pero si es posible, agradecería confirmación. ¿“no” es la configuración correcta? Creo que los usuarios normales tienen que recibir notificaciones por correo electrónico, así que estoy un poco desconcertado por la configuración de desactivación. Me pregunto qué tipo de situaciones requerirían que el correo se desactive.

Tuve un problema similar con el envío de correos electrónicos en una instalación nueva de Discourse, que detallé aquí:

El problema fue que la dirección de correo electrónico de notifications en app.yml no se había autenticado con mi proveedor SMTP (SendGrid).

No apareció nada en los registros principales de Discourse, ni en los registros de SendGrid. El error se mostró al ejecutar discourse-doctor:

Reason: 550 The from address does not match a verified Sender Identity.

Si aún no lo has hecho, te sugiero ejecutar discourse-doctor, ya que puede proporcionar más información sobre por qué no se envían los correos electrónicos.

2 Me gusta

¡Muchas gracias!

Excelente consejo. No conocía Discourse-doctor pero creo que me puede haber ahorrado mucho tiempo.

Lo tendré en cuenta si me encuentro con otros problemas. :slight_smile:

1 me gusta