Migrar un foro phpBB3 a Discourse

Después de haber utilizado correctamente el importador en mi primer entorno de prueba, ahora quería importar el antiguo foro nuevamente / de nuevo en un nuevo entorno que debería convertirse en el real, pero ahora ha fallado.

Recibo un error:
/var/www/discourse/plugins/discourse-migratepassword/plugin.rb:71:in `crypt’: codificaciones de caracteres incompatibles: ASCII-8BIT y UTF-8 (Encoding::CompatibilityError).

Aparentemente, esto ocurre con el tercer usuario, y este tiene una vocal con diéresis (Umlaut).

Ahora, ¿qué cambié desde que funcionaba?

  • Nueva máquina virtual con Ubuntu 18.04.3 LTS (la anterior era 16)
  • Discourse actualizado (última versión)
  • Establecí “nombres de usuario unicode” con [äöüßÄÖÜẞ] ya que muchos de mis usuarios tienen vocales con diéresis en sus nombres de usuario (la primera importación se realizó sin esta configuración y los usuarios se importaron perdiendo los puntos de las vocales con diéresis)
  • migratepassword preinstalado (la última vez lo instalé más tarde).

¿Alguna idea de por qué falla? Me gustaría mucho migrar a mis usuarios sin tener que cambiar sus nombres de usuario.

1 me gusta

Parece que está activando un error en el plugin migratepassword. En mis pruebas funciona, así que no estoy seguro de qué está ocurriendo aquí. Te sugiero desactivar el plugin durante la migración. De todos modos, no es necesario durante el proceso de migración.

6 Me gusta

Gracias, funcionó :slight_smile:

2 Me gusta

Hola, estoy intentando hacer una prueba en mi entorno local para ver si puedo migrar mi foro a Discourse.

He utilizado esta guía de instalación para instalar Discourse.

Tengo una exportación de base de datos de phpBB3 en local.
He instalado Discourse en local en mi Mac con Docker for Desktop.

Ahora estoy intentando seguir las instrucciones de este tema, pero me atasco porque uso Docker, pero no Ubuntu, y es un entorno local. Así que no sé cómo proceder :frowning:
No hay ningún archivo app.yml en mi directorio de Discourse.

¿Podría alguien ayudarme con los pasos a seguir?

¡Muchas gracias de antemano!

1 me gusta

Lo siento, no tengo experiencia con Mac, Docker ni con tu configuración. Podrías seguir aproximadamente Importar usando el entorno de desarrollo… pero no puedo brindarte ningún soporte al respecto.

1 me gusta

Creo que te vendría mejor seguir la “guía oficial de instalación” (incluso en tu Mac local) y ejecutar el instalador de esa manera.

4 Me gusta

¡Hurra! ¡He realizado una importación con éxito!
Al final, decidí simplemente obtener un droplet de DO y continuar desde ahí. ¡Y funcionó!

Pregunta sobre Sidekiq, @gerhard, tú dices:

¿Qué hace exactamente esto? ¿Tengo que esperar hasta que termine para poder hacer cualquier cosa en el foro?

2 Me gusta

A menos que necesites hacer una copia de seguridad para restaurarla en un servidor diferente, estás bien. Puedes proceder a usarlo y Sidekiq procesará las tareas.

4 Me gusta

Hola, actualmente estoy intentando importar datos de un foro phpBB 3.1 a Discourse. Sin embargo, la importación de encuestas no funciona para mí:

Si el propietario del tema (creador de la encuesta) fue eliminado, recibo el siguiente mensaje de error durante la importación:

Error al crear la publicación 70978. Omitiendo. [“No tienes permiso para crear encuestas.”]

En cuanto a las siguientes opciones de la encuesta:
<12
12

12
Recibo el siguiente mensaje de error:
Error al crear la publicación 345655. Omitiendo. [“La encuesta debe tener opciones diferentes.”]

Entonces, ¿cómo puedo solucionarlo?

Gracias de antemano

Saludos cordiales

1 me gusta

¿Tienes las encuestas activadas?

1 me gusta

Sí, algunas encuestas se importan, pero no todas.

1 me gusta

Necesitarás crear ese usuario o modificar el script para, por ejemplo, usar ‘system’ si el propietario no existe.

1 me gusta

Los hilos normales de usuarios eliminados se importan correctamente. ¿Cómo puedo modificar el script de importación para que también se importen las encuestas de usuarios eliminados?

1 me gusta

Actualmente estoy intentando una migración desde phpBB por primera vez y me pregunto si, al transferir una copia de seguridad de Discourse más tarde, esta contendrá toda la información meta de la importación (como el ID original del post de phpBB). La razón es que estoy pensando en realizar la importación en una máquina más potente para acelerar el proceso y luego ejecutar el foro en un VPS, pero quizás realice otra importación incremental después de mover todo al VPS. Me pregunto si es suficiente hacer una copia de seguridad y reimportación de Discourse o si sería mejor volcar la base de datos de otra manera (¿cuál?).

Y otra pregunta más: ¿Son seguros los reescrituras de URL en el importador para un cambio de dominio posterior? Tenía planeado usar un dominio o subdominio diferente para la migración inicial y luego cambiar al dominio real.

3 Me gusta

Sí, la copia de seguridad contiene el ID del post original en un campo personalizado. Ejecutar la importación final en la nube debería funcionar sin problemas.

Cambiar el nombre de host requiere un poco de trabajo. Change the domain name or rename your Discourse

4 Me gusta

Acabo de terminar la primera migración de prueba y, antes que nada, quiero dar las gracias a @gerhard y a todos los demás que contribuyeron a esto. Es increíble lo bien que funcionó en el primer intento. Me llevó aproximadamente 24 horas importar algo menos de 900 mil publicaciones, incluyendo usuarios, mensajes privados y demás, y todo luce muy bien para un primer intento. Es genial contar con un importador tan excelente para lograrlo.

Sin embargo, hay algunos aspectos que debo mencionar. El más importante, y el que actualmente estoy tratando de investigar, es que algunos enlaces internos parecen haber salido completamente mal, mientras que otros funcionaron bastante bien. Para ser más preciso, parece que hay muchos más correctos que incorrectos. Estoy tratando de encontrar un patrón para identificar cuáles no funcionaron. ¿Alguien puede ofrecer alguna perspectiva sobre cómo funciona el cambio de estos enlaces internos? ¿Probablemente hay algunas trampas donde podría fallar?

Nota al margen: Justo después de la importación, vi que faltaban todos los avatares en las citas, pero luego descubrí que parecen generarse automáticamente y, después de unos 20 minutos, todo ya estaba ahí. Fascinante :wink:

En cuanto al tiempo de importación: Esto se realizó en un VPS de 4 núcleos de Hetzner con núcleos de CPU exclusivos. Creo que voy a reintentarlo en un servidor bare metal solo para la importación, con el fin de mejorar el tiempo de migración. Primero necesito ver cómo funciona mover la copia de seguridad de Discourse.

5 Me gusta

El código para reemplazar los enlaces internos se encuentra aquí: discourse/script/import_scripts/phpbb3/support/text_processor.rb at 43ddf60cdf27a865b7b1aa0d54a144a3e46c74cf · discourse/discourse · GitHub

La reescritura de enlaces internos fallará cuando una publicación contenga un enlace a otra publicación que aún no haya sido importada. Las publicaciones se importan en el orden de su creación original.

6 Me gusta

Eso es un dato interesante. No veo por qué esto habría sido el caso en algunos de los ejemplos que revisé, pero definitivamente seguiré ese camino. Lo extraño es que en mi caso enlaza a las publicaciones incorrectas. En caso de fallo, asumiría que no haría nada o dejaría el enlace tal cual. Desafortunadamente, mis conocimientos de Ruby son casi nulos, pero de todos modos echaré un vistazo al código.

¿Hay alguna forma de solucionar este problema? Creo que podría ocurrir con frecuencia en publicaciones de tipo tutorial que se editan y modifican una y otra vez, añadiendo enlaces. ¿Existe alguna posibilidad de evitar esto aparte de modificar manualmente esas publicaciones?

¡Gracias por tu ayuda! :+1:

1 me gusta

Hmm, acabo de notar que los grupos de usuarios no se han importado y también vi que no aparecen listados en el primer mensaje aquí, aunque sí son de las primeras cosas que se muestran en el importador. Me pregunto si hay alguna forma de importarlos, incluyendo asignar usuarios a esos grupos, o si eso simplemente aún no funciona. En este último caso, probablemente tendríamos que buscar una solución alternativa.

1 me gusta

Sí, eso es extraño. Eso sugiere que algunos de tus enlaces locales están en un formato diferente al que espera el script de importación, lo que hace que la expresión regular busque la publicación incorrecta. Si alguien ha vuelto atrás y editado una publicación para que apunte a una que no existía cuando se escribió originalmente (¿has confirmado que ese es el caso?), es posible que hayan utilizado algún otro método para crear el enlace, lo cual confundió al script.

Es sorprendente el grado en que cada importación (especialmente en foros maduros) es única. Es bastante raro que una importación sea simplemente cuestión de ejecutar el script (pero, supongo, que es más probable que me contraten si su importación tiene complicaciones).

1 me gusta