Rompi mi instalación con una actualización fallida, ¿cómo puedo recuperarla?

Resumen: Hice clic en el botón de actualización en mi panel de administración de Discourse y la actualización falló. Decidí reiniciar todo e intentar el proceso de actualización nuevamente. Desafortunadamente, mi panel de administración de Discourse no se inicia. Me gustaría que las cosas volvieran a funcionar.

Información de apoyo: Esto está en una VM de DigitalOcean que sirve a un sitio de WordPress. Lo configuré hace años y olvidé muchos detalles, pero de alguna manera Nginx mira la URL solicitada y decide si activar WP para el contenido principal o Discourse para las conversaciones. El lado de WP todavía funciona.

Dado el enfoque ingenuo y casual sugerido en mi introducción, no será una sorpresa que no pueda identificar la naturaleza exacta del error de instalación que me ha llevado a este triste estado. Ni siquiera sé dónde encontrar los archivos de registro que podrían contener pistas sobre cómo reanudar el proceso de actualización.

Cualquier indicio sería muy bienvenido. No tengo experiencia en el conocimiento de administración web, pero me siento cómodo con la línea de comandos en sistemas basados en Debian. El software mencionado se está ejecutando en Ubuntu 20.04.6 LTS, y tengo acceso SSH a la plataforma relevante. ¡Gracias!

Hola, intenta reconstruir el contenedor.

1 me gusta

Puedes intentar

cd /var/discourse
./launcher rebuild app

Eso podría solucionar el problema. Si no, probablemente será difícil adivinar.

2 Me gusta

Muchas gracias por sus respuestas. Seguiré la sugerencia de Jay y les informaré. (Pero puede que pasen varias horas antes de que lo haga. Primero tengo que hacer pizza y dársela a mis invitados. :slight_smile:

1 me gusta

Lamentablemente, mi VM de DigitalOcean parece ser demasiado pequeña. Si digo du -sh después de un inicio de sesión reciente, dice que mi disco asignado /dev/vda1 tiene aproximadamente 7 GiB libres. Después de ejecutar el comando launcher rebuild app, ocurre una gran cantidad de descargas y desempaquetado, y luego el script se aborta, diciendo que solo ve 3.3G disponibles y que se niega a continuar a menos que haya 5G o más para usar.

Por supuesto, he hecho lo que he podido para localizar y eliminar cosas extran, pero encontrar otros 1.7G para purgar será una tarea difícil. ¿Hay algún consejo experto para esta situación? (Ya sea en la categoría de objetivos enormes listos para ser eliminados, o en el ámbito de pedirle al lanzador que sea menos exigente).

PD: Alternativamente, ¿puedo reconstruir la aplicación en una máquina más potente y luego simplemente cargar un archivo adecuado en esta VM poco potente? ¿O es esto magia negra excesivamente arcana?

Intenta ejecutar el comando ./launcher cleanup. Esta operación puede ayudarte a purgar el espacio de almacenamiento consumido por Docker.

Además, si estás seguro de que anteriormente seguiste la guía de instalación oficial, puedes ejecutar ./launcher destroy app para eliminar el contenedor anterior roto. Sin embargo, es imperativo asegurarse de que tu base de datos y las cargas se almacenen en el sistema de archivos del host en lugar de dentro del propio contenedor.

De hecho, puedes realizar la reconstrucción en una máquina separada y posteriormente transferir la imagen de Docker a tu VM. Sin embargo, necesitarás ejecutar manualmente el comando rake db:migrate en tu VM. No estoy completamente seguro de si este enfoque podría introducir otros problemas.

1 me gusta

Solo migra a un nuevo VPS con más espacio.

Toma alrededor de 30 minutos, si eso.

2 Me gusta

No estoy 100% seguro, pero me gustaría intentarlo. ¿Cómo puedo realizar el paso imperativo de preservar mi base de datos y mis cargas? ¿Sería suficiente copiar los archivos del directorio /var/discourse/shared/standalone a una ubicación segura antes de hacer algo serio? (¿Hay alguna referencia a un proceso estándar para el tipo de proyecto de restauración práctica que esto iniciaría?)

Creo que la respuesta pragmática de @Robert sería la mejor opción para la mayoría de las personas en una situación similar. Yo estoy tomando una dirección diferente porque mi contexto es único en varios aspectos. De estos, el más importante es: mi instalación es un proyecto de hobby a pequeña escala donde perder todo sería decepcionante pero no devastador.

Gracias de nuevo.

Si las cosas están en el directorio shared/standalone, estás a salvo.

Si tienes WordPress y Discourse, probablemente necesites actualizar a una VM de 2 GB/50 GB. Si has eliminado todas las copias de seguridad y has realizado una limpieza del lanzador, es probable que tengas algo de espacio. (Ah, también puedes limpiar la caché de apt si buscas en Google cómo hacerlo).

1 me gusta

Puede que sea o no el mismo problema que acabamos de encontrar: Estábamos usando la API de maxmind para hacer la conversión de ip a geolocalización. La versión anterior requería la clave API de maxmind en el archivo app.yml. Un cambio reciente (¿no documentado?) requiere la clave API de maxmind Y el nombre de usuario en el app.yml. La falta del nombre de usuario hace que el foro no se pueda compilar.

2 Me gusta

Gracias, @Frully, pero creo que este es un problema diferente. Aquí está el mensaje de error que me detiene:

Status: Downloaded newer image for discourse/base:2.0.20240602-0023
docker.io/discourse/base:2.0.20240602-0023
Tienes menos de 5 GB de espacio libre en el disco donde se encuentra /var/lib/docker. Necesitarás más espacio para continuar
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G   21G  3.5G  86% /

Continuaré mi aventura de solución de problemas esta noche después del trabajo.

Amigos, voy a cambiar de táctica y seguir la idea de @merefield de migrar toda mi configuración a un VPS más grande. Descubrir cómo transferir mis activos de la configuración rota a la nueva que funcione será un desafío en esta actividad, sin duda, pero intentaré algunos métodos de sentido común y comenzaré un nuevo hilo si ninguno de ellos funciona. Con agradecimiento a todos los que colaboraron, creo que es seguro cerrar este hilo.

4 Me gusta

Epílogo: El proceso de mudarse a un nuevo host me enseñó algo útil sobre cómo ejecutar comandos de shell directamente dentro del contenedor de Discourse, ahora descrito en otro hilo. Hay un poco más de información sobre cómo ahorrar espacio en disco en ese otro hilo también.

2 Me gusta