Ricerca nel sito web

Come installare Kuma - Alternativa robot uptime self-hosted su Ubuntu 20.04


Su questa pagina

  1. Prerequisiti
  2. Aggiunta di un nuovo utente
  3. Installa NVM (Node Version Manager)
  4. Installa la versione LTS di Nodejs
  5. Scarica e installa Uptime-Kuma
  6. Impostazione di Uptime-Kuma con pm2
  7. Imposta Apache come proxy inverso
  8. Protezione di Uptime-kuma con SSL Letsencrypt
  9. Verifica l'installazione di Uptime-Kuma
  10. Conclusione

Uptime-Kuma è uno strumento di monitoraggio open source come \Uptime Robot\ scritto in Nodejs. È uno strumento di monitoraggio self-hosted con una bellissima dashboard e supporta più metodi di notifica. Uptime-Kuma monitorerà il tempo di attività di host o server tramite protocollo HTTP(s), TCP e Ping. Se gli host non possono essere trasmessi attraverso questi protocolli in tali intervalli di tempo, gli host di uptime invieranno notifiche tramite Webhooks, Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), ecc.

In questa guida imparerai come installare Uptime-Kuma su un server Ubuntu e utilizzare il server Web Apache come proxy inverso con un certificato SSL Lets Encrypt gratuito davanti. Durante l'installazione, imparerai anche l'installazione di nodejs tramite nvm (node version manager).

Prerequisiti

  • Un server Ubuntu 20.04.
  • Un utente con privilegi di root. Utilizzerai questo utente per installare nuovi pacchetti e modificare le impostazioni di sistema.

Aggiunta di un nuovo utente

Per prima cosa, aggiungerai un nuovo utente al sistema Ubuntu. Per motivi di sicurezza, l'applicazione Uptime-Kuma verrà eseguita come utente non root.

1. Aggiungi un nuovo utente eseguendo il comando seguente. Per questo esempio, useremo il nome utente \johndoe\. assicurati di cambiare il nome utente con il tuo.

useradd -m -s /bin/bash johndoe

Opzioni che devi conoscere:

  • -m=crea automaticamente la directory home per il nome utente, che sarà disponibile nella directory /home.
  • -s=definisce il percorso della shell per l'utente, la maggior parte di Linux ha la shell \\/bin/bash.

2. Successivamente, eseguire il seguente comando per impostare la password per l'utente \johndoe\.

passwd johndoe

Ora digita una nuova password complessa e ripeti, quindi premi \Invio\ per confermare.

3. Successivamente, aggiungi l'utente \johndoe\ al gruppo \sudo\ utilizzando il comando seguente.

usermod -aG sudo johndoe

Aggiungendo utenti al gruppo \sudo\, consentirà agli utenti di eseguire il comando \sudo su\ e ottenere i privilegi di root.

Installa NVM (Node Version Manager)

NVM o Node Version Manager è uno strumento da riga di comando per l'installazione di più versioni di nodejs su un sistema. Questo strumento ti consente di installare una versione specifica di nodejs per le tue applicazioni, rende flessibile il tuo ambiente di sviluppo e distribuzione.

Per questa fase, installerai nvm sotto l'utente non root \johndoe\.

1. Dalla tua shell di root, accedi all'utente \johndoe\ usando il seguente comando.

su - johndoe

2. Scaricare ed eseguire lo script di installazione nvm come segue.

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

3. Dopo aver avuto successo, ricaricare l'ambiente bash utilizzando il comando seguente.

source ~/.bashrc

4. Ora verifica l'installazione di \nvm\ eseguendo il comando seguente.

command -v nvm

Se l'installazione è andata a buon fine, vedrai il risultato \nvm\. Altrimenti, non vedrai nulla o un risultato vuoto.

Ora esegui il comando nvm come di seguito.

nvm --help

E vedrai la pagina della guida manuale 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`)

Installa la versione LTS di Nodejs

Per installare l'applicazione uptime-Kuma, è necessario installare nodejs >= 14, git e pm2. A questo punto, installerai l'ultima versione di nodejs LTS utilizzando il comando nvm.

1. Eseguire il comando nvm di seguito per installare l'ultima versione di nodejs LTS.

nvm install --lts

Una volta completata l'installazione, vedrai un output simile a quello di seguito.

La prima versione di nodejs che installi diventa la versione predefinita nel tuo ambiente di sviluppo.

2. Ora esegui il seguente comando per verificare l'installazione di nodejs.

node --version
npm --version

Se l'installazione ha esito positivo, vedrai un output simile a quello riportato di seguito.

# nodejs version
v14.17.4

# npm version
6.14.14

Scarica e installa Uptime-Kuma

A questo punto, sei pronto per installare l'applicazione Uptime-Kuma.

1. Clona il codice sorgente uptime-Kuma usando il comando git qui sotto.

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

2. Successivamente, modifica la directory di lavoro in \uptime-kuma/\ ed esegui il comando npm per installare tutti i pacchetti necessari per uptime-kuma.

cd uptime-kuma/
npm run setup

E vedrai un output simile come di seguito.

Configurazione di Uptime-Kuma con pm2

Cos'è pm2? È un gestore di processi nodejs che ti aiuterà a gestire e mantenere in vita la tua applicazione nodejs per sempre. pm2 ha alcune funzionalità integrate che semplificano la distribuzione dell'applicazione nodejs, ti consente di monitorare lo stato dell'applicazione, i registri e persino l'impostazione del file di servizio per la tua applicazione.

1. Installare il pacchetto pm2 utilizzando il comando npm di seguito.

npm install pm2

2. Una volta completata l'installazione, eseguire il comando pm2 di seguito per avviare l'applicazione uptime-kuma.

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

E vedrai i messaggi di output come di seguito.

Come si vede nell'immagine, il nome dell'applicazione \uptime-kuma\ è in esecuzione con lo stato \online\.

3. Per verificare lo stato della tua applicazione su pm2, esegui i seguenti comandi di seguito.

Controlla lo stato dell'applicazione nodejs.

pm2 status

Controlla i log dell'applicazione nodejs.

pm2 logs

Monitoraggio dell'applicazione nodejs in tempo reale.

pm2 monit

4. Successivamente, eseguire il seguente comando pm2 per generare il file di servizio per l'applicazione uptime-kuma.

pm2 startup

Successivamente, dovresti eseguire il comando come ordinato sull'output.

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

Assicurati di utilizzare il comando \sudo\ e inserisci la password corretta per il tuo utente per ottenere i privilegi di root.

Una volta completato il comando, vedrai il seguente output.

Come si vede nello screenshot, il pm2 genera un servizio systemd basato sull'utente, per questo esempio è \pm2-johndoe.service\.

Ora esegui il seguente comando per generare e salvare lo stato dell'applicazione uptime-kuma. Questo comando è importante per fare in modo che l'applicazione uptime-kuma sia sempre in esecuzione in background, anche dopo l'avvio del sistema.

pm2 save

5. Per verificare il servizio pm2-johndoe, eseguire il comando seguente.

sudo systemctl is-enabled pm2-johndoe

Vedrai l'output \\enabled\\, il che significa che l'applicazione uptime-kuma verrà eseguita automaticamente dopo l'avvio del sistema.

Inoltre, puoi provare a riavviare il sistema e accedere nuovamente al server, quindi controllare il servizio uptime-kuma.

sudo systemctl status pm2-johndoe

E dovresti vedere un output simile come sotto.

? 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

Il \pm2-johndoe.service\ è attivo e funzionante all'avvio del sistema.

Imposta Apache come proxy inverso

Per questa guida, installerai e configurerai il server Web Apache come proxy inverso per l'applicazione uptime-Kuma.

1. Eseguire il seguente comando per installare i pacchetti del server Web Apache.

sudo apt install apache2

Digita \y\ e premi \Invio\ per installare il server web apache.

2. Successivamente, abilita alcuni moduli Apache usando il comando seguente.

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

3. Successivamente, crea una nuova configurazione di host virtuale uptime-kuma.conf utilizzando il comando nano editor di seguito.

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

Incolla la seguente configurazione nella shell del terminale e modifica il nome di dominio \uptime.example.net\ con il tuo dominio, ad esempio \domain.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>

Premere \Ctrl+x\ e digitare \Y\ per salvare la configurazione.

4. Ora attiva la configurazione dell'host virtuale apache \uptime-kuma\ utilizzando il comando seguente.

sudo a2ensite uptime-kuma

Successivamente, esegui il seguente comando per verificare la configurazione di Apache e assicurati di non avere alcun errore.

sudo apachectl configtest

5. Ora applica la nuova configurazione riavviando il servizio apache utilizzando il comando seguente.

sudo systemctl restart apache2

Proteggere Uptime-kuma con SSL Letsencrypt

Per proteggere l'accesso Uptime-Kuma, configurerai l'SSL da Letsencrypt per il server Web Apache.

1. Prima di tutto, installa lo strumento certbot eseguendo il seguente comando.

sudo apt install python3-certbot-apache

Digita \y\ e premi \Invio\ per avviare l'installazione.

2. Al termine dell'installazione, generare SSL letsencrypt utilizzando il comando certbot come di seguito.

sudo certbot --apache yourdomain.com

Digita il tuo indirizzo email per registrarti a Letsencrypt e premi \Invio\ per continuare. Letsencrypt invierà e-mail al tuo indirizzo e-mail ogni volta che i tuoi certificati SSL scadono.

```
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):

Per i TOS (Termini di servizio) di Letsencrypt, digitare \A\ per accettare e premere \Invio\ per continuare.

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

Per la condivisione di email con EFF (Electronic Frontier Foundation), puoi digitare \Y\ per sì e \N\ per no. Per questo esempio, non condivideremo un indirizzo email 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

Ora lo strumento certbot genererà SSL Letsencrypt per il nome di dominio Uptime-Kuma. Inoltre, aggiungerà alcune configurazioni aggiuntive per la configurazione dell'host virtuale Apache.

Ti verrà chiesto di impostare il reindirizzamento automatico da HTTP a HTTPS. Digita il numero \2\ per impostare il reindirizzamento automatico di Apache da HTTP a HTTPS e premi \Invio\.

```
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 volta che il processo di distribuzione è andato a buon fine, vedrai un output simile al seguente.

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

Verificare l'installazione di Uptime-Kuma

1. Aprire il browser Web e digitare l'installazione dell'URL Uptime-Kuma nella barra degli indirizzi.

Verrai reindirizzato alla connessione sicura HTTPS.

2. Nella prima pagina, crea un nuovo utente amministratore per Uptime-kuma. Digita il tuo utente amministratore e la password, quindi fai clic sul pulsante \Crea\.

3. Successivamente, accedi con il tuo nuovo nome utente e password, quindi fai clic sul pulsante \Accedi\.

Ora vedrai la dashboard uptime-kuma.

4. Per aggiungere un nuovo host da monitorare, fare clic sul pulsante \Aggiungi nuovo monitor\.

5. Per questo esempio, monitorerai il sito Web, quindi scegli \Tipo di monitor\ come \HTTP(s)\, digita l'indirizzo URL del sito Web, fai clic su \Imposta notifica\ per la notifica supporto, quindi fare clic sul pulsante \Salva\ nella parte inferiore della pagina.

6. Ora verrai reindirizzato alla dashboard uptime-Kuma e vedrai il tuo host nella pagina della dashboard.

Di seguito è riportato un altro esempio dopo l'aggiunta del nuovo tipo \TCP/IP\ con porte chiuse e il risultato è \ENCONNREFUSED\ o errore di connessione perché la porta è stata rifiutata/chiusa.

Conclusione

Congratulazioni! hai installato correttamente Uptime-Kuma con il server Web Apache come proxy inverso e hai protetto l'implementazione di Uptime-Kuma con SSL Letsencrypt. Per la fase successiva, puoi aggiungere i tuoi host e attivare la notifica per qualsiasi incidente di down.