Condivido la mia recente esperienza di migrazione di un’installazione Discourse auto-ospitata da un VPS a un altro, come modo per dire “grazie!” ai creatori di Discourse e alla sua comunità di amministratori. Questa migrazione preserva le configurazioni SSL di Let’s Encrypt e le impostazioni di posta elettronica.
L’installazione originale era su un’istanza Google Cloud Platform (GCP) di tipo g1-small (1 vCPU, 1,7 GB di RAM), utilizzando la guida ufficiale (INSTALL-cloud.md) e seguendo il ramo tests-passed.
La nuova installazione è su un VPS KVM di tipo “Developer” di Evolution Host (2 core CPU, 2 GB di RAM, 40 GB SSD, tempo di ricostruzione 7m23s, 10 €/mese). È stato installato Ubuntu Server 18.04.4 minimale con una partizione swap da 1 GB (probabilmente basata su un template).
Se il tuo host è stato installato con software aggiuntivo, assicurati di rimuovere il software non necessario, ad esempio i server web, e di proteggere il tuo host (nomi utente predefiniti, password, configurazioni sshd, ecc.).
Di seguito sono riportati i comandi del terminale eseguiti come root, con i dati specifici dell’installazione rimossi (sostituisci le parti in MAIUSCOLO con i tuoi dati). Commenta pure con eventuali correzioni o domande!
Preparazione del nuovo host
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
Preparazione del vecchio host e backup dei file di Discourse
cd /var/discourse
./launcher rebuild app
./launcher enter app
discourse backup
exit
(annota il nome del file del backup di 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@NEW-HOST-IP:~
scp /var/discourse/shared/standalone/backups/default/YOUR-DISCOURSE-BACKUP.tar.gz USERNAME@NEW-HOST-IP:~
exit
Ripristino di Discourse sul nuovo host
(sposta i file copiati con scp sopra nella directory home dell’utente root)
echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | 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 dovrebbe completarsi senza errori, permettendoti di verificare tutte le informazioni di configurazione pertinenti)
mkdir -v shared/standalone/backups/default
cp -v ~/YOUR-DISCOURSE-BACKUP.tar.gz shared/standalone/backups/default
./launcher enter app
discourse enable_restore
discourse restore YOUR-DISCOURSE-BACKUP.tar.gz
discourse disable_restore
Test dal tuo computer locale
echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | tee -a /etc/hosts
Apri il browser su https://YOUR-DISCOURSE-FQHN/admin/email
In fondo alla pagina, inserisci il tuo indirizzo email per testare l’invio di email e naviga nel tuo sito Discourse per confermare lo stato di funzionamento.
Quando sei soddisfatto che tutto funzioni correttamente, modifica il record DNS A per YOUR-DISCOURSE-FQHN per puntare all’indirizzo IP del tuo nuovo host.