Migrar un foro phpBB3 a Discourse

Los puse sin ninguna diferencia.

No estoy seguro de si estos son errores por haber sido pegados o si así es como realmente está en su archivo yml, pero eso causaría problemas. (Saltos de línea cerca del final de algunos comentarios, lo que provoca que exista una segunda línea sin comentar)

Tus elementos de lista no están indentados correctamente.

Lo anterior debería ser

  new_categories: 
    - forum_id: general
      name: General

Recomiendo usar https://www.yamllint.com/ para validar tu archivo de configuración.

3 Me gusta

Gracias por todas sus respuestas. Rápidamente me di cuenta de que editar settings.yml fuera del contenedor de importación no afectaba a lo que se estaba ejecutando. También me di cuenta del espacio en blanco de yml y corregí mi archivo de configuración. De todos modos, la importación del foro phpBB fue bien, excepto…

Mi nombre de usuario en phpBB era el mismo que mi cuenta de administrador en Discourse. No puedo iniciar sesión y hay un mensaje que dice:

Todas las correos electrónicos salientes han sido deshabilitados globalmente por un administrador. No se enviarán notificaciones por correo electrónico de ningún tipo.

Como resultado, no puedo recibir un correo electrónico de restablecimiento de contraseña. ¿Es esta una configuración de base de datos? Y si es así, ¿puedo actualizar ese campo utilizando los recursos limitados del contenedor? ¿Alguna otra idea?

Tenga en cuenta que tengo instalado el plugin migratepassword, pero eso no parece funcionar (quizás porque mi contraseña tenía menos de 15 caracteres).

Puedes habilitar los correos electrónicos para los usuarios administradores desde la consola de rails:

./launcher enter import
rails c

> SiteSetting.disable_emails = "non-staff"

También puedes restablecer tu contraseña directamente desde el contenedor, sin necesidad de usar correos electrónicos, ejecutando:

./launcher enter import
rake admin:create
3 Me gusta

¿Puedo sugerir algunos cambios en esta documentación (y código)?

  • Esto ya no es necesario ya que la configuración disable_edit_notifications ya no existe. disable system edit notifications realiza el trabajo mencionado y está habilitado por defecto.
  • Las dos líneas SSL ya no están comentadas por defecto en app.yml, por lo que eliminar estos dos # hará que el extracto sea más preciso a cómo debería verse.
  • Esta plantilla debe actualizarse para que los usuarios no experimenten este error al importar.

  • También esto (a menos que haya cometido un error en alguna parte, ¡esto también debería arreglarse!):
    Ejecutar IMPORT=1 bundle install devolvió:

[!] Hubo un error al analizar `Gemfile`: No puedes especificar el mismo gem dos veces con diferentes requisitos de versión.
Especificaste: sqlite3 (~> 1.3, >= 1.3.13) y sqlite3 (>= 0). Bundler no puede continuar.

  # desde /home/root/discourse/Gemfile:249
  # -------------------------------------------
  # group :generic_import, optional: true do
    gem "sqlite3"
  #   gem "redcarpet"
  # -------------------------------------------

De hecho, sqlite3 ya está especificado unas líneas más arriba:

  # NOTA: en modo de importación, la versión de sqlite puede importar mucho, así que la fijamos a una específica
  gem "sqlite3", "~> 1.3", ">= 1.3.13"
  gem "ruby-bbcode-to-md", git: "https://github.com/nlalonde/ruby-bbcode-to-md"
  gem "reverse_markdown"
  gem "tiny_tds"
  gem "csv"
end

group :generic_import, optional: true do
  gem "sqlite3"
  gem "redcarpet"
end

Usé una instalación de desarrollo para mi importación, si es que importa.

5 Me gusta

Esa información debería mencionarse en las instrucciones o actualizarse la plantilla. Me ha llevado algunas horas.

¿Qué necesita decir?

Eliminar esta línea hizo posible la construcción exitosa del contenedor.

1 me gusta

¿Así que eliminaste esta línea?

1 me gusta

Sí, esa fue la solución.

1 me gusta
4 Me gusta

“Hola, he migrado con éxito mi foro phpBB a Discourse, todo salió bien y el foro funciona de maravilla. Ahora me he dado cuenta de que no habilité el modo binario durante la descarga FTP de los datos de phpBB, lo que significa que todas las imágenes están corruptas. He vuelto a ejecutar el script, pero las imágenes no se están sobrescribiendo. ¿Qué script, preferiblemente con la ruta, necesito modificar para que se sobrescriban las imágenes y los archivos adjuntos corruptos?”

En tu segunda prueba, Discourse omite las cargas porque ya existen en la tabla uploads. Discourse evita sobrescribir las cargas existentes a menos que se le indique explícitamente.

Puedes intentar agregar el siguiente fragmento de código en attachment_importer.rb (discourse/script/import_scripts/phpbb3/importers/attachment_importer.rb at main · discourse/discourse · GitHub) antes de llamar a @uploader.create_upload para asegurarte de que cualquier carga existente con el mismo nombre de archivo se elimine primero, lo que obligará a Discourse a volver a cargarla.

existing_upload = Upload.find_by(original_filename: filename)
if existing_upload
  existing_upload.destroy
  puts "Deleted existing upload: #{filename}"
end

upload = @uploader.create_upload(user_id, path, filename)
4 Me gusta

“Gracias por tu respuesta. Desafortunadamente, el cambio no tuvo ningún efecto. El script se ejecuta en solo un minuto, pero los archivos adjuntos no se sobrescriben…”

1 me gusta

Probablemente necesites borrar la base de datos y volver a ejecutarla.

1 me gusta

¿Cómo hago eso?

Paso 1: Conéctese al servidor mediante SSH:

ssh username@server-address

Paso 2: Acceda al contenedor de la aplicación:

./launcher enter import

Consejo: Ejecute docker ps para encontrar el nombre del contenedor. Por defecto, suele llamarse app.

Paso 3: Restablezca la base de datos:

RAILS_ENV=production rake db:reset
3 Me gusta

Hey Canapin,

He actualizado esta parte de la guía.

Depende. Todavía está comentado al configurar el contenedor para localhost. La guía asume que se utiliza un contenedor separado para las importaciones, al que no se puede acceder a través de Internet, por lo que no es necesario obtener certificados en este caso.

Una PR para esto ahora se ha fusionado en el núcleo.

Estamos trabajando en una solución para esto, pero he actualizado la guía y agregado una sección de preguntas frecuentes sobre cómo resolver este problema.

4 Me gusta

Cuando Discourse se ejecuta en un subdirectorio, como domain.org/forum, los permalinks no se aplican, ya que son como viewtopic.php?p=XXXX, pero deberían ser forum/viewtopic.php?p=XXXX para que funcionen.

Han pasado años, pero me encontré con los permalinks que nunca funcionaron y que todavía están configurados en nuestro caso. ¿Existe alguna forma gráfica/CLI de prefijar todos los permalinks con un elemento de ruta de URL, o alguien puede agregar una consulta de PostgreSQL para hacer esto? Podría ayudar también a otros, si esta información se agrega a la primera publicación.