La idea inicial estaba clara: instalar Debian, instalar la paquetería, mover ciertos datos de un sitio a otro, instalar los distintos componentes y a volar. En un par de horas debería estar listo. No es la primera vez que lo hago y no debería haber demasiadas dificultades. La realidad: hoy soy 20 años más viejo que la semana pasada.
Algunas cosas han salido a la primera:
Las páginas de la casa (portada, banco de pruebas y museo) no parecen tener grandes incompatibilidades con la nueva PHP 8.2 (tan solo ha sido necesario un pequeño cambio en la portada): aquí todavía habrá que hacer una comprobación más exhaustiva. Además, la gente de Nodebb no ha hecho cambios mayores en la API del foro por lo que todos los componentes se han seguido comunicando con el sistema de registros sin necesidad de cambios.
Sobre el foro junto con su base de datos, ha sido coser y cantar. Aquí la única cuestión es que sí que ha habido una gran cantidad de cambios en la maquetación de las páginas, por lo que el CSS ha quedado parcialmente obsoleto. Lo he ido retocando, aunque quedan todavía detalles por pulir. Hay una gran cantidad de novedades estéticas y, desde mi punto de vista, la versión móvil ha ganado bastante enteros. Todavía falta por resolver un problemilla de permisos que está teniendo el venerable equipo de moderadores que espero que no sea gran cosa.
Por otra parte, es la primera vez en muchos años que usamos la versión oficial de Debian de Redis, lo cual, desde el punto de vista del mantenimiento, es un gran avance. Enorme avance. Estoy muy contento con esto.
Y hasta aquí lo bonito. El resto ha sido una bajada a los infiernos:
· Muchos blogs no son compatibles con PHP 8.2, por lo que tendré que hacer una actualización manual para cada uno de ellos. No debería ser gran cosa, pero hay que hacerlo. Esto me lo voy a tomar con tranquilidad.
· Uno de los cambios en la organización de los directorios ha consistido en mover todo el contenido "pequeño" (miniaturas, plugins...) de la instancia de Peertube a una unidad SSD para descargar de transacciones al NAS (estaba ya muy petado). Tenía por aquí una flamante unidad SSD casi a estrenar pero, ¡ohh, casualidades de la vida!, es incompatible con la controladora de disco. La enchufas y funciona. Al cabo de las horas, Linux empieza a informar de errores E/S con el ATA. Reinicias y la BIOS deja de detectarla. Si apagas el ordenador y lo enciendes, vuelve a funcionar. He probado con varios cables y con varios conectores SATA pero no, es el maldito disco (que, por cierto, funciona perfectamente en otro equipo). He tenido que echar mano de una no tan nueva unidad SSD (aunque se encuentra en buen estado de salud).
· En Peertube supuestamente se pueden configurar individualmente los directorios de cada tipo de elemento: temporales, videos, miniaturas, etc. Lo he configurado para repartirlo entre el NAS y la SSD y aparentemente todo funcionaba salvo que desde Internet, no se podía acceder al contenido del NAS. ¿Por qué? Pues porque el CMS usa un puente en Nginx para acceder directamente a los datos definiendo algo llamado 'root'. El problema es que sólo puede haber un 'root'. Entonces, ¿cuál eliges: el NAS o el SSD? Pues después de unas cuantas vueltas, he elegido el SSD creando enlaces simbólicos a las carpetas del NAS. Es una opción poco limpia, pero es la única opción que he encontrado.
Bueno, hasta aquí han pasado 9 horas, todavía queda por poner a funcionar Mastodon (¡jaja! que alguien me sacrifique, por favor) y empiezo a cuestionarme algunas decisiones. Lo dejo para el día siguiente porque todos los primeros domingos de cada mes, el NAS hace una comprobación de la matriz y eso hace que todo vaya muy lento durante unas horas.
· ¡Mastodon! Esto son ya palabras mayores. Tanto, que lo voy a dividir en párrafos:
Mastodon estaba alojado en el disco de sistema. Pero el contenido ocupa bastante y la única forma de que sea sostenible a largo plazo es moverlo al NAS. La operación es sencilla: conectar el antiguo disco y copiar al NAS los datos. Los datos ocupan unos 240GB (no es excesivo), están repartidos en unos 800.000 archivos (es normal porque son imágenes, sus miniaturas y videos cortos) y todo esto está repartido en (¡atención!) dos millones y medio de carpetas. Cualquier persona normal se preguntaría ¿por qué son necesarias millones de carpetas para almacenar cientos de miles de archivos?
Esta forma de repartir los datos me ha hecho darme cuenta de lo brutalmente lento que es crear dos millones y medio de carpetas en discos mecánicos. Es increíblemente lento; nunca lo hubiera imaginado. En principio, copiar 240GB al NAS debería haber tardado en torno a una hora. Hacer esta copia ha llevado 14 horas. 14 horas más que ha estado la instancia caída.
Una vez que los archivos están copiados, llega la hora de instalar el CMS. Las instrucciones oficiales están mal. Dicen que hace falta Ruby 3.0.6. Instalo esa versión y llegado a cierto punto, da error. Intento la instalación varias veces más por si me he saltado algo hasta que me da por analizar minuciosamente los logs (sí, esto ha sido culpa mía por no haberlo hecho antes). Resulta que la última versión de Mastodon usa Ruby 3.2.2.
Todo empieza a ir bien hasta que se pone a compilar. Pienso que quizás he cometido otro error y empiezo la instalación otro par de veces con el mismo resultado. A estas alturas, he instalado Mastodon 8 veces. ¡Ocho! Empiezo a pensar que la carencia de ciertas capacidades cognitivas podrían estar impidiendo llevar a cabo esta tarea. Entonces me encuentro a un tipo en Reddit que dice que lleva ya 12 instalaciones. ¡Eh, mirad qué pringao, DOCE veces, JA! -le grito a la pantalla, sintiendo cómo mi orgullo se recompone parcialmente.
Pasados unos minutos, recupero mi frágil equilibrio mental y me da por consultar la solución que algún fulano le ha dado a este pobre desgraciado. Resulta que estoy usando una versión demasiado reciente de NodeJS. La versión que estoy usando es la 18 LTS que salió en abril de 2022. ¿Cómo es posible que la última versión de Mastodon, que salió hace dos semanas, no sea compatible con un NodeJS que lleva un año y medio existiendo? Venga, que alguien responda, ¿algún filósofo en la sala?
Dejando de lado las cuestiones humanistas, miro qué versión necesita Mastodon para funcionar: la versión 16 ni más ni menos. Una versión que lleva sin soporte desde el 11 de septiembre. Sí, señores: la mayoría de instancias de Mastodon que hay levantadas están usando un componente crítico sin soporte. ¿Qué os parece? ¿Dónde están esos filósofos, por favor?
Total, que encuentro una chapuza que permite compilar Mastodon con NodeJS 18, funciona y ya: restauro la base de datos, la migro a la nueva versión, actualizo los feeds y a funcionar. NOTA: Este último párrafo ha sido adaptado a un público infantil. Durante el procedimiento, se ha cometido un delito continuado de blasfemia, pero esta vez debido a mi propia ineptitud.
Y ya ascendiendo de las profundidades de la locura, me he dado cuenta de algo interesante y es que Docker se ha convertido en el estándar de facto. De hecho, empieza a ser complicado encontrar documentación para hacer ciertas cosas "a pelo". Y seguramente, algunas de las dificultades han surgido de ese cambio de paradigma. Así que para la próxima vez, voy a tener que formarme sobre esto porque ya es el presente y además parece una forma increíblemente cómoda de instalar cosas. Espero que sea con Debian 14.
En fin, vaya tocho. Pero ¿y lo a gusto que me he quedado?
PD: Como de costumbre, si veis algo raro, no dudéis en comentarlo.