---
title: "Cómo instalar Uptime Kuma, la herramienta de monitorización autoalojada"
description: "Instala Uptime Kuma en un VPS con Docker y Nginx para monitorizar gratis el tiempo de actividad, el SSL, la caducidad de dominios y el tiempo de respuesta de tus sitios web."
date: 2026-02-26
categories: ["self-hosting"]
tags: ["docker","self-hosted"]
---

import { Picture } from "astro:assets";
import YouTubeEmbed from "@components/widgets/YouTubeEmbed.astro";
import img1 from "@assets/images/wordpress/01-uptime-kuma-monitor-1024x755.webp";
import img2 from "@assets/images/wordpress/02-uptime-kuma-smtp-setup-1024x759.webp";
import img3 from "@assets/images/wordpress/03-uptime-kuma-status-1024x730.webp";
import img4 from "@assets/images/wordpress/04-uptime-kuma-emails--1024x78.webp";

Si quieres monitorizar el tiempo de actividad de tu sitio web en tu propio VPS, [Uptime Kuma](https://github.com/louislam/uptime-kuma) es la herramienta a la que siempre vuelvo. Envía alertas por correo electrónico, Slack, Discord, Telegram y un montón de canales más cuando algo se cae, y guarda un historial de los tiempos de respuesta para que detectes qué ha estado lento.

El proyecto es de código abierto y ha recibido actualizaciones importantes recientemente. La versión 2.0 (octubre de 2025) añadió soporte para MariaDB en despliegues grandes, imágenes de Docker rootless para mayor seguridad y una interfaz renovada. La versión 2.1 (febrero de 2026) añadió soporte para Globalping con chequeos desde sondas de todo el mundo, monitorización de la caducidad de dominios y nuevas integraciones de notificaciones como Jira Service Management y Google Sheets.

Esta guía explica cómo instalar Uptime Kuma con Docker Compose, usando Nginx como proxy inverso y un certificado SSL de Let's Encrypt.

<YouTubeEmbed
  url="https://www.youtube.com/embed/5k8y0JZBlWs"
  label="Cómo instalar Uptime Kuma, la herramienta de monitorización autoalojada"
/>

## 1. Aprovisiona un servidor VPS

Necesitas un VPS para ejecutarlo. Yo uso:


<Button link="https://go.bitdoze.com/hetzner" text="VPS de Hetzner" />
<Button link="https://go.bitdoze.com/hostinger-vps" text="VPS de Hostinger" />
<Button link="https://go.bitdoze.com/do" text="DigitalOcean $100 gratis" />
<Button link="https://go.bitdoze.com/vultr" text="Vultr $100 gratis" />

_Los precios de los VPS subieron en todos los proveedores en 2026 — si estás reconsiderando una máquina alquilada, mira [qué cambió y cuándo gana un mini PC](/es/subidas-precios-vps/)._


Uptime Kuma es ligero. Un servidor de 1 vCPU / 1 GB de RAM es suficiente para ejecutarlo junto a otros contenedores sin problemas.

## 2. Instala Uptime Kuma en Ubuntu

### 2.1 Actualiza el sistema e instala Nginx

```bash
sudo apt update && sudo apt upgrade -y
sudo reboot
sudo apt install nginx git -y
```

### 2.2 Instala Docker y Docker Compose

Sigue la [guía oficial de instalación de Docker](https://docs.docker.com/engine/install/ubuntu/) o ejecuta:

```bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
```

> **Nota:** La forma recomendada actualmente es el `docker-compose-plugin` (v2). Usa `docker compose` (sin guion) de ahora en adelante.

### 2.3 Crea los directorios y escribe un archivo compose

```bash
mkdir -p /docker-vol/uptime-kuma
mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma
```

Crea `docker-compose.yml`:

```yaml
services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    volumes:
      - /docker-vol/uptime-kuma:/app/data
    ports:
      - 8001:3001
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
```

> **Consejo:** Usa `louislam/uptime-kuma:2` en lugar de `:latest` para quedarte en la rama v2 y evitar cambios inesperados cuando salga la v3. La versión 2.0+ también tiene imágenes de Docker rootless (`louislam/uptime-kuma:2-rootless`) si quieres ejecutarlo sin privilegios de root.

Arranca el contenedor:

```bash
docker compose up -d
```

### 2.4 Abre el firewall para Nginx

```bash
sudo ufw allow "Nginx Full"
```

### 2.5 Configura Nginx como proxy inverso

Crea `/etc/nginx/sites-available/uptime-kuma.conf` y pega:

```nginx
server {
    listen 80;
    server_name your_domain_here;

    location / {
        proxy_pass         http://localhost:8001;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "upgrade";
        proxy_set_header   Host $host;
    }
}
```

Habilita el sitio y recarga Nginx:

```bash
sudo ln -s /etc/nginx/sites-available/uptime-kuma.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```

## 3. Apunta tu dominio al servidor

Inicia sesión en tu proveedor de DNS y añade un **registro A** que apunte tu dominio o subdominio a la dirección IP del VPS.

## 4. Añade un certificado SSL con Let's Encrypt

Instala Certbot y genera un certificado:

```bash
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain_here
```

Certbot modifica la configuración de Nginx automáticamente y configura la renovación automática. Tu sitio estará disponible por HTTPS de inmediato.

## 5. Configura tu primer monitor

En el primer inicio de sesión creas una cuenta de administrador. Después añade un monitor — pon el tipo en HTTP(s), dale un nombre descriptivo y configura el intervalo de heartbeat en 300 segundos. Comprobar cada 5 minutos es suficiente para la mayoría de los sitios.

<Picture formats={["webp"]} fallbackFormat="webp" src={img1} alt="Pantalla de Uptime Kuma para añadir un monitor" />

### Configura las notificaciones por correo

Ve a Settings → Notifications y añade una notificación SMTP. Para Gmail: hostname `smtp.gmail.com`, puerto `587`, seguridad STARTTLS y tus credenciales de Gmail. Si tienes 2FA en tu cuenta, genera una contraseña de aplicación en lugar de usar tu contraseña principal.

<Picture formats={["webp"]} fallbackFormat="webp" src={img2} alt="Configuración de notificaciones SMTP en Uptime Kuma" />

Una vez configurado, el panel muestra un heartbeat verde para cada monitor correcto:

<Picture formats={["webp"]} fallbackFormat="webp" src={img3} alt="Panel de Uptime Kuma con todos los monitores activos" />

Cuando algo se cae recibes un correo de alerta, y otro cuando se recupera:

<Picture formats={["webp"]} fallbackFormat="webp" src={img4} alt="Correo de notificación de caída de Uptime Kuma" />

## Novedades de la versión 2.x

Si vienes de la v1, esto es lo que cambió:

- **Soporte para MariaDB** -- Ahora puedes usar MariaDB en lugar del SQLite predeterminado para despliegues grandes con cientos de monitores. SQLite sigue funcionando bien para la mayoría de las configuraciones.
- **Monitorización de caducidad de dominios** -- Consulta los datos RDAP y te avisa antes de que los dominios caduquen. Útil si gestionas varios dominios.
- **Integración con Globalping** -- Ejecuta chequeos desde sondas de todo el mundo en lugar de solo desde la ubicación de tu VPS. Útil para confirmar si una caída es regional o global.
- **Docker rootless** -- La imagen `2-rootless` se ejecuta sin privilegios de root, una mejor práctica de seguridad para servidores compartidos.
- **Nuevos proveedores de notificaciones** -- Jira Service Management, Google Sheets, Brevo, Nextcloud Talk y varios más.
- **Soporte para SNMPv3** -- Monitoriza dispositivos de red e infraestructura.
- **Historial de incidentes** -- Registra y documenta incidentes pasados dentro del panel.

La función de copia de seguridad/restauración de la v1 se eliminó en la v2, así que haz una copia de seguridad del volumen `/app/data` manualmente antes de actualizar.

## Conclusión

Uptime Kuma funciona silenciosamente en Docker, comprueba tus sitios y te envía un mensaje cuando algo se rompe. Gestiona la caducidad del SSL, la caducidad de dominios, DNS, puertos TCP, SNMP y más. Llevo años ejecutándolo sin problemas. Coste total en un VPS compartido: prácticamente nada.