Uploads ausentes após restauração

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.

O que funciona muito bem na minha experiência é desabilitar o S3, fazer backup, restaurar e, em seguida, habilitar o S3 novamente.

2 curtidas

Parece que os uploads S3 já estão desativados no painel, mas os uploads S3 estão funcionando corretamente.

Isso significa que preciso desativá-lo em app.yml, executar ./launcher rebuild app, depois fazer backup e restaurar?

Obrigado

Bem, consegui resolver isso apenas copiando a pasta /var/discourse e reconstruindo.

Gostaria que o backup/restauração integrado tivesse funcionado, mas é a vida quando você escolhe auto-hospedar :slight_smile:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.