Estou tentando mover minha instância do Discourse para um servidor diferente.
Tentei usar a opção de restauração no painel de administração no servidor de destino, mas continuou falhando com este erro:
[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
A configuração exata do app.yml é usada tanto para a instância Discourse existente quanto para o novo servidor para o qual estou tentando migrar.
Não consegui fazer isso funcionar, então decidi tentar este guia aqui: Restore a backup from the command line
Recebi o mesmo erro se usasse a mesma configuração do app.yml.
Então decidi comentar tudo relacionado ao S3, e isso pareceu resolver o problema:
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.
Após a restauração funcionar, decidi descomentar tudo relacionado ao S3 e executar ./launcher rebuild app.
Então tentei acessar minha instância do Discourse e notei que todos os uploads estão faltando (logo, fotos de perfil, etc.).
Então executei:
./launcher enter app
rake posts:rebake (sem erros, disse que rebakeou cerca de 60 posts)
rake posts:rebake_uncooked_posts (disse que rebakeou 0 posts)
Mesmo com isso, todos os uploads ainda não estão funcionando e retornam um 404 (ou no caso de fotos de perfil, eles mostram a foto de perfil padrão).
Pelo log acima com a restauração, definitivamente parece que os URLs foram remapeados, pois ele acha que o S3 não está mais sendo usado, mas há alguma maneira de remapear novamente após a restauração ser concluída, de volta ao que deveria ser?
Alternativamente, há alguma maneira de fazê-lo funcionar com as configurações do S3 no app.yml? Não tenho certeza por que ele insiste que o bucket não existe.
Para referência, é assim que a configuração do S3 no meu app.yml se parece:
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
O bucket usado para uploads na instância Discourse existente e na nova instância Discourse são os mesmos, então eu esperava que a reconstrução funcionasse e remapeasse os URLs.
Não tenho certeza onde errei, mas espero que alguém possa me indicar a direção certa.
Obrigado.
