Le premier post ci-dessus https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3
est-il toujours un guide valide qui permet aux administrateurs de le faire ? Sinon, existe-t-il un autre endroit où se trouve le guide S3 correct pour 2024 ? Il est dit que c’est officiel et supporté par l’équipe Discourse.
nous l’avons implémenté comme ci-dessus et les images sont cassées sur l’instance Discourse bien qu’elles soient téléchargées sur S3.
Notre flux
Configuration du bucket S3 lui-même et de la politique dans S3 comme ci-dessus (toutes les étapes sont suivies avec précision)
Configuration de l’environnement dans app.yml et dans l’administration (identique) comme ci-dessus
reconstruction de l’application par le lanceur
aucun CDN n’est utilisé car nous pensons qu’il est facultatif et qu’il devrait fonctionner sans CDN.
Résultat :
Les images sont téléchargées dans le bucket par Discourse
les liens ne sont pas accessibles (supposé à cause de la politique S3 dans le guide officiel)
Changement supposé pour la politique S3 officielle dans le guide. Principal : Cette politique ne spécifie pas de Principal, ce qui signifie qu’elle s’applique à toute personne authentifiée avec les bonnes permissions. Si l’on veut autoriser l’accès anonyme (public), il faut spécifier \"Principal\": \"*\". Cela pourrait également ne pas être une bonne solution car cela rend le bucket public. c’est une supposition car nous apprécierions si quelqu’un mettait à jour le guide pour le rendre correct en 2024
Salut,
Nous utilisons Cloudflare R2 pour le stockage S3 (cela fonctionne maintenant) et je souhaitais déplacer Discourse vers un autre serveur.
Cependant, les photos de profil étaient manquantes lors de la restauration à partir d’une sauvegarde, même en cochant l’option « sauvegarder les pièces jointes ».
J’ai donc exécuté la commande de migration S3 sur l’ancien serveur pour migrer les images qui étaient encore locales, mais cela échoue avec la trace suivante. La raison n’est pas claire.
rake uploads:migrate_to_s3 --trace
** Invoke uploads:migrate_to_s3 (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute uploads:migrate_to_s3
Veuillez noter que la migration vers S3 n'est actuellement pas réversible !
[CTRL+c] pour annuler, [ENTRÉE] pour continuer
Migration des pièces jointes vers S3 pour 'default'...
Téléchargement des fichiers vers S3...
- Répertorier les fichiers locaux
..... => 5123 fichiers
- Répertorier les fichiers S3
....... => 6871 fichiers
- Synchronisation des fichiers vers S3
.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^[[B............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Mise à jour des URL dans la base de données...
Suppression des anciennes images optimisées...
Marquage de tous les messages contenant des lightboxes pour une nouvelle génération...
828 messages ont été marqués pour une nouvelle génération
rake aborted!
FileStore::ToS3MigrationError : 4898 des 5838 pièces jointes n'ont pas été migrées vers S3. La migration S3 a échoué pour la base de données '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>'
Il semble que ces images soient toujours stockées localement pour une raison inconnue, même si j’ai déjà exécuté ce script de migration auparavant.
Je suppose que vous avez modifié quelque chose dans votre configuration s3 et que les images manquantes se trouvent dans un compartiment ou un chemin différent de celui des nouvelles.
Est-il possible de changer de fournisseur de services S3 ?
J’aimerais savoir s’il y aura des problèmes si j’essaie de changer de fournisseur de services S3, en ignorant la question des images déjà téléchargées. Je n’ai pas vraiment de problèmes majeurs avec cela puisque le site n’est pas encore opérationnel ; je suis toujours en train de le développer.
Est-il possible de sauvegarder les images localement, puis d’activer S3 à nouveau avec le nouveau fournisseur de services ?
Vous pouvez définir siteSettings.include_s3_uploads_in_backups=true dans rails, puis effectuer une sauvegarde, modifier les paramètres S3 et restaurer la sauvegarde.
Le fil de discussion lié mentionne une PR pour supprimer une tâche migrate_from_s3, et je n’ai vu aucune raison de croire qu’elle ait été ajoutée ultérieurement, mais je voulais vérifier si c’était toujours le cas. J’envisage de migrer vers MinIO et je suis un peu préoccupé par le fait d’en faire une dépendance.
Je me demande si cela pourrait fournir une solution de contournement pour ce que j’ai mentionné ci-dessus. Inclure ce paramètre, faire une sauvegarde, désactiver les paramètres S3 et restaurer la sauvegarde.
Depuis ce fil de discussion, il semble que ce paramètre télécharge les fichiers individuels de S3, mais je me demande s’il pourrait y avoir des problèmes avec les publications faisant référence à des URL S3 plutôt qu’à des fichiers locaux. Je ne suis pas sûr de la manière dont cela est géré dans la base de données. Je serais intéressé de savoir si votre migration vers un autre fournisseur a été couronnée de succès, @Rhod.
J’ai effectué la transition en douceur. J’insiste sur le fait que je n’ai eu aucun problème majeur car le nombre d’images ou de sauvegardes était minime. Le forum était entièrement à des fins de test, pas encore en “production”. Enfin, après plusieurs essais et erreurs, j’ai réinstallé le forum sur un nouveau serveur (Hetzner) et configuré S3 (Cloudflare R2) pour les sauvegardes et les images avec le serveur qui m’a finalement convaincu.
Je suis désolé de ne pas pouvoir être d’une grande aide. Je verrai si je peux le tester sur un autre serveur à l’avenir.
Puis-je télécharger des vidéos sur S3 ? Actuellement, lorsque je télécharge des vidéos, seule la miniature de la vidéo est téléchargée sur S3, mais la vidéo elle-même ne l’est pas.