Déplacez votre instance Discourse vers un autre serveur

Je partage ici un cas particulier de migration auquel je me suis heurté, au cas où cela aiderait quelqu’un d’autre.

J’ai rencontré un cas limite avec Let’s Encrypt/SSL en déplaçant une instance Discourse autonome vers un nouveau VPS, j’ai donc rédigé le diagnostic exact et les étapes de récupération, au cas où ils seraient utiles à d’autres personnes suivant ce guide.

Dans mon cas, nginx à l’intérieur de app ne démarrait pas car les deux fichiers .cer dans /var/discourse/shared/standalone/ssl/ étaient devenus des fichiers de zéro octet :

PEM_read_bio_X509_AUX() failed

La reconstruction a tenté de nouveau l’émission du certificat, et après plusieurs tentatives, j’ai atteint la limite de taux de certificats de Let’s Encrypt. Copier les fichiers de certificat encore valides depuis l’ancien serveur seul n’était pas suffisant, car le démarrage de app les remplaçait à nouveau par des fichiers de zéro octet.

Ce qui a finalement résolu le problème, c’est d’arrêter app et de copier à la fois le répertoire fonctionnel /var/discourse/shared/standalone/ssl/ et l’état correspondant /var/discourse/shared/standalone/letsencrypt/ depuis l’ancien serveur, puis de redémarrer le conteneur.

J’ai documenté la séquence complète ici :

Il s’agit de notes de diagnostic/récupération issues de cette migration particulière, et non d’un remplacement de la documentation officielle sur la migration ou HTTPS.

Il existe également un ancien sujet Meta couvrant le mode de défaillance lié aux fichiers .cer vides :