Cómo instalar Kuma – Alternativa al robot de tiempo de actividad autogestionado en Ubuntu 20.04

Uptime-Kuma es una herramienta de monitorización de código abierto como «Uptime Robot» escrita en Nodejs. Es una herramienta de monitorización auto-alojada con un bonito panel de control y soporta múltiples métodos de notificación. Uptime-Kuma monitorizará el tiempo de actividad de los hosts o servidores a través de los protocolos HTTP(s), TCP y Ping. Si los hosts no pueden ser rachados a través de estos protocolos en esos intervalos de tiempo, el Uptime-Kuma enviará notificaciones a través de Webhooks, Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), etc.

En esta guía, aprenderás a instalar Uptime-Kuma en un servidor Ubuntu y a utilizar el servidor web Apache como proxy inverso con un certificado SSL gratuito de Let’s Encrypt delante. Durante la instalación, también aprenderás sobre la instalación de nodejs a través de nvm (node version manager).

Requisitos previos

  • Un servidor Ubuntu 20.04.
  • Un usuario con privilegios de root. Utilizarás este usuario para instalar nuevos paquetes y modificar la configuración del sistema.

Añadir un nuevo usuario

En primer lugar, añadirás un nuevo usuario al sistema Ubuntu. Por razones de seguridad, la aplicación Uptime-Kuma se ejecutará como un usuario no root.

1. Añade un nuevo usuario ejecutando el siguiente comando. Para este ejemplo, utilizaremos el nombre de usuario«johndoe«. asegúrate de cambiar el nombre de usuario por el tuyo propio.

useradd -m -s /bin/bash johndoe

Opciones que debes conocer:

  • -m = crear automáticamente el directorio principal para el nombre de usuario, que estará disponible en el directorio «/home».
  • -s = define la ruta del shell para el usuario, la mayoría de Linux tiene el shell `/bin/bash.

2. Después, ejecuta el siguiente comando para establecer la contraseña del usuario «johndoe».

passwd johndoe

Ahora escribe una nueva contraseña fuerte y repítelo, luego pulsa«Enter» para confirmar.

3. A continuación, añade el usuario «johndoe» al grupo «sudo» mediante el siguiente comando.

usermod -aG sudo johndoe

Al añadir usuarios al grupo «sudo«, permitirá a los usuarios ejecutar el comando «sudo su » y obtener los privilegios de root.

Instalar el NVM (Gestor de Versiones de Nodo)

NVM o Node Version Manager es una herramienta de línea de comandos para instalar varias versiones de nodejs en un sistema. Esta herramienta te permite instalar una versión específica de nodejs para tus aplicaciones, lo que hace que tu entorno de desarrollo y despliegue sea flexible.

Para esta fase, instalarás el nvm bajo el usuario no root «johndoe».

1. Desde tu shell raíz, inicia sesión con el usuario «johndoe» utilizando el siguiente comando.

su - johndoe

2. Descarga y ejecuta el script de instalación del nvm como se indica a continuación.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

Instalar el gestor de versiones de Nodejs o NVM

3. Después de tener éxito, recarga el entorno bash utilizando el siguiente comando.

source ~/.bashrc

4. Ahora verifica la instalación de «nvm» ejecutando el siguiente comando.

command -v nvm

Si la instalación es correcta, verás el resultado «nvm«. De lo contrario, no verás nada o un resultado en blanco.

Ahora ejecuta el comando «nvm» como se indica a continuación.

nvm --help

Y verás la página de ayuda manual del comando nvm.

Node Version Manager (v0.38.0)

Note: <version> refers to any version-like string nvm understands. This includes:
  - full or partial version numbers, starting with an optional "v" (0.10, v0.1.2, v1)
  - default (built-in) aliases: node, stable, unstable, iojs, system
  - custom aliases you define with `nvm alias foo`

 Any options that produce colorized output should respect the `--no-colors` option.

Usage:
  nvm --help                                  Show this message
    --no-colors                               Suppress colored output

.....

Note:
  to remove, delete, or uninstall nvm - just remove the `$NVM_DIR` folder (usually `~/.nvm`)

Instalar la versión LTS de Nodejs

Para instalar la aplicación uptime-Kuma, necesitas instalar nodejs >= 14, git, y pm2. Para este punto, instalarás la última versión de nodejs LTS utilizando el comando nvm.

1. Ejecuta el siguiente comando nvm para instalar la última versión de nodejs LTS.

nvm install --lts

Una vez que la instalación tenga éxito, verás una salida similar a la de abajo.

Instalación de Nodejs con NVM

La primera versión de nodejs que instales se convertirá en la versión por defecto en tu entorno de desarrollo.

2. Ahora ejecuta el siguiente comando para verificar la instalación de nodejs.

node --version
npm --version

Si la instalación tiene éxito, verás una salida similar a la de abajo.

# nodejs version
v14.17.4

# npm version
6.14.14

Descargar e instalar Uptime-Kuma

Llegados a este punto, estás preparado para instalar la aplicación Uptime-Kuma.

1. Clona el código fuente de Uptime-Kuma utilizando el comando git que aparece a continuación.

git clone https://github.com/louislam/uptime-kuma.git

2. Después, cambia el directorio de trabajo a«uptime-kuma/» y ejecuta el comando npm para instalar todos los paquetes necesarios para uptime-kuma.

cd uptime-kuma/
npm run setup

Y verás una salida similar a la de abajo.

Instalación de paquetes para Uptime-Kuma

Configurar Uptime-Kuma con pm2

¿Qué es pm2? Es un gestor de procesos nodejs que te ayudará a gestionar y mantener viva tu aplicación nodejs para siempre. pm2 tiene algunas características incorporadas que hacen que el despliegue de la aplicación nodejs sea fácil, te permite monitorizar el estado de tu aplicación, los logs, e incluso configurar el archivo de servicio para tu aplicación.

1. Instala el paquete pm2 utilizando el comando npm que aparece a continuación.

npm install pm2

2. Una vez completada la instalación, ejecuta el comando pm2 de abajo para iniciar la aplicación uptime-kuma.

pm2 start npm --name uptime-kuma -- run start-server -- --port=3001 --hostname=127.0.0.1

Y verás los mensajes de salida como se indica a continuación.

Iniciar Uptime-Kuma con el Gestor de Procesos pm2

Como se ve en la imagen, el nombre de la aplicación«uptime-kuma» se está ejecutando con el estado«online«.

3. Para comprobar el estado de tu aplicación en pm2, ejecuta los siguientes comandos

Comprueba el estado de la aplicación nodejs.

pm2 status

Comprobar el estado de la solicitud Uptime-Kuma

Comprueba los registros de la aplicación nodejs.

pm2 logs

Comprobar los registros de la aplicación pm2

Monitorización de la aplicación nodejs en tiempo real.

pm2 monit

Monitorización de aplicaciones en tiempo real pm2

4. A continuación, ejecuta el siguiente comando pm2 para generar el archivo de servicio de la aplicación uptime-kuma.

pm2 startup

Después, debes ejecutar el comando tal y como se ordena en la salida.

sudo env PATH=$PATH:/home/johndoe/.nvm/versions/node/v14.17.4/bin /home/johndoe/.nvm/versions/node/v14.17.4/lib/node_modules/pm2/bin/pm2 startup systemd -u johndoe --hp /home/johndoe

Configurar Uptime-Kuma como servicio Systemd

Asegúrate de utilizar el comando«sudo» e introduce la contraseña correcta para que tu usuario tenga privilegios de root.

Una vez completado el comando, verás la siguiente salida.

pm2 genera un archivo de servicio systemd para Uptime-Kuma

Como se ve en la captura de pantalla, el pm2 genera un servicio systemd basado en el usuario, para este ejemplo es«pm2-johndoe.service«.

Ahora ejecuta el siguiente comando para generar y guardar el estado de la aplicación uptime-kuma. Este comando es importante para que la aplicación uptime-kuma se ejecute siempre en segundo plano, incluso después del arranque del sistema.

pm2 save

5. Para verificar el servicio‘pm2-johndoe‘, ejecuta el siguiente comando.

sudo systemctl is-enabled pm2-johndoe

Verás la salida `enabled`, lo que significa que la aplicación uptime-kuma se ejecutará automáticamente tras el arranque del sistema.

Además, puedes intentar reiniciar el sistema y volver a entrar en el servidor, y luego comprobar el servicio uptime-kuma.

sudo systemctl status pm2-johndoe

Y deberías ver una salida similar a la de abajo.

? pm2-johndoe.service - PM2 process manager
     Loaded: loaded (/etc/systemd/system/pm2-johndoe.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-08-10 01:52:37 UTC; 3min 57s ago
       Docs: https://pm2.keymetrics.io/
   Main PID: 745 (PM2 v5.1.0: God)
      Tasks: 34 (limit: 2343)
     Memory: 120.4M
     CGroup: /system.slice/pm2-johndoe.service
             ??745 PM2 v5.1.0: God Daemon (/home/johndoe/.pm2)
             ??772 npm
             ??873 sh -c node server/server.js "--port=3001" "--hostname=127.0.0.1"
             ??874 node server/server.js --port=3001 --hostname=127.0.0.1

Aug 10 01:52:36 ubuntu64 pm2[633]: [PM2] Spawning PM2 daemon with pm2_home=/home/johndoe/.pm2
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] PM2 Successfully daemonized
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] Resurrecting
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] Restoring processes located in /home/johndoe/.pm2/dump.pm2
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] Process /home/johndoe/.nvm/versions/node/v14.17.4/bin/npm restored

El servicio «pm2-johndoe.service» está funcionando en el arranque del sistema.

Configurar Apache como proxy inverso

Para esta guía, vas a instalar y configurar el servidor web Apache como proxy inverso para la aplicación uptime-Kuma.

1. Ejecuta el siguiente comando para instalar los paquetes del servidor web Apache.

sudo apt install apache2

Escribe «y» y pulsa«Enter» para instalar el servidor web apache.

2. Después, habilita algunos módulos de apache con el siguiente comando.

sudo a2enmod ssl proxy proxy_ajp proxy_wstunnel proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html

3. A continuación, crea una nueva configuración de host virtual‘uptime-kuma.conf‘ utilizando el comando del editor nano que aparece a continuación.

sudo nano /etc/apache2/sites-available/uptime-kuma.conf

4. Pega la siguiente configuración en el shell de tu terminal y cambia el nombre de dominio «uptime.example.net» por tu dominio, por ejemplo«dominio.com«.

<VirtualHost *:80>
  ServerName uptime.example.net

  ProxyPass / http://localhost:3001/
  RewriteEngine on
  RewriteCond %{HTTP:Upgrade} websocket [NC]
  RewriteCond %{HTTP:Connection} upgrade [NC]
  RewriteRule ^/?(.*) "ws://localhost:3001/$1" [P,L]
</VirtualHost>

Pulsa«Ctrl+x» y escribe«Y» para guardar la configuración.

4. Ahora activa la configuración del host virtual de apache «uptime-kuma» utilizando el siguiente comando.

sudo a2ensite uptime-kuma

Después, ejecuta el siguiente comando para verificar la configuración de apache y asegúrate de que no tienes ningún error.

sudo apachectl configtest

5. Ahora aplica la nueva configuración reiniciando el servicio de apache mediante el siguiente comando.

sudo systemctl restart apache2

Configurar Apache como proxy inverso para uptime-kuma

Asegurar Uptime-kuma con SSL Letsencrypt

Para asegurar el acceso a Uptime-Kuma, vas a configurar el SSL de Letsencrypt para el servidor web apache.

1. En primer lugar, instala la herramienta certbot ejecutando el siguiente comando.

sudo apt install python3-certbot-apache

Escribe«y» y pulsa«Enter» para iniciar la instalación.

2. Una vez completada la instalación, genera el SSL letsencrypt utilizando el comando certbot como se indica a continuación.

sudo certbot --apache yourdomain.com

Escribe tu dirección de correo electrónico para registrarte en Letsencrypt y pulsa «Enter» para continuar. Letsencrypt enviará correos electrónicos a tu dirección de correo electrónico cada vez que tus certificados SSL caduquen.

```
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

Para las condiciones de servicio de Letsencrypt, escribe«A» para aceptarlas y pulsa«Enter» para continuar.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

Para compartir el correo electrónico con la EFF (Electronic Frontier Foundation), puedes escribir«Y» para el sí y«N» para el no. En este ejemplo, no compartiremos una dirección de correo electrónico con la EFF.

Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N

Ahora la herramienta certbot generará el SSL Letsencrypt para el nombre de dominio Uptime-Kuma. Además, añadirá algunas configuraciones adicionales para la configuración del host virtual de apache.

Se te pedirá que configures la redirección automática de HTTP a HTTPS. Escribe el número «2» para configurar la redirección automática de apache de HTTP a HTTPS y pulsa«Enter«.

```
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Una vez que el proceso de despliegue sea exitoso, verás una salida similar a la de abajo.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://uptime.example.net

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=uptime.example.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/uptime.example.net/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/uptime.example.net/privkey.pem
   Your cert will expire on 2021-10-10. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Verificar la instalación de Uptime-Kuma

1. Abre tu navegador web y escribe la URL de instalación de Uptime-Kuma en la barra de direcciones.

https://uptime.example.net/

Serás redirigido a la conexión segura HTTPS.

2. En la primera página, crea un nuevo usuario administrador para Uptime-kuma. Escribe tu usuario y contraseña de administrador, y haz clic en el botón«Crear«

Crear usuario administrador uptime-kuma

3. Después de eso, inicia sesión con tu nuevo usuario y contraseña, y luego haz clic en el botón «Iniciar sesión«.

página de inicio de sesión de uptime-kuma

Ahora verás el tablero de uptime-kuma.

4. Para añadir un nuevo host a monitorizar, haz clic en el botón «Añadir nuevo monitor«.

Monitor de adición al salpicadero de Uptime-kuma

5. Para este ejemplo, vas a monitorizar el sitio web, así que elige el«Tipo de Monitor» como«HTTP(s)«, escribe la dirección URL del sitio web, haz clic en«Configurar Notificación» para el soporte de notificaciones, y luego haz clic en el botón«Guardar» en la parte inferior de la página.

Añadir host para monitorizar uptime-kuma

6.Ahora serás redirigido al panel de control de uptime-Kuma y verás tu host en la página del panel de control.

Cuadro de mandos de Uptime-kuma

Abajo hay otro ejemplo después de añadir el nuevo tipo«TCP/IP» con puertos cerrados, y el resultado es«ENCONNREFUSED» o error de conexión porque el puerto está rechazado/cerrado.

Monitorización del cuadro de mandos de Uptime-kuma

Conclusión

Enhorabuena! has instalado con éxito la Uptime-Kuma con el servidor web Apache como proxy inverso y has asegurado la implementación de la Uptime-Kuma con SSL Letsencrypt. Para la siguiente fase, puedes añadir tus hosts y activar la notificación de cualquier incidencia de caída.

También te podría gustar...