Mise à niveau accidentelle, certains paramètres sont maintenant perdus/cassés

Pour être tout à fait transparent, je n’ai effectué aucune maintenance manuelle sur notre installation Discourse auto-hébergée depuis très longtemps, et quelqu’un d’autre l’avait configurée à l’origine.

J’ai dû modifier mes identifiants SMTP, car SendGrid exige désormais le passage de l’authentification de base aux clés API.

J’ai trouvé ce document : Fournisseurs d’e-mail recommandés pour Discourse

Il indique :

Pour modifier le service d’e-mail actuel, exécutez également ./discourse-setup (cela mettra le forum hors ligne pendant quelques minutes le temps qu’il soit reconstruit).

J’ai exécuté cette commande, répondu aux questions comme attendu, et cela a généré environ 2 000 lignes de sortie sur stdout, se terminant par :

Mise à niveau terminée
----------------
Les statistiques de l'optimiseur ne sont pas transférées par pg_upgrade, donc,
une fois le nouveau serveur démarré, envisagez d'exécuter :
    ./analyze_new_cluster.sh

L'exécution de ce script supprimera les fichiers de données de l'ancien cluster :
    ./delete_old_cluster.sh
-------------------------------------------------------------------------------------
MISE À NIVEAU DE POSTGRES TERMINÉE

L'ancienne base de données 10 est stockée dans /shared/postgres_data_old

Pour terminer la mise à niveau, reconstruisez à nouveau en utilisant :

./launcher rebuild app
-------------------------------------------------------------------------------------

cfd4df26701b4b4cd4a4202f30a9c8165a1ba609c921bffc25f250f52fee6cbe

Je ne m’attendais pas du tout à ce que cela « mette à niveau » quoi que ce soit. Je voulais simplement modifier les identifiants SMTP. Mais le site ne s’est pas redémarré automatiquement, alors j’ai fait ce que le texte indiquait pour « terminer la mise à niveau » et j’ai exécuté :

./launcher rebuild app

Cela a déclenché environ 8 000 autres lignes de sortie sur stdout. Le site est finalement revenu en ligne, MAIS il ne ressemble plus au même :

  • Mon logo a disparu, remplacé par le logo « Discourse ».
  • Les images d’avatars des utilisateurs étaient cassées. Elles ont fini par fonctionner à nouveau.
  • Les images dans les publications et les logos de catégories étaient cassés. Ils ne fonctionnent toujours pas. J’ai cherché des images avec des noms de fichiers correspondants dans le répertoire ./discourse/share ET dans notre bucket S3 (là où l’URL s’attend à les trouver), mais elles n’existent pas.
  • Les publications de ma catégorie « support », que j’avais masquées de la page « Derniers », sont à nouveau visibles sur cette page.
  • Ma catégorie « support » n’apparaît plus sur la page « Catégories ».
  • La page « Catégories » est désormais en deux colonnes, avec les catégories à gauche et « Derniers » à droite. Je pense qu’auparavant, c’était simplement une liste de catégories.
  • La couleur du + dans mon bouton + Nouveau sujet est passée du blanc au gris.

À ce stade, je soupçonne qu’une certaine configuration a été perdue, mais tous mes messages sont intacts. Je pense ensuite que Discourse s’est mis à niveau tout seul (depuis quelle version je ne sais pas, probablement très nombreuses versions), et que certains paramètres par défaut sous-jacents, CSS, modèles, etc., ont changé, provoquant les problèmes listés ci-dessus.

En examinant le code source, je vois que la version est maintenant 2.6.0.beta6, qui a apparemment été publiée il y a seulement 7 jours.

Mes questions sont donc les suivantes :

  • Est-il normal de devoir procéder à une mise à niveau complète du logiciel pour appliquer un simple changement de paramètre, comme les identifiants SMTP ?
  • Comment modifier des paramètres ou appliquer des mises à jour de sécurité sans mettre à niveau l’ensemble du logiciel ?
  • Où sont passées mes images, ou pourquoi leur URL a-t-elle changé d’une manière qui les rend désormais inaccessibles ?
  • Existe-t-il un moyen de revenir en arrière sans perdre les nouveaux messages depuis que tout cela s’est produit ? Je ne connais même pas la version précédente. J’ai des sauvegardes Discourse sur S3 (simplement un dump SQL compressé en gzip).
  • Dois-je simplement parcourir manuellement tous les paramètres et personnalisations pour corriger des éléments comme la couleur du + Nouveau sujet, ou la visibilité de la catégorie « support » ?

Je pensais que nous avions conservé des instantanés EBS de notre volume EC2 où Discourse est hébergé, mais il s’est avéré que ce n’était pas le cas. J’ai depuis activé les instantanés afin de pouvoir revenir en arrière de cette manière si nécessaire à l’avenir.

Merci.

Oui. Il aurait été possible de détruire et de redémarrer le conteneur pour appliquer les nouveaux paramètres SMTP, mais il aurait fallu examiner attentivement la procédure pour savoir comment le faire.

Non. Les mises à jour de sécurité font partie de l’ensemble du logiciel. Vous auriez pu utiliser la branche stable, mais il semble que vous étiez en retard de plusieurs versions, donc la plupart de vos problèmes se seraient tout de même produits.

C’est incertain. Elles ne sont généralement pas perdues lors d’une mise à jour.

Non. [quote=“mrmachine, post:1, topic:171465”]
Dois-je simplement passer en revue tous les paramètres et personnalisations manuellement pour corriger des éléments comme la couleur du bouton « + Nouveau sujet » et la catégorie « support » masquée/visible ?
[/quote]

Oui. Il semble que vous utilisiez une version vieille de plusieurs années. Des dizaines de programmeurs ont consacré des milliers d’heures depuis lors. Ils ont apporté des modifications qui ont rompu certaines de vos personnalisations.

Mais vous ne pourrez toujours pas revenir en arrière sans perdre les messages publiés depuis la dernière sauvegarde.

Vous devriez effectuer une mise à jour à chaque version bêta, ou passer à la branche stable lors de la prochaine version stable.

Je fais un suivi à ce sujet. Nous stockions les images téléchargées sur S3 et n’avions pas choisi de télécharger les images distantes afin d’éviter les liens brisés. Je ne sais pas si cela est pertinent, mais l’idée est que les images devaient être stockées sur S3 et référencées via des URL S3 dans Discourse.

Après la mise à niveau, de nombreuses images n’apparaissaient plus : les logos de catégories et les images téléchargées par les utilisateurs dans les publications. En consultant S3, nous avons constaté que les noms de fichiers référencés n’existaient pas.

Heureusement, la versionning S3 était activé et j’ai pu voir dans la console S3 que de nombreuses images référencées avaient été supprimées pendant ou après la mise à niveau.

J’ai adapté un script Python que j’ai trouvé (https://stackoverflow.com/a/54613767/2829685) pour parcourir toutes les versions d’objets dans notre bucket S3 et supprimer les « marqueurs de suppression » de la version actuelle de tout fichier dont le timestamp last_modified est supérieur ou égal à la date de la mise à niveau.

Cela a pris la majeure partie de la journée et a permis de restaurer environ 45 000 images. Il semble que Discourse crée de nombreuses miniatures pour chaque image.

Nos logos de catégories et les images téléchargées par les utilisateurs dans les publications sont de nouveau visibles. Mais je ne comprends pas comment toutes ces images auraient pu être supprimées dans S3 dans le cadre du processus de mise à niveau.

Cela ressemble à un bug très dangereux dans le processus de mise à niveau de Discourse ? Bien que cela ait peut-être déjà été corrigé, car je passais d’une version très ancienne.