Uptime-Kuma è uno strumento di monitoraggio open source come "Uptime Robot" scritto in Nodejs. È uno strumento di monitoraggio self-hosted con una dashboard fantastica e supporta più metodi di notifica. Uptime-Kuma monitorerà il tempo di attività di host o server tramite il protocollo HTTP(s), TCP e Ping. Se gli host non possono utilizzare questi protocolli in tali intervalli di tempo, gli host di uptime invieranno notifiche tramite Webhook, 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 Let's Encrypt gratuito di fronte ad esso. 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, utilizzeremo 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, esegui il comando seguente 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 a "sudo " gruppo, consentirà agli utenti di eseguire il "sudo su" comando e ottieni 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 il nvm sotto l'utente non root "johndoe".
1. Dalla shell di root, accedi all'utente "johndoe" usando il seguente comando.
su - johndoe
2. Scaricare ed eseguire lo script di installazione di nvm come segue.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
3. Al termine, ricarica l'ambiente bash utilizzando il comando seguente.
source ~/.bashrc
4. Ora verifica "nvm " installazione eseguendo il comando seguente.
command -v nvm
Se l'installazione ha esito positivo, vedrai il risultato "nvm ". In caso contrario, 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, devi installare nodejs>=14 , git e pm2 . A questo punto, installerai l'ultima versione di nodejs LTS usando il comando nvm.
1. Esegui 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 come di seguito.
La prima versione di nodejs che installi diventa la versione predefinita nel tuo ambiente di sviluppo.
2. Ora esegui il comando seguente per verificare l'installazione di nodejs.
node --version
npm --version
Se l'installazione ha esito positivo, vedrai un output simile a quello 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 di seguito.
git clone https://github.com/louislam/uptime-kuma.git
2. Successivamente, cambia 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 process manager di nodejs che ti aiuterà a gestire e mantenere viva 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 di impostare il file di servizio per la tua applicazione.
1. Installa 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.
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. Quindi, esegui il seguente comando pm2 per generare il file di servizio per l'applicazione uptime-kuma.
pm2 startup
Dopodiché, dovresti eseguire il comando come ordinato nell'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 "sudo " comando 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, pm2 genera un servizio systemd basato sull'utente, per questo esempio è "pm2-johndoe.service ".
Ora esegui il comando seguente 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' , esegui il comando seguente.
sudo systemctl is-enabled pm2-johndoe
Vedrai l'output `abilitato `, 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 di seguito.
? 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.
Configura 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 comando seguente 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. Quindi, crea una nuova configurazione di host virtuale 'uptime-kuma.conf ' utilizzando il comando dell'editor nano riportato di seguito.
sudo nano /etc/apache2/sites-available/uptime-kuma.conf
Incolla la seguente configurazione nella shell del tuo terminale e cambia il nome di dominio "uptime.example.net " con il tuo dominio come "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>
Premi "Ctrl+x " e digita "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 assicurarti 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
Sicurezza Uptime-kuma con SSL Letsencrypt
Per proteggere l'accesso Uptime-Kuma, configurerai SSL da Letsencrypt per il server web apache.
1. Prima di tutto, installa lo strumento certbot eseguendo il comando seguente.
sudo apt install python3-certbot-apache
Digita "y " e premi "Invio " per avviare l'installazione.
2. Al termine dell'installazione, generare il file SSL Letencrypt utilizzando il comando certbot come indicato 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): [email protected]
Per Letsencrypt TOS (Termini di servizio), digita "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 e-mail 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 di 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 premere "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 è riuscito, vedrai un output simile come di seguito.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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.
Verifica installazione Uptime-Kuma
1. Apri il tuo browser web e digita l'URL di installazione di Uptime-Kuma nella barra degli indirizzi.
https://uptime.example.net/
Verrai reindirizzato alla connessione protetta HTTPS.
2. Nella prima pagina, crea un nuovo utente amministratore per Uptime-kuma. Digita l'utente amministratore e la password, quindi fai clic su "Crea pulsante "
3. Successivamente, accedi con il tuo nuovo nome utente e password, quindi fai clic su "Accedi pulsante ".
Ora vedrai la dashboard uptime-kuma.
4. Per aggiungere un nuovo host da monitorare, fai clic sul pulsante "Aggiungi nuovo monitor ".
5. Per questo esempio, monitorerai il sito web, quindi scegli "Tipo di monitor " come "HTTP/i ", digita l'indirizzo URL del sito web, fai clic su "Notifica di configurazione " per il supporto delle notifiche, quindi fai clic su "Salva pulsante " in fondo alla 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 aver aggiunto il 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 con successo il server Web Uptime-Kuma con Apache come proxy inverso e hai protetto la distribuzione Uptime-Kuma con SSL Letsencrypt. Per la fase successiva, puoi aggiungere i tuoi host e attivare la notifica per qualsiasi incidente di down.