Actualización de Discourse muy antiguo Obtener error de Ruby

Estoy intentando actualizar una instalación muy antigua.

Empecé con esto:

cd /var/discourse
sudo git pull
sudo ./launcher rebuild app

Luego obtengo un error y, al desplazarme hacia arriba en el archivo de registro, el único error es este:

ERROR: Error al instalar bundler:
bundler-2.5.3 requiere la versión de Ruby >= 3.0.0. La versión actual de Ruby es 2.7.2.137.

¿Cómo consigo una nueva instalación de Ruby? El sistema se instaló originalmente desde una imagen de Docker en Digital Ocean y no se ha actualizado mucho, si es que se ha actualizado, en varios años.

Se está ejecutando en Ubuntu 18.04.

Ejecuté ./discourse-doctor

y hubo un estado de “detached head” (cabeza desvinculada) y luego una reconstrucción y luego el mismo error de Ruby.

Estoy totalmente perdido ahora.

¿Alguna ayuda sobre cómo hacer que funcione una actualización desde una versión antigua?

Es posible que la imagen de su contenedor esté fijada a una imagen base de Discourse muy antigua.

¿Puede publicar aquí la configuración de su contenedor (editada)?

No sé cómo hacer eso, pero del resultado del doctor de discourse encontré esto
VERSIÓN DE DOCKER: Docker version 19.03.1, build 74b1e89

Y se creó hace 3 años

1 me gusta

Dada la antigüedad de la máquina host, tu mejor opción aquí es probablemente hacer una copia de seguridad del sitio, crear un nuevo servidor, realizar la instalación y luego restaurar la copia de seguridad en el nuevo servidor.

Será menos trabajo (y mucho más fácil) que actualizar el servidor existente.

2 Me gusta

Pero como la instalación falló, no puedo ejecutar Discourse para hacer una copia de seguridad. Puedo y he tomado una instantánea de la gota de DigitalOcean, pero eso no es realmente una copia de seguridad, hasta donde yo entiendo.

Deberías poder simplemente ejecutar ./launcher start app para reiniciar el sitio anterior.

1 me gusta

Intenté eso y ahora me da un problema de 502 bad gateway :sigh:

1 me gusta

Haría rsync de /var/discourse antiguo al nuevo servidor. O tal vez solo containers y shared.

OK, estoy tan fuera de mi alcance aquí que mi solución es ir a publicar un anuncio de ayuda pagada en el Marketplace :grinning:

2 Me gusta

Si tienes una instantánea del droplet con todos tus datos antes de intentar actualizar el contenedor, deberías poder obtener una copia de seguridad de esa.

Si no es así, casi seguro que sigues estando bien, pero necesitas a alguien experto en el proceso para poder extraer los datos de él si no puedes volver a poner en marcha el contenedor.

Ahora mismo, incluso con la puerta de enlace defectuosa, si puedes acceder al contenedor deberías poder ejecutar una copia de seguridad de discourse y obtener tus datos.

4 Me gusta