Comprobado: Images lost when migrating to self-hosting, posts:rebake no hace nada bueno.
Problema
Seguimos las instrucciones oficiales y creamos una instancia de Lightsail, desde allí hicimos una descarga de la base de datos desde la interfaz de usuario de Discourse y la aplicamos para obtener un 80% de avance. La idea era migrar a la instancia autoalojada manteniendo viva la versión anterior.
Una vez que tengamos una copia en vivo del antiguo foro. Comenzamos a migrar las imágenes. Para hacerlo, primero cancelamos nuestra suscripción para obtener y migrar nuestras imágenes.
A medida que se subieran nuevas imágenes a la instancia autoalojada, solo necesitaríamos subir desde la instancia alojada antes de la fecha de transición. Esto significa que nunca usamos el volcado de la base de datos que vino con nuestras imágenes y cancelación; ya que ya habíamos hecho la migración, ya había expirado.
Observo tres comportamientos relacionados con este punto en el tiempo.
- Los recursos referenciados en la copia de seguridad (volcado de SQL, específicamente) apuntan a la infraestructura de Discourse.
- Los recursos referenciados *creados desde entonces en la copia de seguridad, por ejemplo, imágenes de nuevas publicaciones, están correctamente referenciados y se encuentran en nuestra infraestructura.
En consecuencia, si vuelvo a subir un recurso que resulta en el mismo hash, se vinculará a la infraestructura de Discourse. Por ejemplo: intentar arreglar el favicon subiéndolo de nuevo no funciona. Sin embargo, puedo subir cualquier otra imagen aleatoria, y funcionará.
Estado actual
Según entiendo, upload://<X> pasa por la decodificación b62 (¿y sha1?) para mapearla a la carpeta public/uploads. Tenemos todas esas imágenes:
El volcado que nos proporcionó el equipo de Discourse contiene un zip con
default/original/1Xy actualmente se puede ver en/var/www/discourse/public/uploads/default/original/1X. Esta última carpeta ahora contiene 329 elementos, el volcado proporcionado contenía 249 elementos; eso me parece bien.
Eso significa que los datos deberían ser descubribles, incluso si no puedo encontrar la carga directamente en la carpeta. Estoy tratando de entender esta relación, para poder arreglar el mapeo de alguna manera. Inicialmente, solo parecía una simple sustitución de cadenas, y eso funcionó para algunas imágenes. Sin embargo, algunas ahora han sido reemplazadas por un transparent.png, donde antes solo había una imagen inaccesible.

