Esempio di migrazione self-hosting — da VPS a VPS

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.

6 Mi Piace