Guía de despliegue

Kener en un VPS: una página de estado para tus servicios

Desplegar en un VPS Cloud →

Tutorial

Kener en un VPS: una página de estado para tus servicios

Autoalojamiento6 min de lectura4 pasos

Cuando tu servicio cae, la primera pregunta de tus clientes es « ¿el problema es mío o vuestro? ». Una página de estado la responde antes de que escriban al soporte. Kener es una página de estado de código abierto (licencia MIT) que monitoriza lo que muestra: sondas HTTP, TCP, DNS, SSL y heartbeat, historial de disponibilidad, incidentes con cronología, mantenimientos programados y suscripciones por correo. Esta guía lo instala con Docker Compose en un VPS, lo publica en HTTPS detrás de nginx y configura después las sondas, los incidentes y las alertas.

Contenido· Por qué una página de estado pública1/11
  1. 01Por qué una página de estado pública
  2. 02Lo que aporta Kener
  3. 03Kener, Uptime Kuma y Gatus
  4. 04Requisitos previos
  5. 05Instalar Kener con Docker Compose
  6. 06Crea la cuenta de administrador sin esperar
  7. 07Crear tus primeras sondas
  8. 08Declarar un incidente y programar un mantenimiento
  9. 09Avisar a tu equipo y a tus usuarios
  10. 10Copia de seguridad y actualización
  11. 11Instalación en un clic desde el Marketplace de ServOrbit

Por qué una página de estado pública

Una herramienta de monitorización avisa a tu equipo de que un servicio está caído. Una página de estado se lo dice a tus usuarios — y eso es lo que suele faltar durante un incidente: los clientes no saben si el problema viene de su lado, abren tickets duplicados y te reclaman en las redes sociales.

Kener reúne ambos papeles. Sus sondas comprueban tus servicios a intervalos regulares y publican el historial de disponibilidad; cuando ocurre un incidente, añades actualizaciones que todos leen en el mismo sitio. Alojar esta página tú mismo evita una suscripción a un servicio de páginas de estado facturado por suscriptor o por página, y mantiene tus datos de monitorización contigo.

Lo que aporta Kener

  • Sondas integradas — API y HTTP, ping, TCP, DNS, SSL, SQL y heartbeat para tareas programadas.
  • Incidentes con cronología — cada actualización queda visible, de la detección a la resolución.
  • Mantenimientos programados — anunciados por adelantado, sin falsas alertas durante la intervención.
  • Suscripciones por correo — los visitantes se suscriben a los incidentes y mantenimientos que les afectan.
  • Alertas del equipo — webhook, Slack, Discord y correo, con plantillas de mensajes.
  • A tu imagen — logotipo, colores, tema claro u oscuro, varias páginas, insignias y widgets.

Kener, Uptime Kuma y Gatus

Desplace la tabla

KenerUptime KumaGatus
Función principalPágina de estado con monitorización integradaMonitorización con páginas de estado opcionalesMonitorización declarada en YAML
ConfiguraciónInterfaz de administración webInterfaz webArchivo YAML
Suscripciones de visitantes por correoSí (SMTP o Resend)NoNo
Varias páginas de estadoSíSíNo, un único panel
Mantenimientos programadosSíSíSí, declarados en YAML
AlmacenamientoSQLite, PostgreSQL o MySQL, más RedisSQLite o MariaDBMemoria, SQLite o PostgreSQL

Requisitos previos

Un VPS Ubuntu 24.04 con 1 GB de RAM y 10 GB de disco, Docker y el plugin Compose instalados, y un nombre de host que apunte al VPS — por ejemplo status.example.com. Kener necesita conocer su dirección pública: la variable ORIGIN rige su protección contra peticiones entre sitios, y toda petición de otro origen se rechaza. Prevé también nginx y Certbot para el HTTPS.

Instalar Kener con Docker Compose

  1. Preparar el directorio y la clave secreta

    Crea el directorio de la aplicación y un archivo .env con la clave de firma de las sesiones y la dirección pública.

    mkdir -p /opt/kener && cd /opt/kener
    echo "SECRET_KEY=$(openssl rand -hex 32)" > .env
    echo "DOMAIN=status.example.com" >> .env
    chmod 600 .env
  2. Escribir el archivo docker-compose.yml

    Dos servicios: Redis, que lleva las colas de tareas y el planificador de las sondas, y Kener, con su base SQLite en un volumen. El puerto solo se publica en la interfaz local: solo nginx accede a él.

    services:
      redis:
        image: redis:7.4-alpine
        restart: unless-stopped
        command: ["redis-server", "--appendonly", "yes"]
        volumes:
          - kener-redis:/data
        healthcheck:
          test: ["CMD", "redis-cli", "ping"]
          interval: 10s
          timeout: 5s
          retries: 10
    
      kener:
        image: rajnandan1/kener:4.1.10
        restart: unless-stopped
        depends_on:
          redis:
            condition: service_healthy
        ports:
          - "127.0.0.1:3000:3000"
        environment:
          KENER_SECRET_KEY: ${SECRET_KEY}
          ORIGIN: https://${DOMAIN}
          REDIS_URL: redis://redis:6379
          DATABASE_URL: sqlite://./database/kener.sqlite.db
        volumes:
          - kener-data:/app/database
    
    volumes:
      kener-data: {}
      kener-redis: {}
  3. Arrancar y comprobar

    Arranca la pila y consulta el punto de salud: responde en cuanto la aplicación está lista, normalmente en unos quince segundos.

    docker compose up -d
    docker compose ps
    curl -fsS http://127.0.0.1:3000/healthcheck
  4. Publicar en HTTPS con nginx

    Crea un vhost que reenvíe las peticiones a Kener y obtén el certificado con certbot --nginx -d status.example.com.

    server {
        listen 443 ssl http2;
        server_name status.example.com;
        # ssl_certificate / ssl_certificate_key: added by Certbot
    
        location / {
            proxy_pass http://127.0.0.1:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }

Crea la cuenta de administrador sin esperar

Kener no crea ninguna cuenta por adelantado: el primer visitante de /account/signin ve el formulario Create Admin Account y pasa a ser administrador. Abre esta página en cuanto funcione el HTTPS y crea tu cuenta con una contraseña robusta. Después el formulario desaparece y se rechaza cualquier nueva creación.

Crear tus primeras sondas

En la administración, cada monitor corresponde a una línea de la página pública. Empieza con tres sondas: una sonda API sobre la página de inicio o un punto de salud de tu aplicación (código HTTP esperado, tiempo máximo), una sonda SSL que alerta unos días antes de que caduque el certificado, y una sonda TCP sobre el puerto de tu base de datos si es accesible desde el VPS.

Para una tarea programada — copia de seguridad, exportación, sincronización — usa una sonda heartbeat: es la tarea la que llama a Kener al terminar, y la ausencia de señal a la hora prevista dispara la caída.

# at the end of your backup script
curl -fsS -m 10 https://status.example.com/ext/heartbeat/nightly-backup/YOUR_SECRET

Agrupa los monitores por servicio (sitio, API, pagos) para que la página siga siendo legible, y oculta los que solo interesan al equipo.

Declarar un incidente y programar un mantenimiento

Un incidente se crea desde la administración: título, monitores afectados, gravedad y después actualizaciones sucesivas — « investigando », « causa identificada », « resuelto ». Cada actualización queda visible en la cronología, lo que es mejor que un único mensaje editado sobre la marcha.

Un mantenimiento se programa por adelantado con su ventana de inicio y fin. Aparece en la página antes de la intervención, y los monitores afectados no cuentan la interrupción como una caída.

Avisar a tu equipo y a tus usuarios

Dos circuitos distintos. Para el equipo, las alertas se disparan según el estado de un monitor y se envían a un webhook, Slack, Discord o un correo, con plantillas de mensajes ajustables. Para los visitantes, las suscripciones les envían los incidentes y mantenimientos por correo, tras confirmar su dirección con un código.

Ambos requieren el envío de correo configurado: añade al entorno del servicio kener las variables SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD y SMTP_SENDER, o RESEND_API_KEY y RESEND_SENDER_EMAIL, y reinicia con docker compose up -d. Activa después las suscripciones en la administración.

Copia de seguridad y actualización

Toda la configuración y el historial viven en la base SQLite del volumen kener-data; Redis solo lleva colas y caché. Copia el volumen tras una breve parada del servicio para obtener una copia coherente:

cd /opt/kener
docker compose stop kener
docker run --rm -v kener_kener-data:/data -v "$PWD":/backup alpine \
  tar czf /backup/kener-$(date +%F).tar.gz -C /data .
docker compose start kener

Para actualizar, lee las notas de versión en la página de releases del repositorio, cambia la etiqueta de la imagen en docker-compose.yml y ejecuta docker compose pull && docker compose up -d. El contenedor actualiza su base al arrancar: haz la copia antes.

Instalación en un clic desde el Marketplace de ServOrbit

En un VPS de ServOrbit, Kener se instala desde el Marketplace de tu área de cliente: elige la dirección — un subdominio de uno de tus dominios o el subdominio gratuito del VPS, con HTTPS incluido — y haz clic en Instalar. El script despliega Kener y Redis, genera la clave secreta, ajusta la dirección pública y configura nginx. Solo queda abrir /account/signin para crear la cuenta de administrador y añadir tus sondas.

Tu página de estado, en tu VPS

Un VPS de ServOrbit Ubuntu 24.04 con 1 GB de RAM basta para Kener. Instalación en un clic desde el Marketplace, HTTPS en tu dominio o en el subdominio gratuito del VPS, clave secreta generada para ti.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva