Assets S3 cassés après le déplacement du forum

Bonjour,

J’ai dû déplacer un forum Discourse abandonné. Heureusement, nous avions plusieurs administrateurs, ce qui a rendu l’opération possible et a permis de télécharger une sauvegarde. Nous utilisions un bucket S3 pour nos ressources, ce qui a posé quelques problèmes. Je vais donc soumettre une demande de fonctionnalité à ce sujet :

Rendre possible l’inclusion des ressources S3 dans les sauvegardes

J’ai découvert (je ne sais pas si c’était avant ou après la régénération des publications) que les URL des ressources S3 avaient été réécrites en URL internes. J’ai donc extrait manuellement toutes les URL S3 original et optimized du fichier de base de données et les ai téléchargées. Après les avoir déplacées à l’endroit approprié, toutes les images manquantes sont réapparus. Ce serait formidable de disposer d’une fonctionnalité automatique pour cela.

Jusqu’à présent, j’ai rencontré trois bugs :

  1. Images d’aperçu cassées, images agrandies fonctionnelles
  1. Images d’aperçu fonctionnelles, mais impossible de survoler pour agrandir les images
  • /t/microlongrange-openhd-edition/379 … Je ne peux inclure que deux liens dans mon premier message
  1. Les gravatars sont cassés (peut-être sans rapport) :
    -

Je n’ai constaté aucun problème sur les nouvelles publications.

Merci pour ce superbe projet,
Limitless Green

Cela ressemble à une mauvaise configuration, et non à un bug. Avez-vous configuré le même bucket S3 sur le nouvel hôte avant la restauration ?

J’ai restauré la sauvegarde, qui contient également la configuration. Après cela (et l’activation de HTTPS forcé), je ne reçois plus du tout d’images depuis le bucket S3.

J’ai maintenant complètement supprimé la configuration S3.

N’est-ce pas un remplacement complet de la configuration ?

Sauf la configuration S3, si elle avait été configurée précédemment à l’aide de variables d’environnement dans app.yml

Il existe un paramètre caché qui fait exactement cela. Cdck l’active pour les clients dont ils savent qu’ils prévoient de planifier leur hébergement.

La configuration S3 est mieux réalisée via des variables d’environnement, comme décrit dans Utiliser le stockage objet pour les téléversements (S3 et clones).

Après la restauration, j’ai configuré les paramètres dans : s3 upload bucket et s3 cdn url.
Je n’ai pas accès au fichier app.yml (de l’ancien serveur).

Oh, super ! :grinning: Où ?
La seule option appropriée que j’ai trouvée dans la section backup était :
grafik
(qui était cochée)

Je ne suis pas sûr que ce soit clair : je ne veux pas de S3 pour l’instant. Et j’ai dû récupérer les ressources depuis là. Personne ne sait combien de temps ce serveur restera en ligne. :sweat_smile:

Si vous n’avez pas accès au serveur via SSH, vous ne pouvez pas modifier le paramètre masqué.

D’accord. Et que faut-il faire maintenant dans un cas comme le mien ?
Qu’est-ce qui peut causer cet aperçu d’image cassé ?

Si ce n’est pas trop tard (c’est-à-dire qu’il y a eu du trafic sur le forum que vous ne souhaitez pas perdre) et que vous disposez des identifiants S3, je mettrais probablement ces identifiants dans le fichier app.yml et je relancerais la restauration. À partir de là, vous pourriez probablement activer le paramètre masqué, effectuer une sauvegarde, puis la restaurer sur un serveur sans S3.

Mais je pense que ce n’est pas le cas ici. Et il n’est pas clair quels sont exactement les problèmes, puisque même vous ne vous souvenez pas précisément de ce que vous avez fait à quel moment.

Si des éléments manquent (et que vous avez les identifiants S3), je pourrais essayer d’utiliser un outil S3 pour télécharger tous les fichiers uploadés, puis modifier la base de données pour qu’elle pointe vers eux. Cependant, je ne suis pas assez compétent dans ce domaine pour expliquer ici comment procéder.

Oui, malheureusement, je n’ai pas les identifiants S3 :frowning:

Je peux reproduire les étapes :

  1. Installation d’un nouveau forum Discourse avec discourse_docker derrière Traefik
  2. Sauvegarde de l’ancien forum (incluant certains anciens assets)
  3. Restauration de la sauvegarde sur le nouveau forum
  4. Forçage du HTTPS
  5. Extraction des URLs des assets depuis le fichier dump.sql (provenant de la sauvegarde)
  • egrep -o 'discuss-openhdfpv.eu-central-1.linodeobjects.com\\/original\\/1X\\/[0-9a-z_]{0,}\\.[0-9a-zA-Z]{0,}' ./dump.sql \u003e\u003e original.txt
  • egrep -o 'discuss-openhdfpv.eu-central-1.linodeobjects.com\\/optimized\\/1X\\/[0-9a-z_]{0,}\\.[0-9a-zA-Z]{0,}' ./dump.sql \u003e\u003e optimized.txt
  1. Téléchargement des assets : cat optimized.txt | parallel --gnu "wget -nc -P ./optimized/1X/ {}" (idem pour original)
  2. Suppression des configurations S3
  3. rake posts:rebake

Je peux exécuter des requêtes SQL directement dans la base de données, dès que je sais quoi chercher.