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.