Actualizar Uptime Kuma de la versión 1 a la 2 con Docker, sin perder nada
Cómo pasé de Uptime Kuma 1.23 a 2.x: la copia previa que no te puedes saltar, la etiqueta de imagen correcta y una librería de Python que dejó de funcionar.
Uptime Kuma 2 trae bastantes mejoras (entre ellas, soporte para otras bases de datos y un montón de arreglos), pero es una versión mayor: cambia la estructura de la base de datos. Así que no vale con cambiar un número y rezar.
Así lo hice yo en la Raspberry Pi.
1. Copia de seguridad antes de nada
Kuma guarda todo (monitores, historial, notificaciones) en una carpeta de datos. Para la copia, para el contenedor primero, así no hay escrituras a medias:
docker compose stop uptime-kuma
tar czf ~/backup/uptime-kuma-antes-de-v2.tar.gz -C ~/servicios uptime-kuma
Si algo sale mal, restaurar es descomprimir esa carpeta y volver a la imagen antigua.
La trampa del SQLite en modo WAL
Kuma usa SQLite en modo WAL. En ese modo, los cambios recientes no están en kuma.db, sino en kuma.db-wal hasta que se vuelcan. Si alguna vez copias la base de datos «en caliente» para consultarla, copia los tres archivos juntos:
kuma.db kuma.db-wal kuma.db-shm
Si copias solo kuma.db, te faltarán los últimos cambios y pensarás que algo se ha perdido.
2. Cambiar la imagen
En el docker-compose.yml:
uptime-kuma:
image: louislam/uptime-kuma:2
Uso la etiqueta 2, no latest. Así recibo las actualizaciones de la versión 2, pero el día que salga una 3 no me la instala sin avisar.
docker compose pull uptime-kuma
docker compose up -d uptime-kuma
docker logs -f uptime-kuma
El primer arranque tarda más de lo normal: está migrando la base de datos. No lo interrumpas. En los registros verás el progreso de la migración; cuando termine, la web vuelve a responder.
3. Comprobar
- Entra en la web y revisa que están todos los monitores.
- Mira que el historial sigue ahí.
- Revisa las notificaciones y lanza una prueba.
Lo que se rompió: la librería de Python
Yo había creado los monitores por programa con una librería de Python no oficial que habla con la API de Kuma. Con Kuma 2 dejó de funcionar: la API interna cambió.
Si automatizas Kuma con scripts, compruébalo antes de actualizar. En mi caso, para consultar cosas «por detrás» ahora leo directamente la base de datos SQLite (copiando los tres archivos, como arriba), y los cambios los hago desde la web.
Resumen
- Para el contenedor y copia la carpeta de datos.
- Cambia a la etiqueta
2, no alatest. - Deja que la primera migración termine.
- Comprueba monitores, historial y avisos.
- Si tienes scripts que usan su API, revisa que sigan funcionando.
¿Te has quedado con la idea?
Tres preguntas rápidas. Cada acierto suma 10 XP.