Ist der erste Beitrag in den obigen https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3
noch ein gültiger Leitfaden, der es Administratoren ermöglicht, dies zu tun? Wenn nein, gibt es eine andere Stelle, an der der korrekte Leitfaden für 2024 zu S3 zu finden ist? Es heißt, dies sei offiziell und werde vom Discourse-Team unterstützt.
Wir haben es wie oben beschrieben implementiert, und die Bilder sind in der Discourse-Instanz defekt, obwohl sie auf S3 hochgeladen werden.
Unser Ablauf
Richten Sie den S3-Bucket selbst und die Richtlinie in S3 wie oben beschrieben ein (alle Schritte wurden genau befolgt).
Richten Sie die Umgebung in app.yml und im Adminbereich (identisch) wie oben beschrieben ein.
launcher rebuild app
Es wird überhaupt kein CDN verwendet, da wir davon ausgehen, dass dies optional ist und auch ohne CDN funktionieren sollte.
Ergebnis:
Bilder werden von Discourse in den Bucket hochgeladen.
Links sind nicht zugänglich (vermutlich aufgrund der S3-Richtlinie im offiziellen Leitfaden).
Angenommene Änderung für die offizielle S3-Richtlinie im Leitfaden. Principal: Diese Richtlinie gibt keinen Principal an, was bedeutet, dass sie für jeden gilt, der mit den richtigen Berechtigungen authentifiziert wurde. Wenn anonyme (öffentliche) Zugriffe erlaubt werden sollen, müssen wir \"Principal\": \"*\" angeben. Das ist möglicherweise auch keine gute Lösung, da es den Bucket öffentlich macht. Dies ist eine Annahme, da wir uns freuen würden, wenn jemand den Leitfaden aktualisieren würde, um ihn 2024 korrekt zu machen.
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.
Ich vermute, Sie haben etwas in Ihrem S3-Setup geändert und die fehlenden Bilder befinden sich in einem anderen Bucket oder einem anderen Pfad als die neuen.
Ich möchte wissen, ob es Probleme geben wird, wenn ich versuche, den S3-Dienstanbieter zu wechseln, abgesehen vom Problem bereits hochgeladener Bilder. Damit habe ich eigentlich keine größeren Probleme, da die Seite noch nicht live ist; ich entwickle sie noch.
Ist es möglich, die Bilder lokal zu speichern und dann S3 mit dem neuen Dienstanbieter wieder zu aktivieren?
Sie können siteSettings.include_s3_uploads_in_backups=true in Rails setzen und dann ein Backup erstellen, die S3-Einstellungen ändern und das Backup wiederherstellen.
Der verlinkte Thread erwähnt einen PR, um eine migrate_from_s3-Aufgabe zu entfernen, und ich habe keinen Grund zu der Annahme, dass sie später wieder hinzugefügt wurde, aber ich wollte prüfen, ob dies immer noch der Fall ist. Ich erwäge eine Migration zu MinIO und bin etwas besorgt über die Abhängigkeit.
Ich frage mich, ob dies eine Lösung für das von mir erwähnte Problem bieten könnte. Die Einstellung einschließen, ein Backup erstellen, die S3-Einstellungen deaktivieren und das Backup wiederherstellen.
Von diesem Thread scheint es, dass diese Einstellung die einzelnen Dateien von S3 herunterlädt, aber ich frage mich, ob es Probleme mit Beiträgen geben könnte, die S3-URLs anstelle von lokalen Dateien referenzieren. Ich bin mir nicht sicher, wie das in der Datenbank gehandhabt wird. Ich wäre daran interessiert zu erfahren, ob Ihre Migration zu einem anderen Anbieter erfolgreich war, @Rhod.
Ich habe den Übergang reibungslos geschafft. Ich betone, dass ich keine größeren Probleme hatte, da die Anzahl der Bilder oder Backups minimal war. Das Forum war ausschließlich zu Testzwecken gedacht, noch nicht in der “Produktion”. Schließlich, nach mehreren Versuchen und Irrtümern, habe ich das Forum auf einem neuen Server (Hetzner) neu installiert und S3 (Cloudflare R2) für Backups und Bilder mit dem Server konfiguriert, der mich schließlich überzeugt hat.
Es tut mir leid, dass ich nicht viel helfen kann. Ich werde sehen, ob ich es in Zukunft auf einem anderen Server testen kann.