Accidentalmente actualizado, ahora algunas configuraciones están perdidas/rotas

Para ser totalmente honesto, no he realizado ningún mantenimiento manual en nuestra instalación de Discourse autoalojada desde hace muchísimo tiempo, y alguien más la configuró originalmente.

Necesité cambiar mis credenciales de SMTP, ya que SendGrid exige migrar de la autenticación básica a las claves de API.

Encontré este documento: Proveedores de correo recomendados para Discourse

Que indica:

Para cambiar el servicio de correo actual, también ejecute ./discourse-setup (esto dejará el foro fuera de línea durante unos minutos mientras se reconstruye).

Ejecuté ese comando, respondí las preguntas como se esperaba y esto generó unas 2.000 líneas de salida en stdout, finalizando con:

Actualización completada
----------------
Las estadísticas del optimizador no se transfieren mediante pg_upgrade, por lo que,
un vez que inicie el nuevo servidor, considere ejecutar:
    ./analyze_new_cluster.sh

Ejecutar este script eliminará los archivos de datos del clúster antiguo:
    ./delete_old_cluster.sh
-------------------------------------------------------------------------------------
ACTUALIZACIÓN DE POSTGRES COMPLETADA

La base de datos antigua 10 se almacena en /shared/postgres_data_old

Para completar la actualización, vuelva a reconstruir utilizando:

./launcher rebuild app
-------------------------------------------------------------------------------------

cfd4df26701b4b4cd4a4202f30a9c8165a1ba609c921bffc25f250f52fee6cbe

Ahora, no esperaba que esto “actualizara” nada. Solo quería cambiar las credenciales de SMTP. Pero el sitio no se reinició automáticamente, así que hice lo que dice el texto “para completar la actualización” y ejecuté:

./launcher rebuild app

Esto activó otras ~8.000 líneas de salida en stdout. El sitio finalmente volvió a estar en línea, PERO no se ve igual:

  • Mi logotipo desapareció y fue reemplazado por el logotipo de “Discourse”.
  • Las imágenes de avatares de los usuarios estaban rotas. Eventualmente, comenzaron a funcionar nuevamente.
  • Las imágenes en las publicaciones y los logotipos de las categorías estaban rotos. Estos aún no funcionan. Busqué imágenes con nombres de archivo coincidentes en el directorio ./discourse/share Y en nuestro bucket de S3 (donde la URL espera encontrarlas), pero no existen.
  • Las publicaciones de mi categoría “soporte”, que había ocultado de la página “más recientes”, ahora son visibles en esa página nuevamente.
  • Mi categoría “soporte” ya no es visible en la página “categorías”.
  • La página “categorías” ahora tiene 2 columnas, con las categorías a la izquierda y “más recientes” a la derecha. Creo que antes era solo una lista de categorías.
  • El color del + en mi botón + Nuevo tema cambió de blanco a gris.

En este punto, sospecho que se perdió alguna configuración, pero todas mis publicaciones están intactas. Luego sospecho que Discourse se actualizó a sí mismo (no sé desde qué versión, probablemente muchas versiones), y algunos ajustes predeterminados subyacentes, CSS, plantillas, etc., han cambiado, causando los problemas mencionados anteriormente.

Al ver el código fuente, puedo ver que la versión ahora es 2.6.0.beta6, que aparentemente se publicó hace solo 7 días.

Entonces, mis preguntas son:

  • ¿Es normal tener que actualizar completamente el software de esta manera solo para aplicar un cambio de configuración simple, como las credenciales de SMTP?
  • ¿Cómo puedo cambiar configuraciones o aplicar actualizaciones de seguridad sin actualizar todo el software?
  • ¿Dónde están mis imágenes, o por qué ha cambiado su URL de alguna manera que las hace inaccesibles?
  • ¿Existe alguna forma de revertir sin perder las nuevas publicaciones desde que ocurrió todo esto? Ni siquiera sé qué versión estábamos ejecutando antes. Sí tengo copias de seguridad de Discourse en S3 (solo un volcado SQL comprimido con gzip).
  • ¿Solo necesito revisar todas las configuraciones y personalizaciones manualmente para solucionar cosas como el color de + Nuevo tema y la categoría “soporte” oculta/visible?

Pensé que habíamos estado manteniendo instantáneas de EBS de nuestro volumen de EC2 donde se aloja Discourse, pero resultó no ser así. Desde entonces, he habilitado las instantáneas para que podamos revertir de esa manera en el futuro si es necesario.

Gracias.

Sí. Habría sido posible destruir y reiniciar el contenedor para aplicar la nueva configuración de SMTP; tendrías que buscar cuidadosamente cómo hacerlo.

No. Las actualizaciones de seguridad forman parte del software completo. Podrías ejecutar la rama estable, pero parece que estabas varias versiones atrás, por lo que al menos la mayoría de tus problemas aún se habrían presentado.

Eso no está claro. Por lo general, no se pierden en una actualización.

No. [quote=“mrmachine, post:1, topic:171465”]
¿Solo necesito revisar todas las configuraciones y personalizaciones manualmente para corregir cosas como el color de + Nuevo tema y la categoría de “soporte” oculta/visible?
[/quote]

Sí. Parece que estabas ejecutando una versión de varios años atrás. Docenas de programadores han dedicado miles de horas desde entonces. Han realizado cambios que rompieron algunas de tus personalizaciones.

Pero aún no podrás revertir sin perder las publicaciones desde la última copia de seguridad.

Deberías actualizar en cada versión beta, o cambiar a la rama estable en la próxima versión estable.

Solo hago un seguimiento de esto. Estábamos almacenando las imágenes cargadas en S3 y no habíamos optado por descargar imágenes remotas para evitar enlaces rotos. No estoy seguro de si esto es relevante, pero el punto es que las imágenes deberían haberse almacenado en S3 y referenciarse con URLs de S3 en Discourse.

Después de la actualización, muchas imágenes no se mostraban. Logotipos de categorías y cargas de usuarios en publicaciones. Al revisar S3, los nombres de archivo referenciados no existían.

Por suerte, teníamos habilitada la versión de S3 y pude ver en la consola de S3 que MUCHAS imágenes referenciadas habían sido eliminadas durante/después de la actualización.

Adapté un script de Python que encontré (https://stackoverflow.com/a/54613767/2829685) para iterar sobre todas las versiones de objetos en nuestro bucket de S3 y eliminar “marcadores de eliminación” de la versión actual de cualquier archivo con una marca de tiempo last_modified igual o posterior a la fecha de la actualización.

Esto tomó la mayor parte del día y recuperó alrededor de 45 mil imágenes. Parece que Discourse crea muchas miniaturas para cada imagen.

Ahora nuestro logotipo de categoría y las imágenes cargadas por usuarios en las publicaciones han vuelto. Pero no tengo idea de cómo todas estas imágenes pudieron haber sido eliminadas en S3 como parte del proceso de actualización.

Parece que esto podría ser un error muy peligroso en el proceso de actualización de Discourse. Aunque quizás ya se haya corregido, ya que estaba actualizando desde una versión tan antigua.