Copia de seguridad de Discourse desde la línea de comandos

:bookmark: This guide covers how to back up and restore your Discourse site using command line tools, specifically designed for self-hosted environments.

:person_raising_hand: Required user level: Administrator

:information_source: You can use the below placeholders to automatically fill out the command line prompts in this guide:

Backing up

To create a backup of your Discourse site, follow these steps:

  1. Enter the container:
./launcher enter app
  1. Run the backup:
discourse backup
exit

This will print out the final filename of your backup. Download the backup and container configuration (if needed) to your local machine:

scp =USER=@=HOST=:/var/discourse/shared/standalone/backups/default/=FILENAME= .
scp =USER=@=HOST=:/var/discourse/containers/app.yml .

Restoring

To restore a Discourse backup, follow these steps:

  1. Install a Discourse site on the server you are restoring to.

If you’re testing this procedure multiple times, you can wipe the data on your test server.

Wipe Discourse data (optional)
./launcher stop app
./launcher destroy app
rm -r /var/discourse/shared/standalone/
mkdir -p /var/discourse/shared/standalone/backups/default/

  1. Upload the backup file:
scp =FILENAME= =USER=@=HOST=:/var/discourse/shared/standalone/backups/default/
  1. Enter the container and start the restore:
./launcher enter app
discourse enable_restore
discourse restore =FILENAME=

If you happen to forget what the filename was, run the “discourse restore” command by itself to get a list of available backup files.

:information_source: For a two-container setup, use ./launcher enter web_only and replace standalone with web-only in the path to backups.

For additional information about restoring Discourse backups, see Restore a backup from the command line.

Last edited by @SaraDev 2024-08-23T20:50:17Z

Check documentPerform check on document:
38 Me gusta

¿dónde debo ejecutar este comando? ¿en la terminal de mi servidor en la nube o en mi máquina local?
aunque cualquiera de las dos me da un error de permiso denegado

En tu máquina local.

¿Estás usando una clave SSH para conectarte? El error está relacionado.

El comando debería ser entonces:

scp -i /path_to_your_key/your_key.pem root@147.43.15.199:/var/discourse/shared/standalone/backups/default/discourse-2024-12-25-033740-v20241211222608.tar.gz .

Tengo un escenario en el que quiero migrar la instalación de Discourse a un servidor completamente nuevo.
Mi plan era:

  1. crear una nueva instalación de Discourse en blanco
  2. hacer una copia de seguridad de Discourse antiguo, scp la copia de seguridad al nuevo servidor y restaurarla
  3. Copiar todo S3 (imágenes, etc.) al nuevo S3 en una cuenta diferente

El proceso de restauración va bien hasta que empieza a buscar S3 y luego falla por falta de acceso. Creo que está intentando acceder al mismo nombre de bucket S3 en el Discourse antiguo, pero ese no existe en el nuevo y no puedo crearlo.

¿Hay alguna solución recomendada?

Pensé que podría intentar cambiar el nombre del bucket S3 en el Discourse antiguo (antes de realizar la copia de seguridad) y luego, al restaurar, esperaría tener el nuevo bucket S3. Pero me temo lo que le pasará al Discourse antiguo si simplemente lo cambio a un bucket inexistente.

Hay una configuración oculta que descargará los archivos s3 y los incluirá en la copia de seguridad.

Necesitas configurar s3 en el archivo yml como en Configurar un proveedor de almacenamiento de objetos compatible con S3 para subidas

Luego, cuando restaures la copia de seguridad, enviará las subidas al nuevo bucket.

1 me gusta

¿Llegaste a resolver esto?

Necesitas configurar s3 en las variables de entorno como se describe en Configurar un proveedor de almacenamiento de objetos compatible con S3 para cargas

Esto es especialmente cierto si la configuración de s3 es diferente en el nuevo servidor. Poner los valores de s3 en la base de datos puede causar muchos problemas.

Pero hay un interruptor para el comando de restauración que hace que se detenga entre las distintas partes. Puede ayudar.