Exemple de migration vers l'hébergement personnel — VPS vers VPS

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.

6 « J'aime »