Habilitar la configuración oculta para incluir cargas de S3 en las copias de seguridad

:bookmark: Esta guía explica cómo habilitar una configuración oculta en Discourse para incluir las cargas de Amazon S3 (Simple Storage Service) en tus copias de seguridad.

Discourse tiene la capacidad de almacenar las cargas de medios en Amazon S3 para escalabilidad y fiabilidad. Sin embargo, estas cargas no se incluyen en las copias de seguridad por defecto.

Esta guía cubre la habilitación de una configuración oculta para incluir las cargas de S3 en las copias de seguridad, con opciones para configurarla a través de la consola de Rails o el archivo app.yml.

Usando la Consola de Rails

Para habilitar que las cargas de S3 se incluyan en las copias de seguridad a través de la consola de Rails, puedes seguir estos pasos:

  1. Accede a tu servidor Discourse a través de SSH.
  2. Entra en el contenedor Docker de Discourse ejecutando:
cd /var/discourse
./launcher enter app
  1. Inicia la consola de Rails:
rails c
  1. Habilita la configuración ejecutando:
SiteSetting.include_s3_uploads_in_backups = true
  1. Sal de la consola y del contenedor escribiendo:
exit
exit

Este cambio entra en vigor inmediatamente. No es necesaria ninguna acción adicional.

Modificando el Archivo app.yml

También puedes realizar este cambio añadiendo o modificando el archivo app.yml en la sección env:.

  1. Accede al directorio del contenedor de la aplicación Discourse:
cd /var/discourse
  1. Abre el archivo app.yml ubicado en containers:
nano containers/app.yml
  1. Debajo de la sección env:, añade la línea:
DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
  1. Guarda el archivo y sal del editor.
  2. Aplica los cambios reconstruyendo la aplicación:
./launcher rebuild app

Para que este cambio tenga efecto, necesitas ejecutar el comando ./launcher rebuild app para que la configuración se aplique.

9 Me gusta

¿No es suficiente destruir y reiniciar el contenedor?

1 me gusta

Creo que no necesitas destruir y que el reinicio es suficiente. Lo confirmaré más tarde.

De todos modos, gracias @pfaffman por tu otra howto guía que utilicé como plantilla para esta.

2 Me gusta

Estoy seguro de que necesitas destruir e iniciar para cambiar las variables de entorno aplicadas al contenedor.

Por supuesto, si han realizado actualizaciones con el administrador de Docker, estas se perderán cuando se destruya el contenedor, por lo que la reconstrucción es la recomendación más segura. Quizás lo mejor sea recomendar la reconstrucción ya que es la más infalible.

3 Me gusta

¿Por qué, no es esta configuración suficiente para incluir todas las cargas en la copia de seguridad:
image

Eso incluirá las cargas locales pero no descargará archivos que estén en s3 para incluirlos en la copia de seguridad.

1 me gusta

Ok. No lo sabía.
Pero, ¿cuál es la diferencia entre la carpeta ‘Local Uploads’ y la carpeta “Files Stored in S3 ‘Uploads’”?

Además, aunque todavía NO he cambiado la configuración en web_only o en la consola de rails como se indicó anteriormente, solo elegí la configuración indicada aquí.

Pero aun así, cuando ejecuté la copia de seguridad, hace solo 10 minutos, pareció que descargó miles de archivos (que supongo que solo podrían estar en mi bucket de almacenamiento de AWS S3, y la palabra ‘Download’ en sí misma significa que está descargando de la carpeta remota del bucket S3).
También muestra que Failed to download muchos, muchísimos archivos. Así que supuse que si estos archivos estuvieran en el servidor de la nube local, ¿por qué no incluiría esos archivos en la copia de seguridad? Vea esta captura de pantalla:

Si ha configurado Configurar un proveedor de almacenamiento de objetos compatible con S3 para cargas y ha movido sus cargas locales a S3, entonces sus cargas están allí. No se copian de seguridad porque se asume que S3 tiene copias de seguridad y descargarlas es costoso y generalmente innecesario.

Si necesita sacarlas de S3 (como si estuviera alojado en discourse.org y se mudara a otro alojamiento), entonces necesita una copia de seguridad que incluya los archivos almacenados en S3.

¿Por qué quiere descargar sus archivos de S3?

Sí, parece que está fallando al descargar los archivos de S3. Supongo que no descargó ninguno, aunque es posible que su disco esté lleno, tal vez (esperaría un error de disco lleno, ¿pero tal vez no?).

1 me gusta

Gracias. De nuevo.

Siendo mi sitio muy, muy pequeño, pagar unos pocos dólares, que aumentan cada mes con pequeñas actualizaciones, cada mes a Aws S3 storage me resulta un poco poco práctico. Voy a trasladar la ‘Subida’ (y quizás la ubicación de la carpeta ‘copia de seguridad’ también) a otro proveedor como Google One Drive, iDrive, Hetzner, etc., alternativas baratas.
Ahora me doy cuenta de que incluso los diferentes tipos de almacenamiento de Aws (desde el más activo hasta el de archivo), si los hubiera elegido sabiamente desde el principio, me costarían la mitad por la misma cantidad/número de archivos.

Pero lo haría ahora.

1 me gusta

Cuando elegí almacenar mis ‘uploads’ de medios en un bucket de AWS S3 hace años, en ese momento (hasta donde sé) TAMBIÉN MOVIÓ todos los medios existentes subidos por los usuarios a S3.

Además, ahora he comprobado en mi carpeta /var/discourse/shared/web_only/uploads/default/optimized/1X, solo tiene 63 archivos png y /var/discourse/shared/web_only/uploads/default/original/1X solo tiene 3. (Excepto 1x, no existen otras carpetas similares en la carpeta ‘uploads o default’).

Además, NO he cambiado ninguna opción en la consola de rails ni en el archivo Yml HASTA AHORA para incluir las subidas de S3 en mis copias de seguridad. Entonces, ¿por qué muestra que ha descargado tantas ‘Subidas de Medios’ DESDE S3?
¿Y por qué falló al descargar tantos archivos subidos? Captura de pantalla aquí.

Además, mi carpeta de subidas en S3 tiene alrededor de 3 gb (32k archivos), mientras que los registros de copia de seguridad mostraron que solo descargó alrededor de 3.2k (10% del total).

Muy confuso.

¿Hay algún OTRO comando de rails para estar doblemente seguro de que esa opción no se activó hace años, cuando cambié a Aws S3?

Cualquier explicación será útil.