Comprobación de dependencias de actualización/mejora de Discourse

Como hemos observado a lo largo de los años, a veces una actualización/mejora falla debido a las dependencias. Por ejemplo, la versión de Docker/SO.

Mi idea es que Discourse ejecute algún tipo de verificación de dependencias para garantizar que se cumplan los requisitos básicos. Si la verificación falla, proporciona algunos detalles sobre lo que podría ser necesario y aborta el proceso de actualización/mejora.

Esto ayudará a reducir el tiempo de inactividad del foro al abortar una actualización/mejora del Core Discourse al abortar el proceso que fallará.

Se esfuerzan bastante para hacer eso. La cantidad de cosas que pueden salir mal es bastante grande. Principalmente, si no mantienes tu sistema operativo actualizado (y probablemente Docker), es tu culpa.

Intentan verificar la versión de Docker, y los scripts que uso actualizan Docker si se sabe que es malo (probablemente siempre debería actualizar Docker).

Creo que podrían hacerlo mejor forzando siempre una actualización de la línea de comandos si la imagen base cambia en absoluto. Casi nunca lo uso ya que mi panel de control hace una actualización de la línea de comandos con un clic.

1 me gusta

deos update docker_manager ¿actualizar docker?

1 me gusta

Definitivamente no estoy intentando echar culpas. Lo desafortunado con el auto-hospedaje más específicamente, no es necesariamente entender el sistema operativo del servidor. La mayoría de las personas instalan un sistema operativo y generalmente lo mantienen actualizado. Pero a menudo con LTS (soporte a largo plazo), puede que no sepan o entiendan cómo actualizar el sistema operativo, especialmente si están acostumbrados a versiones continuas (rolling releases).

Por ejemplo, una empresa a la que ayudo, después de no actualizar durante un tiempo, notó que había una actualización disponible. Así que actualizaron Docker a través de la interfaz de usuario web, lo que les permitió actualizar Discourse.

Debido a que el Ubuntu LTS no era lo suficientemente nuevo, la actualización de Docker no cumplía con el requisito mínimo. La interfaz de usuario web todavía permitía el intento de actualización, que por supuesto falló y sacó el sitio de funcionamiento.

Así que intentaron una reconstrucción por línea de comandos que, por supuesto, falló debido a que no se cumplían los requisitos mínimos.

Si la actualización en la web identificara que la versión de Docker no era la mínima, podría haber abortado el proceso de actualización notificando una dependencia no satisfecha sin que el sitio se cayera.

Eché un vistazo general por ellos. Como parece que tal vez estén ejecutando otras cosas en el servidor, les he indicado que pidan a su técnico que investigue la actualización del LTS a una versión más reciente, ya que no quería intentar actualizar el sistema operativo en caso de que rompa otras cosas que estén ejecutando.

¿Hay una manera fácil de reiniciar el contenedor antes del intento de reconstrucción web y de línea de comandos?

Intenté ./launcher start app

Lo cual falló.

La otra cosa. Debido a cómo se cayó el sitio de Discourse, ¿puede funcionar la creación de un nuevo servidor con rsync? Están ejecutando la versión estable en lugar de las pruebas recomendadas.

Si ejecutan el ': ‘do-release-upgrade’ y actualizan Docker manualmente, ¿sería esto efectivo para actualizar postgreq?

Estará dentro de la versión compatible con Ubuntu LTS. Pero solo la(s) versión(es) compatibles con la LTS. En este caso, su LTS está al final de su vida útil. Por lo tanto, no es compatible con la versión mínima de Docker.

Las versiones de Ubuntu LTS, si no recuerdo mal, tienen una vida útil de actualizaciones de 4 años.

1 me gusta

No la gente con la que trabajo. No lo actualizarán cuando les diga que está obsoleto.

Estoy bastante seguro de que las cosas que se ejecutan dentro del contenedor no pueden decir qué versión de Docker están ejecutando.

Quizás pueda. Parece que puedes obtener esto desde dentro de un contenedor para ver qué versión se está ejecutando.

https://docs.docker.com/engine/api/v1.30/#operation/SystemVersion

Así que tal vez podrían hacerlo mejor. Eso podría ser algo interesante para agregar al panel, si realmente funciona.

Normalmente funciona. Una excepción es si la base de datos ha sido migrada.

Si el sistema operativo está desactualizado, generalmente me resulta más fácil y seguro mudarme a una nueva máquina virtual. Idealmente, lo haces mientras el servidor antiguo todavía funciona. Ver Mover un sitio de Discourse a otro VPS con rsync

Si tienes una copia de seguridad, puedes omitir la copia de la base de datos y omitir la actualización de la base de datos, simplemente restáurala en la nueva base de datos.

1 me gusta

Por eso dije actualizar. En el caso de fin de vida útil, requiere una actualización del sistema operativo. Pero estoy de acuerdo contigo en que hay una gran variedad de personas que no siguen bien las instrucciones. :wink:

Cuando me ascendieron a administrador de la empresa para la que ayudo de forma gratuita :woman_facepalming:

Les dije durante más de un mes seguido que su foro iba a fallar en algún momento, ya que no tenían el espacio necesario para realizar la reconstrucción de la aplicación. Tenían un servidor de tamaño mínimo (hace 7 años). Si mal no recuerdo, tenía 25 GB de espacio en total. Por supuesto, no escucharon. Y terminaron pagando a alguien aquí para trasladar el foro a un nuevo servidor. Tiempo total de inactividad de unas 2 semanas, quizás un poco más.

Eso sería genial si se pudiera hacer funcionar. Para gente como tú y yo, que vivimos un poco aquí, nos mantenemos bastante actualizados, en comparación con mucha gente que solo visita después de que surge un problema o busca complementos y otros problemas de soporte más menores.

Ok, les informaré. Sin embargo, no estoy seguro de la antigüedad de la copia de seguridad. Así que imagino que en su caso se necesitará explorar rsync o la actualización del sistema operativo.

En mi servidor personal que estaba a punto de quedar obsoleto, leí mucho y tuve cuidado de no actualizar por web/línea de comandos. Hasta que me sentí cómodo usando el procedimiento rsync. Y todavía tuve un par de pequeños inconvenientes que tú y la comunidad me ayudaron a depurar.

:clinking_beer_mugs::smiling_face_with_sunglasses::+1::sparkles:

1 me gusta