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.

Iván· Publicado el · 2 minRead in English →

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

  1. Para el contenedor y copia la carpeta de datos.
  2. Cambia a la etiqueta 2, no a latest.
  3. Deja que la primera migración termine.
  4. Comprueba monitores, historial y avisos.
  5. Si tienes scripts que usan su API, revisa que sigan funcionando.
Mini-quiz

¿Te has quedado con la idea?

Tres preguntas rápidas. Cada acierto suma 10 XP.

  1. ¿Qué archivos hay que copiar juntos para tener una copia completa de la base de datos SQLite de Kuma?
  2. ¿Qué etiqueta de imagen usé para quedarme en la versión 2 sin sorpresas de versiones futuras?
  • #uptime-kuma
  • #docker
  • #actualizaciones
  • #sqlite
  • #backup
Esc