Je partage mon expérience récente de migration d’une installation Discourse auto-hébergée d’un VPS vers un autre, comme une façon de dire « merci » aux créateurs de Discourse et à sa communauté d’administrateurs. Cette migration préserve les configurations SSL LetsEncrypt et de messagerie.
L’installation d’origine se trouvait sur une instance Google Cloud Platform (GCP) de type g1-small (1 vCPU, 1,7 Go de RAM), en suivant le guide officiel (INSTALL-cloud.md) et en utilisant la branche tests-passed.
La nouvelle installation se trouve sur un VPS KVM de type « Developer » chez Evolution Host (2 cœurs CPU, 2 Go de RAM, 40 Go SSD, temps de reconstruction de 7 min 23 s, 10 €/mois). Ubuntu Server 18.04.4 minimal a été installé avec une partition swap de 1 Go (probablement basée sur un modèle).
Si votre hôte a été installé avec des logiciels supplémentaires, assurez-vous de supprimer les logiciels inutiles, par exemple les serveurs web, et de sécuriser votre hôte (noms d’utilisateurs par défaut, mots de passe, configurations sshd, etc.).
Ce qui suit sont les commandes terminales exécutées en tant que root, nettoyées des données spécifiques à l’installation (remplacez les parties en MAJUSCULES par les vôtres). N’hésitez pas à commenter pour apporter des corrections ou poser des questions !
Préparation du nouvel hôte
apt update && apt -y dist-upgrade
apt install -y byobu mosh htop iotop hugepages curl git && byobu-enable
hugeadm --thp-never
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
echo '/swapfile swap swap auto 0 0' | tee -a /etc/fstab
echo 'vm.swappiness = 10' > /etc/sysctl.d/30-discourse-swap.conf
git clone https://github.com/discourse/discourse_docker.git /var/discourse
reboot
Préparation de l’ancien hôte et sauvegarde des fichiers Discourse
cd /var/discourse
./launcher rebuild app
./launcher enter app
discourse backup
exit
(reprenez le nom de fichier de votre sauvegarde Discourse)
cp -v containers/app.yml ~
cd shared/standalone
cp -v settings.yml ~
tar cvf ~/ssl.tar ssl
tar cvf ~/letsencrypt.tar letsencrypt
cd ~
scp -C ssl.tar letsencrypt.tar app.yml settings.yml USERNAME@NOUVEL-IP-HOTE:~
scp /var/discourse/shared/standalone/backups/default/VOTRE-SAUVEGARDE-DISCOURSE.tar.gz USERNAME@NOUVEL-IP-HOTE:~
exit
Restauration de Discourse sur le nouvel hôte
(déplacez les fichiers copiés avec scp ci-dessus vers le répertoire personnel de l’utilisateur root)
echo 'NOUVEL-IP-HOTE VOTRE-FQHN-DISCOURSE' | tee -a /etc/hosts
cd /var/discourse
cp -v ~/app.yml containers
mkdir -v shared/standalone
cd shared/standalone
cp -v ~/settings.yml .
tar xvf ~/ssl.tar
tar xvf ~/letsencrypt.tar
cd /var/discourse
./discourse-setup
(discourse-setup devrait se terminer sans erreur, vous permettant de vérifier toutes les informations de configuration pertinentes)
mkdir -v shared/standalone/backups/default
cp -v ~/VOTRE-SAUVEGARDE-DISCOURSE.tar.gz shared/standalone/backups/default
./launcher enter app
discourse enable_restore
discourse restore VOTRE-SAUVEGARDE-DISCOURSE.tar.gz
discourse disable_restore
Tests depuis votre machine locale
echo 'NOUVEL-IP-HOTE VOTRE-FQHN-DISCOURSE' | tee -a /etc/hosts
Accédez à https://VOTRE-FQHN-DISCOURSE/admin/email
En bas de la page, saisissez votre adresse e-mail pour tester l’envoi d’e-mails, et naviguez sur votre site Discourse pour confirmer son bon fonctionnement.
Lorsque vous êtes satisfait que tout fonctionne correctement, modifiez l’enregistrement DNS A pour VOTRE-FQHN-DISCOURSE afin qu’il pointe vers l’adresse IP de votre nouvel hôte.