Falha ao restaurar dados ao migrar para o Discourse

[2026-05-11 02:05:14] Reconectando ao banco de dados...
[2026-05-11 02:05:14] Recarregando as configurações do site...
[2026-05-11 02:05:14] Desativando e-mails de saída para usuários não administradores...
[2026-05-11 02:05:14] Executando seed fu...
[2026-05-11 02:05:31] Desativando o modo somente leitura...
[2026-05-11 02:05:31] Limpando o cache de categorias...
[2026-05-11 02:05:31] Recarregando as traduções...
[2026-05-11 02:05:31] Remapeando uploads...
[2026-05-11 02:05:31] Restaurando uploads, isso pode levar algum tempo...
[2026-05-11 02:05:33] EXCEÇÃO: Você pode especificar apenas um checksum não padrão por vez.
[2026-05-11 02:05:33] /var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in 'Seahorse::Client::Plugins::RaiseResponseErrors::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in 'Aws::S3::Plugins::SseCpk::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in 'Aws::S3::Plugins::Dualstack::OptionHandler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in 'Aws::S3::Plugins::Accelerate::OptionHandler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/checksum_algorithm.rb:167:in 'Aws::Plugins::ChecksumAlgorithm::OptionHandler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in 'Aws::Plugins::JsonvalueConverter::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/invocation_id.rb:16:in 'Aws::Plugins::InvocationId::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in 'Aws::Plugins::IdempotencyToken::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/param_converter.rb:26:in 'Aws::Plugins::ParamConverter::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/seahorse/client/plugins/request_callback.rb:89:in 'Seahorse::Client::Plugins::RequestCallback::OptionHandler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/response_paging.rb:12:in 'Aws::Plugins::ResponsePaging::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/seahorse/client/plugins/response_target.rb:24:in 'Seahorse::Client::Plugins::ResponseTarget::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in 'block in Aws::Plugins::Telemetry::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/telemetry/no_op.rb:29:in 'Aws::Telemetry::NoOpTracer#in_span'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/telemetry.rb:53:in 'Aws::Plugins::Telemetry::Handler#span_wrapper'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in 'Aws::Plugins::Telemetry::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/seahorse/client/request.rb:72:in 'Seahorse::Client::Request#send_request'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/client.rb:17315:in 'Aws::S3::Client#put_object'
/var/www/discourse/lib/file_store/to_s3_migration.rb:216:in 'block (2 levels) in FileStore::ToS3Migration#migrate_to_s3'
[2026-05-11 02:05:33] Tentando reverter...
[2026-05-11 02:05:33] Revertendo...
[2026-05-11 02:05:34] Limpando arquivos...
[2026-05-11 02:05:34] Removendo funções do esquema discourse_functions...
[2026-05-11 02:05:34] Removendo diretório temporário '/var/www/discourse/tmp/restores/default/2026-05-11-020447'...
[2026-05-11 02:05:34] Retomando o Sidekiq...
[2026-05-11 02:05:34] Marcando a restauração como concluída...
[2026-05-11 02:05:34] Notificando 'niege' sobre o fim da restauração...

Como resolver esse problema?

Acho que pode haver um problema com a compatibilidade do S3?

A instância para a qual você está restaurando está atualizada com a versão mais recente do Discourse?

Acho que há um problema aqui
/var/www/discourse/lib/file_store/to_s3_migration.rb
provavelmente com o payload sendo enviado para put_object na linha 216

Não tenho certeza qual é a solução completa, mas acho que, para fazer funcionar, você pode precisar desativar o S3 (enable_s3_uploads: false) e realizar a restauração e extração localmente. Em seguida, reative o S3 e use o comando rake uploads:migrate_to_s3?

@Lilly
Como o servidor expirou, é necessário migrar para um novo servidor. Primeiro, fiz um backup dos dados do Discourse.
Sincronize o app.yml para o novo servidor e, em seguida, no novo servidor, execute:

./launcher rebuild app

Depois, faça o upload do backup para o diretório /var/discourse/shared/standalone/backups/default no novo servidor.
Use o comando:

./launcher enter app
discourse enable_restore
discourse restore xxxxxxxxxxxxxxxxxxxxx.tar.gz

A restauração falhou. Após recriar o Discourse, tentei restaurar pelo painel administrativo, mas também falhou. O anexo contém o log da restauração.
log.txt (124,0 KB)

Conte-nos sobre seu ambiente, por exemplo, qual armazenamento de objetos você está usando?

Ubuntu 24.04.4 LTS (x86_64)

Cloudflare R2