¿Necesitas mover algunas cosas de una instancia de Discourse a otra?
Hay una herramienta de línea de comandos para exportar un tema, un conjunto de temas o una categoría completa, y otra para importarlos en el otro extremo.
Exportación/Importación de Temas
- uno o más temas y sus respuestas
- los usuarios que publicaron en el tema
Exportación/Importación de Categorías
- la categoría y todas sus subcategorías
- su configuración de seguridad
- grupos personalizados mencionados en la configuración de seguridad
si alguno de los grupos tiene habilitadas las ‘solicitudes de membresía’, fallará. Desactiva esto antes de la exportación
- todos los temas y publicaciones en la categoría y subcategorías
- todos los usuarios que publicaron y asígnalos a los grupos
Inicio: Identificar los IDs
Primero, identifica el(los) ID(s) de la =Exportación= que deseas exportar. Lo encontrarás al final de la URL utilizada para acceder a él.
-
https://meta.discourse.org/t/how-to-contribute-to-discourse/53797 -
https://meta.discourse.org/t/how-to-contribute-to-discourse/53797/12
(en este caso estás en medio de un tema: toma el primer número) -
https://meta.discourse.org/c/howto/faq/4
ID(s) de Categoría o Tema
Múltiples temas
Puedes seleccionar más de un tema añadiendo IDs separados por un espacio; esto funciona en el campo de arriba (no creo que esto funcione para categorías):
53797 200943 124096
Ejecutar el Script de Exportación
La herramienta se puede ejecutar como usuario root dentro del contenedor:
cd /var/discourse
./launcher enter app
Ejecuta este comando:
discourse export_=Export= =ID=
La salida debería verse algo así:
> Iniciando exportación de =Exportación=…
>
> ¿De dónde vienen todos los usuarios nuevos?
> Exportación guardada en =Exportación=-export-2021-08-27-015437.json
>
> Listo
Mover el Archivo Exportado
El archivo .json exportado debe moverse desde el interior del contenedor de la aplicación donde realizaste la exportación al interior del contenedor de la instancia receptora. Esto requiere algunos pasos.
Copiarlo al ‘exterior’
Sal del contenedor si aún no lo has hecho
exit
Ahora deberías tener un indicador como este:
> root@yourserver:/var/discourse
Usa docker para copiar el archivo fuera del contenedor (creo que no puedes moverlo)
docker cp app:/var/www/discourse/=FileName= .
Moverlo a la otra instancia
Esto está fuera del alcance de esta guía, pero esto podría ayudarte a lograrlo:
Copiarlo al contenedor en la instancia receptora
Inicia sesión por SSH en tu instancia receptora como root y ve al directorio de Discourse:
cd /var/discourse
Usa docker una vez más para copiar el archivo al otro contenedor
docker cp =FileName= app:/var/www/discourse
Importar el Contenido
Entra al contenedor en la instancia receptora:
./launcher enter app
Ejecuta el script de importación
discourse import_=Exportación= =FileName=
¡Hecho!
Puede que necesites ordenar algunos cabos sueltos, pero con suerte, todo debería estar hecho.
Consejos Avanzados
Gem de Ruby Faltante
Al realizar una importación compleja de categorías, a mi instancia le faltaba la Ruby ‘Listen’.
Esto se resolvió haciendo esto: (usando el usuario Discourse dentro del contenedor)
./launcher enter app
su discourse
bundle config --delete without
bundle config --delete with
bundle install
exit
exit
Esto rompió la consola de rails, lo que requirió una reconstrucción posterior
./launcher rebuild app
Múltiples Sitios
En un entorno de múltiples sitios, usa la variable de entorno RAILS_DB.
RAILS_DB=xxxmoves discourse export_=Exportación= =ID=
RAILS_DB=dancerehab discourse import_=Exportación= =FileName=
Por favor, informa de errores en la categoría bug, y solicita mejoras en la categoría #feature.
Temas Relacionados
Última Revisión por @SaraDev en 2022-07-13T00:00:00Z
\u003cdiv data-theme-toc=“true”\u003e \u003c/div\u003e