J’essaie d’exécuter "bundle exec rake s3:upload_assets" en tant que root et cela génère les erreurs suivantes : Could not locate Gemfile or .bundle/ directory.
J’ai aussi essayé de le faire sans être root, en utilisant "sudo -E -u discourse bundle exec rake s3:upload_assets" et cela a généré l’erreur suivante : sudo: unknown user discourse\nsudo: error initializing audit plugin sudoers_audit
J’ai exécuté les deux commandes dans le répertoire suivant : /var/discourse
Il s’agit d’une installation normale, sans docker ni autre chose.
Comment puis-je résoudre ce problème pour pouvoir exécuter cette commande ?
Merci ! Cela m’a fait avancer, j’ai maintenant cette erreur :
root@redacted:/var/www/discourse# sudo -E -u discourse bundle exec rake s3:upload_assets
/root n'est pas accessible en écriture.
Bundler utilisera `/tmp/bundler20250409-510203-w6snye510203` comme répertoire personnel temporairement.
ERREUR : Assurez-vous que S3 est configuré dans config/discourse.conf ou dans les variables d'environnement.
J’ai tout configuré dans les paramètres du site Discourse. Je n’utilise pas Docker, donc je n’aurais pas besoin de variables d’environnement ?
J’ai essayé d’ajouter les variables d’environnement dans app.yml, de reconstruire, de réentrer dans l’application et d’exécuter la commande, et cela donne ceci :
`/root` n'est pas accessible en écriture.
Bundler utilisera `/tmp/bundler20250409-1393-48ek5u1393' comme répertoire personnel temporairement.
Installation des règles CORS...
Tentative d'application de la règle CORS ASSETS S3 dans le bucket biohacking-forum.
rake a échoué !
Seahorse::Client::NetworkingError : corps de réponse vide ou incomplet (Seahorse::Client::NetworkingError)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/checksum_algorithm.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/invocation_id.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/request_callback.rb:89:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `block in call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/telemetry/no_op.rb:29:in `in_span'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:53:in `span_wrapper'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/client.rb:6359:in `get_bucket_cors'
/var/www/discourse/lib/s3_helper.rb:401:in `fetch_bucket_cors_rules'
/var/www/discourse/lib/s3_helper.rb:168:in `ensure_cors!'
/var/www/discourse/lib/s3_cors_rulesets.rb:60:in `sync'
/var/www/discourse/lib/tasks/s3.rake:183:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => s3:upload_assets => s3:ensure_cors_rules
(Voir la trace complète en exécutant la tâche avec --trace)
Toutes les variables S3 devraient être déplacées vers des paramètres cachés, car la plupart du temps, il n’y a rien de bon à les configurer dans les paramètres.
Désolé, et j’ai oublié que vous n’utilisez pas Docker. Mais oui, vous devez toujours les définir dans les variables d’environnement. Je le fais dans mon environnement de développement pour restaurer des bases de données à partir de S3.
Si vous ne faites pas cela pour un environnement de développement, vous faites très probablement une grosse erreur.
Corrigé en faisant ce qui suit - il y avait deux erreurs.
Premièrement, j’ai corrigé la deuxième erreur en faisant ce qui suit :
rails c
Upload.find(386).destroy!
exit
Cela a corrigé le post corrompu (texte mal formaté ou quelque chose comme ça).
Ensuite, les erreurs rouges à l’écran provenaient de l’utilisation du sous-domaine aléatoire (fourni par cloudflare) et du téléchargement sur celui-ci. J’ai dû télécharger les fichiers sur le nouveau domaine (qui inclut mon domaine connecté).
Ensuite, le forum s’est correctement chargé et le clic droit et l’ouverture des images dans un nouvel onglet montrent qu’elles sont hébergées sur le R2. J’ai ensuite effectué une sauvegarde.
Ce qui a libéré l’espace de stockage respectif des fichiers (notez que j’ai toujours une sauvegarde locale des deux fichiers (niveau OS) et niveau discourse avant la migration).