Cambios en Gont

He migrado Ghost, Discourse y Foundry a nuevas máquinas de Strato.

He migrado Ghost, Discourse y Foundry a nuevas máquinas de Strato. Me llegó una notificación por correo electrónico y, aunque no me esforcé mucho por traducir desde el alemán y entender exactamente lo que decía el mensaje, me pareció que me avisaban de que las máquinas que estaba utilizando iban a dejar de recibir soporte. En otro correo también me decían que iban a subir un poco los precios porque se habían quedado obsoletos y juzgaban que estaban pidiendo poco por lo que ofrecían.

Así que eché un vistazo a las máquinas que ofrecen ahora y pensé que las VPS Linux de la línea económica podrían servirme. Me decidí a migrar hace unos días y, finalmente, este fin de semana di el salto.

Primero pasé Foundry a una máquina de 2 cores y 2GB de RAM que cuesta solo 2€ al mes. El proceso fue prácticamente indoloro. Aparte de las tareas rutinarias de crearme el usuario, configurar SSH y el firewall e instalar Docker, lo único que tuve que hacer fue clonar el repositorio con la configuración y arrancar todo con compose.

Tuve algún problema al clonar el repositorio porque con mi usuario no tenía permiso para escribir en el directorio de destino y con sudo no reconocía la clave SSH que había añadido al agente. Finalmente opté por clonar en mi directorio de usuario y mover el repositorio a su destino definitivo después.

Tras arrancar Foundry, lo volví a parar y copié la carpeta con mi contenido desde el servidor antiguo. Cuando reanudé la aplicación todo estaba en su sitio. Así que cambié los DNS y lo dejé funcionando.

Aunque, sobre el papel, la máquina cuenta con menos recursos, he notado una mejoría en el rendimiento. Ahora cuando accedo a la aplicación, carga más rápido. Tampoco he experimentado el problema de agotar los PID. Quizás es porque ahora tengo solo una aplicación en cada máquina, o, tal vez, porque estas máquinas utilizan una plataforma de virtualización diferente, antes era Virtuozzo, que tenía los límites conflictivos, y ahora es KVM.

Después intenté meter Ghost en una máquina de 1 core y 1GB de RAM, pero no iba ni cara al viento. El proceso kswpad0 se llevaba toda la CPU. Según leí, esto se debía a que la memoria de la máquina estaba totalmente ocupada y ese proceso es el que hace el volcado a disco. Efectivamente entre la instancia de MySQL y los procesos en segundo plano de Docker consumían toda la memoria. Aunque cuando desplegaba discourse descubrí que pudo ser porque, por defecto, el swap no está activado.

Había alquilado dos VPS de 1 core, una de ellas por error. La página de Strato tiene algo confuso que no me gusta: desde el acceso personalizado no puedes llegar a la tienda, ni viceversa. El caso es que empecé a hacer la compra y, cuando me pidieron los datos, inicié sesión para no tener que meterlos a mano. Cuando llegué a la tienda de nuevo no vi que tenía un servidor en el carro y empecé el proceso de 0. Cuando me di cuenta, había alquilado 2.

Inicialmente pensé que podrían valerme, porque tanto Discourse como Ghost tienen un requisito mínimo de 1GB de RAM. Sin embargo, cuando vi que Ghost no funcionaba, decidí cancelar las máquinas, aunque tuviera que pagar una parte o el precio completo. Por suerte, Strato te deja cancelar gratuitamente si aún no han transcurrido los primeros 30 días de contrato. Uno de los VPS me dio la opción (fue así como me acordé de la política de cancelación) y lo pude cancelar enseguida, pero para el otro tuve que abrir un tique de soporte. Sin embargo, me atendieron rápidamente y al día siguiente ya lo tenía cancelado.

Así que alquilé dos máquinas más de 2 cores y en una monté Ghost y en la otra Discourse. El proceso con Ghost fue muy sencillo: se instala como Foundry, iniciando los contenedores con compose, y, además, para migrar los datos ahora tiene una función de exportar/importar. Todavía está en fase de pruebas, se accede desde la pestaña Labs, pero funciona perfectamente, al menos en mi caso.

Discourse costó un poco más. Después de hacer y descargar la copia de respaldo (el proceso es muy sofisticado, cuando Discourse ha preparado la copia, le das a un botón y te envía un correo con un enlace de descarga) y el fichero de configuración, tuve que parar la máquina antigua y cambiar las DNS, porque, durante la instalación, discourse comprueba que se está ejecutando en la URL que le has dicho. A continuación, creé un nuevo fichero de configuración comparando el que se había generado con el antiguo y arranqué la instancia, para lo que tuve que utilizar discourse-doctor en lugar de launcher, lo que me desconcertó. Finalmente, tras crear un nuevo usuario administrador, cargué la copia de respaldo y la restauración terminó con éxito.

Todavía, tras cambiar las DNS, estoy haciendo algún pequeño ajuste aquí y allá. Pero ya está todo funcionado perfectamente. Ahora quiero documentar todo, para lo que, probablemente opte por una wiki de GitHub, aunque tenga que cambiar la visibilidad del repositorio a público.