Cómo montar tu propia página de estado con Uptime Kuma
Paso a paso para vigilar tus webs con Uptime Kuma: instalación con Docker, qué comprobar, cómo recibir avisos y cómo publicar una página de estado con tu marca.
En este artículo
Una página de estado responde a una sola pregunta: ¿funciona o se ha caído? Te ahorra mensajes cuando hay un problema, y a ti te avisa antes de que te lo cuente un cliente. La nuestra está en esta dirección y la montamos con Uptime Kuma, una herramienta gratuita y de código abierto que instalas en tu propio servidor. Así se hace.
1. Instalarlo con Docker
Con Docker es un solo comando:
docker run -d --restart=always \
-p 127.0.0.1:3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:2Ese 127.0.0.1 hace que el panel solo se pueda abrir desde el propio servidor, y que de cara a internet lo sirva Nginx con HTTPS. Los datos quedan en el volumen uptime-kuma: inclúyelo en tus copias de seguridad.
2. Publicarlo detrás de Nginx
Uptime Kuma actualiza el panel mediante WebSockets, así que el proxy tiene que dejarlos pasar. Si faltan estas cabeceras, verás el panel cargando sin parar:
server {
listen 443 ssl;
server_name estado.ejemplo.com;
# Aquí van tus certificados: ssl_certificate y ssl_certificate_key
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Al abrirlo por primera vez te pedirá crear el usuario administrador. Después, actívale la verificación en dos pasos desde los ajustes: ese panel sabe todo lo que tienes montado.
3. Elegir qué vigilar
Uptime Kuma comprueba webs, puertos, ping, registros DNS, contenedores de Docker y más. Para una web normal, estas tres comprobaciones cubren casi todo:
HTTP(s): que la web responda. Es la básica.
HTTP(s) con palabra clave: que además aparezca un texto concreto. Una web rota también puede responder «200 OK» con una página en blanco, y esta comprobación lo detecta.
Registro DNS: que tu dominio siga apuntando adonde debe. Cuando falla, parece que se ha caído todo a la vez.
Si tienes una API, crea una ruta de salud (por ejemplo, /health) que compruebe también la base de datos, y vigila esa. Saber que el servidor responde no sirve de mucho si la base de datos está caída.
4. Configurar los avisos
Una caída que nadie ve no sirve de nada. Uptime Kuma avisa por Telegram, Discord, Slack, correo y más de 90 servicios. Dos consejos:
Usa más de un reintento antes de avisar. Así un fallo puntual de red no te despierta de madrugada.
Prueba el aviso el primer día. Cada notificación tiene un botón de prueba: úsalo y no descubras que no funcionaba durante la primera caída.
5. Crear la página de estado
Desde «Páginas de estado» creas una con su dirección (/status/mi-empresa), le pones título y descripción y arrastras los servicios que quieras mostrar, ordenados en grupos. También puedes asignarle su propio dominio.
Usa nombres que entienda cualquiera: «Tienda online» dice más que «prod-web-02». Y publica solo lo que le interese a quien la visita: no hace falta enseñar cada pieza interna.
6. Adaptarla a tu marca
La página admite CSS propio, y así dejamos la nuestra con el mismo aspecto que el resto de nuestras webs. Dos detalles que nos costó encontrar en la versión 2:
La descripción y el pie comparten la clase
.alert-heading. Para darles estilos distintos, usa[data-testid='description']y[data-testid='footer-text'].Las barras de historial se dibujan en un lienzo con colores fijos, así que el CSS no las cambia. El color de las barras vacías sí se puede ajustar con la variable
--beat-empty-color.
El error que conviene evitar
No lo instales solo en el mismo servidor que vigila. Si esa máquina se cae, se cae también el vigilante, justo cuando más lo necesitas: ni te avisa ni la gente puede ver la página de estado. Lo ideal es tenerlo en otro servidor, mejor si está en otro proveedor. Un servidor pequeño y barato le basta.
¿Quieres montar algo así para tu proyecto y prefieres que te echemos una mano? Cuéntanoslo.