Cómo instalar Kuma РAlternativa de robot de tiempo de actividad autohospedado en Ubuntu 20.04

Instale el administrador de versiones de Nodejs o NVM

Uptime-Kuma es una herramienta de monitoreo de c√≥digo abierto como ¬ęUptime Robot¬Ľ escrita en Nodejs. Es una herramienta de monitoreo autohospedada con un hermoso panel elegante y admite m√ļltiples m√©todos de notificaci√≥n. Uptime-Kuma monitorear√° el tiempo de actividad de los hosts o servidores a trav√©s del protocolo HTTP(s), TCP y Ping. Si no se puede acceder a los hosts a trav√©s de estos protocolos en tales intervalos de tiempo, los hosts de tiempo de actividad enviar√°n notificaciones a trav√©s de Webhooks, Telegram, Discord, Gotify, Slack, Pushover, correo electr√≥nico (SMTP), etc.

En esta gu√≠a, aprender√° c√≥mo instalar Uptime-Kuma en un servidor Ubuntu y usar el servidor web Apache como un proxy inverso con un certificado Let’s Encrypt SSL gratuito delante. Durante la instalaci√≥n, tambi√©n aprender√° sobre la instalaci√≥n de nodejs a trav√©s de nvm (administrador de versiones de nodos).

requisitos previos

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

Agregar nuevo usuario

Lo primero, agregará un nuevo usuario al sistema Ubuntu. Por razones de seguridad, la aplicación Uptime-Kuma se ejecutará como usuario no root.

1. Agregue un nuevo usuario ejecutando el siguiente comando. Para este ejemplo, usaremos el nombre de usuario ¬ęjohndoe¬ę. aseg√ļrese de cambiar el nombre de usuario por el suyo propio.

useradd -m -s /bin/bash johndoe

Opciones que debes conocer:

  • -metro = crea autom√°ticamente el directorio de inicio 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 de eso, ejecute el siguiente comando para configurar la contrase√Īa para el usuario ¬ęjohndoe¬Ľ.

passwd johndoe

Ahora escriba una nueva contrase√Īa segura y repita, luego presione ¬ęIngresar¬Ľ para confirmar.

3. A continuaci√≥n, agregue el usuario ¬ęjohndoe¬Ľ al grupo ¬ęsudo¬Ľ usando el siguiente comando.

usermod -aG sudo johndoe

Al agregar usuarios a la ¬ęsudo¬Ľ grupo, permitir√° a los usuarios ejecutar el ¬ęsudo su¬Ľ comando y obtener los privilegios de root.

Instalar NVM (Administrador de versiones de nodos)

NVM o Node Version Manager es una herramienta de l√≠nea de comandos para instalar m√ļltiples versiones de nodejs en un sistema. Esta herramienta le permite instalar una versi√≥n espec√≠fica de nodejs para sus aplicaciones, hace que su entorno de desarrollo e implementaci√≥n sea flexible.

Para esta fase, instalar√° el nvm bajo el usuario no root ¬ęjohndoe¬Ľ.

1. Desde su shell ra√≠z, inicie sesi√≥n en el usuario ¬ęjohndoe¬Ľ usando el siguiente comando.

su - johndoe

2. Descargue y ejecute el script de instalación de nvm de la siguiente manera.

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

Instale el administrador de versiones de Nodejs o NVM

3. Después de tener éxito, vuelva a cargar el entorno bash usando el siguiente comando.

source ~/.bashrc

4. Ahora verifique el ¬ęnvm¬ęinstalaci√≥n ejecutando el siguiente comando.

command -v nvm

Si su instalaci√≥n es exitosa, ver√° el resultado ¬ęnvm¬ę. De lo contrario, no ver√° nada o un resultado en blanco.

Ahora ejecute el comando nvm como se muestra a continuación.

nvm --help

Y ver√° 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, debe instalar el nodos js >= 14, gity pm2. Para este punto, instalar√° la √ļltima versi√≥n de nodejs LTS usando el comando nvm.

1. Ejecute el siguiente comando nvm para instalar la √ļltima versi√≥n de nodejs LTS.

nvm install --lts

Una vez que la instalación se realice correctamente, verá un resultado similar al que se muestra a continuación.

Instalación de Nodejs con NVM

La primera versión de nodejs que instale se convierte en la versión predeterminada en su entorno de desarrollo.

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

node --version
npm --version

Si su instalación tiene éxito, verá un resultado similar al que se muestra a continuación.

# nodejs version
v14.17.4

# npm version
6.14.14


Descargar e instalar Uptime-Kuma

En este punto, está listo para instalar la aplicación Uptime-Kuma.

1. Clone el código fuente de uptime-Kuma usando el siguiente comando git.

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

2. Despu√©s de eso, cambie el directorio de trabajo a ¬ęuptime-kuma/¬Ľ y ejecute el comando npm para instalar todos los paquetes necesarios para uptime-kuma.

cd uptime-kuma/
npm run setup

Y ver√° una salida similar a la siguiente.

Instalación de paquetes para Uptime-Kuma

Configuración de Uptime-Kuma con pm2

¬ŅQu√© es pm2? Es un administrador de procesos de nodejs que lo ayudar√° a administrar y mantener viva su aplicaci√≥n nodejs para siempre. pm2 tiene algunas caracter√≠sticas integradas que facilitan la implementaci√≥n de la aplicaci√≥n nodejs, le permite monitorear el estado de su aplicaci√≥n, los registros e incluso configurar el archivo de servicio para su aplicaci√≥n.

1. Instale el paquete pm2 usando el comando npm a continuación.

npm install pm2

2. Una vez completada la instalación, ejecute el siguiente comando pm2 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á los mensajes de salida como se muestra a continuación.

Inicie Uptime-Kuma con pm2 Process Manager

Como se ve en la imagen, el nombre de la aplicaci√≥n ¬ęuptime-kuma¬Ľ se est√° ejecutando con el estado ¬ęen l√≠nea¬ę.

3. Para verificar el estado de su aplicación en pm2, ejecute los siguientes comandos a continuación.

Verifique el estado de la aplicación nodejs.

pm2 status

Verifique el estado de la aplicación Uptime-Kuma

Verifique los registros de la aplicación nodejs.

pm2 logs

Comprobar los registros de la aplicación pm2

Monitoreo de aplicaciones nodejs en tiempo real.

pm2 monit

Monitoreo de aplicaciones en tiempo real pm2

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

pm2 startup

Despu√©s de eso, debe ejecutar el comando seg√ļn lo ordenado 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 un servicio de Systemd

Aseg√ļrese de usar el ¬ęsudo¬Ľ comando e ingrese la contrase√Īa correcta para que su usuario obtenga los privilegios de root.

Una vez que se complete el comando, ver√° el siguiente resultado.

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.servicio¬ę.

Ahora ejecute 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 siempre se ejecute en segundo plano, incluso después del arranque del sistema.

pm2 save

5. Para verificar el servicio ‘pm2-johndoe’ejecute el siguiente comando.

sudo systemctl is-enabled pm2-johndoe

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

Además, puede intentar reiniciar su sistema e iniciar sesión nuevamente en el servidor, luego verifique el servicio uptime-kuma.

sudo systemctl status pm2-johndoe

Y debería ver una salida similar a la siguiente.

? 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


Los ¬ępm2-johndoe.servicio¬Ľ est√° en funcionamiento en el arranque del sistema.

Configurar Apache como un proxy inverso

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

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

sudo apt install apache2

Escribe ¬ęy¬Ľ y presione ¬ęIngresar¬Ľ para instalar el servidor web apache.

2. Después de eso, habilite algunos módulos de apache usando 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, cree una nueva configuraci√≥n de host virtual ‘uptime-kuma.conf‘ usando el comando del editor nano a continuaci√≥n.

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

Pegue la siguiente configuraci√≥n en su shell de terminal y cambie el nombre de dominio ¬ęuptime.ejemplo.net¬Ľ con su dominio como ¬ę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>


Prensa ¬ęControl+x¬Ľ y escriba ¬ęY¬Ľ para guardar la configuraci√≥n.

4. Ahora active la configuraci√≥n de host virtual de apache ¬ęuptime-kuma¬Ľ usando el siguiente comando.

sudo a2ensite uptime-kuma

Despu√©s de eso, ejecute el siguiente comando para verificar la configuraci√≥n de Apache y aseg√ļrese de que no tenga ning√ļn error.

sudo apachectl configtest

5. Ahora aplique la nueva configuración reiniciando el servicio de apache usando el siguiente comando.

sudo systemctl restart apache2

Configure Apache como proxy inverso para uptime-kuma

Protección de Uptime-kuma con SSL Letsencrypt

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

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

sudo apt install python3-certbot-apache

Escribe ¬ęy¬Ľ y presione ¬ęIngresar¬Ľ para iniciar la instalaci√≥n.

2. Una vez completada la instalación, genere el SSL letsencrypt usando el comando certbot como se muestra a continuación.

sudo certbot --apache yourdomain.com

Escriba su direcci√≥n de correo electr√≥nico para registrarse en Letsencrypt y presione ¬ęIngresar¬Ľ para continuar. Letsencrypt enviar√° correos electr√≥nicos a su direcci√≥n de correo electr√≥nico cada vez que caduquen sus certificados SSL.

```
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 los TOS de Letsencrypt (T√©rminos de servicio), escriba ¬ęA¬ęaceptar y presionar¬ĽIngresar¬Ľ 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 EFF (Electronic Frontier Foundation), puede escribir ¬ęY¬ępor si y¬Ľnorte¬Ľ para no. Para este ejemplo, no compartiremos una direcci√≥n de correo electr√≥nico con 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á SSL Letsencrypt para el nombre de dominio Uptime-Kuma. Además, agregará algunas configuraciones adicionales para la configuración del host virtual de apache.

Se le pedir√° que configure la redirecci√≥n autom√°tica de HTTP a HTTPS. Teclea un n√ļmero ¬ę2¬Ľ para configurar la redirecci√≥n autom√°tica de apache de HTTP a HTTPS y presione ¬ęIngresar¬ę.

```
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 implementación sea exitoso, verá un resultado similar al siguiente.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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.


Verifique la instalación de Uptime-Kuma

1. Abra su navegador web y escriba la instalación URL de Uptime-Kuma en la barra de direcciones.

https://uptime.example.net/

Será redirigido a la conexión segura HTTPS.

2. En la primera p√°gina, cree un nuevo usuario administrador para Uptime-kuma. Escriba su usuario y contrase√Īa de administrador, luego haga clic en ¬ęCrear¬Ľ bot√≥n

Crear usuario administrador uptime-kuma

3. Despu√©s de eso, inicie sesi√≥n con su nuevo nombre de usuario y contrase√Īa, luego haga clic en ¬ęAcceso¬Ľ bot√≥n.

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

Ahora ver√° el panel de uptime-kuma.

4. Para agregar un nuevo host para monitorear, haga clic en el bot√≥n ¬ęAgregar nuevo monitor¬ę.

Uptime-kuma panel agregar monitor

5. Para este ejemplo, estar√° monitoreando el sitio web, as√≠ que elija ¬ęTipo de monitor¬Ľ como ¬ęHTTP(s)¬ę, escriba la direcci√≥n URL del sitio web, haga clic en ¬ęNotificaci√≥n de configuraci√≥n¬Ľ para soporte de notificaciones, luego haga clic en el bot√≥n ¬ęAhorrar¬†¬Ľ en la parte inferior de la p√°gina.

Agregar host para monitorear el tiempo de actividad-kuma

6. Ahora ser√° redirigido al panel de tiempo de actividad-Kuma y ver√° su host en la p√°gina del panel.

Panel de tiempo de actividad-kuma

A continuaci√≥n se muestra otro ejemplo despu√©s de agregar el nuevo tipo ¬ęTCP/IP¬Ľ con puertos cerrados, y el resultado es ¬ęENCONTRADO¬Ľ o error de conexi√≥n porque el puerto es rechazado/cerrado.

Supervisión del panel Uptime-kuma

Conclusión

¡Felicidades! Ha instalado correctamente Uptime-Kuma con el servidor web Apache como proxy inverso y ha asegurado la implementación de Uptime-Kuma con SSL Letsencrypt. Para la siguiente fase, puede agregar sus hosts y activar la notificación para cualquier incidente caído.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *