Estoy intentando mover mi instancia de Discourse a un servidor diferente.
Intenté usar la opción de restauración en el panel de administración en el servidor de destino, pero siguió fallando con este error:
[2022-04-23 21:59:00] Remapping uploads...
[2022-04-23 21:59:00] Restoring uploads, this may take a while...
[2022-04-23 21:59:00] EXCEPTION: Aws::S3::Errors::NoSuchBucket
La configuración exacta de app.yml es la misma tanto para la instancia de Discourse existente como para el nuevo servidor al que estoy intentando migrar.
No pude hacer que esto funcionara, así que decidí probar esta guía: Restore a backup from the command line
Obtuve el mismo error si usaba la misma configuración de app.yml.
Así que decidí comentar todo lo relacionado con S3, y eso pareció funcionar:
Reconnecting to the database...
Reloading site settings...
Disabling outgoing emails for non-staff users...
Disabling readonly mode...
Clearing category cache...
Reloading translations...
Remapping uploads...
Remapping '//bucket.nyc3.digitaloceanspaces.com/' to '/uploads/default/'
optimized_images=480
uploads=35
user_histories=13
Remapping 'https://cdnurl.com/' to 'https://forumurl.com/uploads/default/'
post_revisions=2
posts=4
topic_links=4
Remapping 'cdnurl.com' to 'forumurl.com'
topic_links=4
Restoring uploads, this may take a while...
Posts will be rebaked by a background job in sidekiq. You will see missing images until that has completed.
You can expedite the process by manually running "rake posts:rebake_uncooked_posts"
Clearing emoji cache...
Clear theme cache
Executing the after_restore_hook...
Cleaning stuff up...
Dropping functions from the discourse_functions schema...
Removing tmp '/var/www/discourse/tmp/restores/default/2022-04-23-234852' directory...
Unpausing sidekiq...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[SUCCESS]
Restore done.
Después de que la restauración funcionó, decidí descomentar todo lo relacionado con S3 y ejecutar ./launcher rebuild app.
Luego intenté acceder a mi instancia de Discourse y noté que faltaban todas las cargas (logo, fotos de perfil, etc.).
Luego ejecuté:
./launcher enter app
rake posts:rebake (sin errores, dijo que rebakeó unos 60 posts)
rake posts:rebake_uncooked_posts (dijo que rebakeó 0 posts)
Incluso con esto, todas las cargas todavía no funcionan y devuelven un 404 (o en el caso de las fotos de perfil, muestran la foto de perfil predeterminada).
Del log anterior con la restauración, definitivamente parece que las URL se remapearon ya que piensa que S3 ya no se está utilizando, pero ¿hay alguna forma de volver a mapearlo después de que la restauración se complete, a lo que se supone que debe ser?
Alternativamente, ¿hay alguna forma de hacer que funcione con la configuración de S3 en app.yml? No estoy seguro de por qué insiste en que el bucket no existe.
Como referencia, así es como se ve la configuración de S3 en mi app.yml:
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: nyc3
DISCOURSE_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
DISCOURSE_S3_ACCESS_KEY_ID: KEY
DISCOURSE_S3_SECRET_ACCESS_KEY: ACCESS_KEY
DISCOURSE_S3_CDN_URL: https://forumcdn.com
DISCOURSE_S3_BUCKET: upload-bucket
DISCOURSE_S3_BACKUP_BUCKET: backup-bucket
DISCOURSE_BACKUP_LOCATION: s3
El bucket utilizado para las cargas en la instancia de Discourse existente y la nueva instancia de Discourse son los mismos, por lo que esperaba que la reconstrucción funcionara y remapeara las URL.
No estoy seguro de dónde me equivoqué, pero espero que alguien pueda orientarme.
Gracias.
