O primeiro post em https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3
ainda é um guia válido que permite aos administradores fazê-lo? Se não, existe algum outro local onde o guia correto para S3 para 2024 está localizado? É dito que este é oficial e suportado pela equipe do Discourse.
Implementamos como no guia acima e as imagens estão quebradas na instância do Discourse, embora estejam sendo carregadas no S3.
Nosso fluxo
Configurar o próprio bucket S3 e a política no S3 como no guia acima (todos os passos foram seguidos com precisão)
Configurar o ambiente em app.yml e no admin (idêntico) como no guia acima
reconstruir o aplicativo com o launcher
qualquer CDN NÃO é usada, pois nosso entendimento é que é opcional e deve funcionar sem CDN.
Resultado:
As imagens estão sendo carregadas no bucket pelo Discourse
os links não são acessíveis (supostamente por causa da política S3 no guia oficial)
Mudança assumida para a política S3 oficial no guia. Principal: Esta política não especifica um Principal, o que significa que se aplica a quem foi autenticado com as permissões corretas. Se for para permitir acesso anônimo (público), precisamos especificar \"Principal\": \"*\". Isso também pode não ser uma boa solução, pois torna o bucket público. esta é uma suposição, pois agradecemos se alguém atualizar o guia para torná-lo correto em 2024
Hey,
.we are using Cloudflare R2 for s3 storage(it works now) and i wanted to move discourse to another server.
However profile pictures were missing when restoring from a backup even when checking the “backup uploads” option.
so i ran the s3 migrate command on the old server to migrate images that are still local, and it’s failing with this trace, it’s not clear what’s the reason.
rake uploads:migrate_to_s3 --trace
** Invoke uploads:migrate_to_s3 (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute uploads:migrate_to_s3
Please note that migrating to S3 is currently not reversible!
[CTRL+c] to cancel, [ENTER] to continue
Migrating uploads to S3 for 'default'...
Uploading files to S3...
- Listing local files
..... => 5123 files
- Listing S3 files
....... => 6871 files
- Syncing files to S3
.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^[[B............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Updating the URLs in the database...
Removing old optimized images...
Flagging all posts containing lightboxes for rebake...
828 posts were flagged for a rebake
rake aborted!
FileStore::ToS3MigrationError: 4898 of 5838 uploads are not migrated to S3. S3 migration failed for db 'default'. (FileStore::ToS3MigrationError)
/var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:73:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:383:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:126:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:36:in `each_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `block in execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:188:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:188:in `invoke_task'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `block (2 levels) in top_level'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `block in top_level'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:147:in `run_with_threads'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:132:in `top_level'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:83:in `block in run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:214:in `standard_exception_handling'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:80:in `run'
bin/rake:13:in `<top (required)>'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/lib/bundler/cli.rb:455:in `exec'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/lib/bundler/vendor/thor/lib/thor.rb:527:in `dispatch'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/lib/bundler/cli.rb:35:in `dispatch'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/lib/bundler/cli.rb:29:in `start'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/exe/bundle:28:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/exe/bundle:20:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
it seems these pictures are still stored locally for some reason, even though i ran this migration script before.
Minha suposição é que você alterou algo na sua configuração do s3 e as imagens ausentes estão em um bucket diferente ou em um caminho diferente das novas.
Gostaria de saber se haverá algum problema se eu tentar mudar de provedor de serviços S3, ignorando a questão das imagens já carregadas. Não tenho grandes problemas com isso, já que o site ainda não está no ar; ainda estou desenvolvendo-o.
É possível salvar as imagens localmente e depois ativar o S3 novamente com o novo provedor de serviços?
Você pode definir siteSettings.include_s3_uploads_in_backups=true no Rails e depois fazer um backup, alterar as configurações do S3 e restaurar o backup.
O tópico vinculado menciona um PR para remover uma tarefa migrate_from_s3, e não vi nenhuma razão para acreditar que ela tenha sido adicionada novamente mais tarde, mas queria verificar se isso ainda era verdade. Estou considerando migrar para MinIO e estou um pouco preocupado em torná-lo uma dependência.
Gostaria de saber se isso poderia fornecer uma solução alternativa para o que mencionei acima. Inclua essa configuração, faça um backup, desative as configurações do S3 e restaure o backup.
Deste tópico, parece que essa configuração baixa os arquivos individuais do S3, mas me pergunto se pode haver problemas com postagens referenciando URLs do S3 em vez de arquivos locais. Não tenho certeza de como isso é tratado no banco de dados. Teria interesse em saber se sua migração para outro provedor foi bem-sucedida, @Rhod.
Fiz a transição tranquilamente. Enfatizo que não tive grandes problemas, pois o número de imagens ou backups era mínimo. O fórum era inteiramente para fins de teste, ainda não estava em “produção”. Finalmente, após várias tentativas e erros, reinstalei o fórum em um novo servidor (Hetzner) e configurei o S3 (Cloudflare R2) para backups e imagens com o servidor que finalmente me convenceu.
Sinto muito por não poder ajudar muito. Vou ver se consigo testá-lo em outro servidor no futuro.
Posso fazer upload de vídeos para o S3? Atualmente, quando faço upload de vídeos, apenas a imagem de capa do vídeo é enviada para o S3, mas o vídeo em si não é enviado.