Ejemplo de migración de autoalojamiento — VPS a VPS

Estoy compartiendo mi experiencia reciente de migrar una instalación de Discourse autoalojada de un VPS a otro, como una forma de decir “¡gracias!” a los creadores de Discourse y a su comunidad de administradores. Esta migración preserva las configuraciones de SSL de LetsEncrypt y de correo electrónico.

La instalación original estaba en una instancia de tipo g1-small de Google Cloud Platform (GCP) (1 vCPU, 1.7 GB de RAM), utilizando la guía oficial (INSTALL-cloud.md) y siguiendo la rama tests-passed.

La nueva instalación está en un VPS KVM de tipo “Developer” de Evolution Host (2 núcleos de CPU, 2 GB de RAM, 40 GB de SSD, tiempo de reconstrucción de 7m23s, 10 €/mes). Se instaló Ubuntu Server 18.04.4 minimal con una partición de intercambio (swap) de 1 GB (probablemente basada en una plantilla).

Si su host se instaló con software adicional, asegúrese de eliminar el software innecesario, por ejemplo, servidores web, y asegúrese de asegurar su host (nombres de usuario predeterminados, contraseñas, configuraciones de sshd, etc.).

A continuación se presentan los comandos de terminal emitidos como root, y limpiados de datos específicos de la instalación (reemplace las partes en MAYÚSCULAS con las suyas). ¡Por favor, comente con cualquier corrección o pregunta!

Preparación del nuevo 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

Preparación del host antiguo y copia de seguridad de los archivos de Discourse

cd /var/discourse
./launcher rebuild app

./launcher enter app
discourse backup
exit

(tome nota del nombre de archivo de su copia de seguridad de 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 NOMBRE-DE-USUARIO@IP-DEL-NUOVO-HOST:~
scp /var/discourse/shared/standalone/backups/default/COPIA-DE-SEGURIDAD-DE-DISCOURSE.tar.gz NOMBRE-DE-USUARIO@IP-DEL-NUOVO-HOST:~
exit

Restauración de Discourse en el nuevo host

(mueva los archivos copiados con scp arriba al directorio home del usuario root)

echo 'IP-DEL-NUOVO-HOST SU-FQHN-DE-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 debería completarse sin errores, permitiéndole verificar toda la información de configuración relevante)

mkdir -v shared/standalone/backups/default
cp -v ~/COPIA-DE-SEGURIDAD-DE-DISCOURSE.tar.gz shared/standalone/backups/default

./launcher enter app
discourse enable_restore
discourse restore COPIA-DE-SEGURIDAD-DE-DISCOURSE.tar.gz
discourse disable_restore

Pruebas desde su máquina local

echo 'IP-DEL-NUOVO-HOST SU-FQHN-DE-DISCOURSE' | tee -a /etc/hosts

Navegue a https://SU-FQHN-DE-DISCOURSE/admin/email

En la parte inferior de la página, ingrese su dirección de correo electrónico para probar el envío de correos electrónicos, y navegue por su sitio Discourse para confirmar el estado de funcionamiento.

Cuando esté satisfecho de que todo está en orden, cambie el registro DNS A para SU-FQHN-DE-DISCOURSE para que apunte a la dirección IP de su nuevo host.

6 Me gusta