Uptime Kuma : un outil de MONITORING moderne auto-hébergé

Uptime Kuma : un outil de MONITORING moderne auto-hébergé

Uptime Kuma, c'est quoi?

Uptime Kuma est un outil de monitoring auto-hébergé qui vous permet de surveiller la disponibilité et les performances de vos services en ligne. Il propose une interface moderne qui facilite la configuration des vérifications de disponibilité, du suivi des temps de réponse et de l'envoi d'alertes en cas de problèmes.

Panneau de contrôle

Uptime Kuma peut être très utile lorsqu'il s'agit de mettre en ligne une Page d'État (ou "Status Page"), permettant à n'importe qui d'obtenir une vue d'ensemble des interruptions et du fonctionnement des services. Cette fonctionnalité offre de la transparence et permet une meilleure communication concernant l'opérabilité de vos applications auprès des utilisateurs.

Exemple de page d'état - status.skwal.net

Installation de Uptime Kuma sous Ubuntu 22.04

Uptime Kuma a l'avantage de pouvoir être installé sur n'importe quelle système grâce a son approche conteneurisé avec Docker. En revanche, dans ce guide je vais vous guider a travers l'installation directe de Uptime Kuma, sans utiliser Docker.

Pour installer Uptime Kuma avec Docker, vous pouvez suivre le guide de la documentation officielle.

Avertissement

En suivant ce guide, il est important que vous soyez connecté a votre serveur en tant qu'utilisateur et non en tant qu'administrateur. Aussi, n'utilisez pas sudo si ce n'est pas spécifié directement dans la commande.

Etape 1 - Installation de NodeJS

Si NodeJS n'est pas encore installé sur votre système, vous pouvez le faire avec les commandes suivantes :

curl -s https://deb.nodesource.com/setup_18.x | sudo bash
sudo apt install -y nodejs

Je vous recommande également de mettre a jour NPM, le gestionnaire de paquets de NodeJS.

sudo npm install npm -g

Etape 2 - Clonage du dépôt de Uptime Kuma

Une fois NodeJS installé et NPM à jour, vous pouvez commencer la mise en place de Uptime Kuma. Pour cloner le dépôt depuis GitHub, vous pouvez faire comme ceci :

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

Etape 3 - Installation de PM2 et des dépendances

PM2 est un gestionnaire de processus pour les applications NodeJS, adéquat pour un usage en production. L'installation de PM2 est simple et rapide.

sudo npm install pm2 -g && pm2 install pm2-logrotate

La dernière étape avant la configuration de Uptime Kuma est d'installer quelques dépendances.

npm run setup

Etape 4 - Lancement de Uptime Kuma

Par défaut, le serveur Uptime Kuma écoute sur le port 3001 de votre adresse IP publique, (ou de votre adresse IP locale si votre serveur est derrière NAT). Cependant, Uptime Kuma ne supporte pas HTTPS nativement. C'est pourquoi, exposer votre instance directement sur le réseau est une TRÈS TRÈS mauvaise idée. D'autant plus que vous devrez vous connecter à un compte administrateur pour la configurer, le mot de passe serait transmis sans chiffrement et donc visible par n'importe qui.

Je vous recommande donc de faire écouter le serveur Uptime Kuma sur localhost seulement, et de configurer un Reverse Proxy tel que Nginx ou Apache avec HTTPS. Je vous montrerai un exemple de configuration avec Nginx a la fin de ce guide.

Voici comment lancer le serveur Uptime Kuma localement.

Les droits d'administrateur sont nécessaires pour écouter sur un port inférieur a 1024, prenez cela en compte si vous voulez lancer Uptime Kuma sur le port 80. Les commandes qui seront montrées dans la suite de ce guide ne sont pas adaptées si Uptime Kuma a besoin des droits d'administrateur.
# Les -- avant --port sont tout a fait normal, 
# ils sont la pour séparer les arguments de pm2 et ceux de Uptime Kuma.

# Ecouter sur localhost (port 3001 HTTP)
pm2 start server/server.js --name uptime-kuma -- --port=3001 --host=127.0.0.1

On peut voir qu'une instance de Uptime Kuma a été lancée.

Etape 5 - Lancement automatique au démarrage

Ensuite, il suffit de sauvegarder l'état des processus PM2 et de le restaurer automatiquement au démarrage.

pm2 save

La commande pm2 startup permet de générer une commande qui activera la restauration automatique des processus de PM2 au démarrage, ou dit plus simplement : le démarrage automatique de Uptime Kuma.

Il vous suffit donc de copier la commande que vous avez générée et l'installation sera terminée.

# sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u skwal --hp /home/skwal
Attention, la commande montrée en haut a été générée sur MON système, elle ne fonctionnera pas sur le votre. Pour obtenir une commande fonctionnelle utilisez pm2 startup comme montré ci-dessus.

Etape 6 - Installation du Reverse Proxy NGINX

Maintenant que le serveur Uptime Kuma est disponible localement sur le port 3001, je vais vous montrer comment configurer Nginx en tant que Reverse Proxy avec HTTPS pour assurer une disponibilité en toute sécurité. Commencez par installer Nginx si ce n'est pas déjà fait :

sudo apt install nginx

Vous pouvez utiliser cette commande pour vérifier que Nginx est bien installé.

nginx -v

Etape 7 - Création d'un certificat SSL

Générer un certificat SSL est très simple. J'ai expliqué tout le processus dans cet article : Comment générer un certificat SSL pour Nginx avec Let's Encrypt sous Ubuntu.

Etape 8 - Configuration de Nginx

Commencez par supprimer la configuration par défaut.

sudo rm -f /etc/nginx/sites-enabled/default /etc/nginx/sites-available/default

Vous pouvez maintenant créer votre propre fichier de configuration et l’activer en créant un lien symbolique dans le répertoire /etc/nginx/sites-enabled.

sudo touch /etc/nginx/sites-available/uptime_kuma.conf
sudo ln -s /etc/nginx/sites-available/uptime_kuma.conf /etc/nginx/sites-enabled/uptime_kuma.conf

Ensuite, ouvrez votre configuration avec l’éditeur de votre choix. Je vais utiliser nano :

sudo nano /etc/nginx/sites-available/uptime_kuma.conf

Voici un exemple de configuration que vous pouvez copier et modifier en fonction de vos besoins.

# Cette section a pour but de forcer l'utilisation d'HTTPS
server {
        listen 80;
        
        # Décommentez la ligne suivante si vous souhaitez activer IPv6
        # listen [::]:80;
        
        # Remplacez <exemple.domaine.com> par votre domaine
        server_name exemple.domaine.com;
        
        return 301 https://$host$request_uri;
}
# Cette section est chargée de rediriger le traffic vers le serveur Uptime Kuma
server {
        listen 443 ssl http2;
        
        # Décommentez la ligne suivante si vous souhaitez activer IPv6
        # listen [::]:443 ssl http2;
        
        # Remplacez <exemple.domaine.com> par votre domaine
        server_name exemple.domaine.com;
        
        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
            
                # Si votre serveur Uptime Kuma écoute sur un autre 
                # port que 3001, n'oubliez pas de le changer en dessous
                proxy_pass http://127.0.0.1:3001/;
            
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }

        # Le chemin de votre certificat SSL généré plus tôt
        ssl_certificate /etc/letsencrypt/live/exemple.domaine.com/fullchain.pem;
        # Le chemin de la clé privée du certificat
        ssl_certificate_key /etc/letsencrypt/live/exemple.domaine.com/privkey.pem;

        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

Une fois que vous avez enregistré votre configuration, vous pouvez vérifier qu'elle ne contient aucune erreur avec cette commande :

sudo nginx -t

Si vous voyez les messages syntax is OK et test is successful, alors redémarrez Nginx afin de recharger la nouvelle configuration.

sudo systemctl restart nginx

Etape 9 - Touches finales

Votre instance Uptime Kuma devrait maintenant être accessible, et vous pourrez configurer le compte administrateur. Après ça, vous aurez accès au panneau de contrôle.

Panneau de contrôle de Uptime Kuma

Malgré tout, il reste une étape, rendez vous dans le menu Settings,

dans la section Reverse Proxy, cochez yes sous l'option Trust Proxy et cliquez sur Save.

Exemple d'utilisation

Maintenant que votre instance est configurée et fonctionnelle, je vais vous montrer comment configurer la surveillance d'un service, ainsi qu'une page d'état.

Configuration de la surveillance d'un service

Pour configurer une sonde (la surveillance d'un service), cliquez sur Add new monitor depuis le panneau de contrôle, et entrez les informations basique du service que vous souhaitez surveiller. Ici, j'ai simplement configuré la surveillance du site google.com. Normalement, quand vous cliquerez sur save, le panneau de contrôle devrait montrer up.

Création d'une page d'état

Pour créer une page d'état, cliquez sur status pages dans la barre de navigation.

Entrez les informations de votre page d'état et cliquez sur Next. Maintenant, choisissez quelles sondes vous souhaitez faire apparaître et cliquez sur save.

Votre page d'état est prête.

Conclusion

Si vous rencontrez un problème, n'hésitez pas a demander de l'aide dans les commentaires sous cet article et je serai ravi de vous aider!

Informations additionnelles