Le lab des experts

Installer Uptime-kuma sur GandiCloud VPS

gandi_news_install_uptime-kuma

Uptime-kuma est un outil de surveillance de vos différents services et sites, à héberger vous-même. Il est distribué sous licence MIT. Vous pouvez retrouver son code source sur le dépôt GitHub correspondant,  et le site web du développeur principal est ici : https://louislam.net/.

Uptime-kuma se pose donc en alternative libre à des outils de monitoring payants tels que Uptime Bot ou Status Page.

Le principal avantage d’Uptime-kuma est de proposer de nombreux protocoles pour la surveillance de votre infrastructure, et de supporter de nombreux systèmes d’alertes. En bonus, il vous permet de tenir une page de status de vos différents services, accessible publiquement ou non, selon votre choix et besoin.

Comment installer Uptime-kuma sur GandiCloud VPS ? Voici un tuto pas à pas.

Merci à Benjamin, agent support Hébergement, pour la rédaction de ce tuto.

Tutoriel installation Uptime-kuma

Pré-requis à l’installation d’Uptime-kuma

Ce tutoriel a été réalisé en utilisant Debian bullseye comme système d’exploitation et la version 1.17.1 d’Uptime-Kuma. Nous supposerons également ici que l’utilisateur dispose déjà d’un VPS Gandi, et a déjà suivi les premières étapes de configuration (utilisateurs, mots de passe, pare-feu avec les ports 22, 80 et 443 ouverts, …).

En savoir plus sur les étapes de configuration

Dans cet exemple, Uptime-kuma est basé sur Node.JS, exécuté avec un service systemd et npm, et sera servi à travers nginx. La récupération du code source se fait à l’aide de Git.

Nous devons donc au préalable installer ces quatre outils.

  • Ajout du dépôt de Node.JS 
$ curl -fsSL https://deb.nodesource.com/setup_17.x | sudo -E bash -
  • Installation de Node.JS, Giy et NGINX 
$ sudo apt install -y nodejs git nginx
  • Assurons-nous maintenant que npm est à jour 
$ sudo npm install npm -g

Tous les pré-requis sont maintenant satisfaits et nous pouvons passer à l’installation d’Uptime-kuma.

Etapes d’installation d’Uptime-kuma

Pour limiter les risques de sécurité, créez un utilisateur standard qui sera dédié à l’exécution d’Uptime-kuma :

$ sudo adduser --disabled-password uptimekuma

À partir de maintenant, exécutez les prochaines commandes en tant qu’uptimekuma :

$ sudo -i -u uptimekuma

Pour récupérer le code source de l’outil, utilisez git, installé précédemment :

$ git clone

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

Lancez maintenant l’installation depuis le répertoire uptime-kuma :

$ cd uptime-kuma$ npm run setup

Et vérifiez les dépendances des paquets npm :

$ npm fund

Uptime-kuma est maintenant prêt à être exécuté. Il vous suffit pour cela de mettre en place le service systemd correspondant, à l’aide de sudo.

Quittez donc l’utilisateur uptimekuma :

$ exit

Et mettez en place le service :

$ sudo vim /etc/systemd/system/uptimekuma.service

Ajoutez le contenu suivant :

[Unit]
Description=Uptime-Kuma - A free and open source uptime monitoring solution
Documentation=https://github.com/louislam/uptime-kuma
After=network.target

[Service]

Type=simple

User=uptimekuma
WorkingDirectory=/home/uptimekuma/uptime-kuma
ExecStart=/usr/bin/npm run start-server
Restart=on-failure

[Install]
WantedBy=multi-user.target

Démarrez le service :

$ sudo systemctl enable uptimekuma.service --now

Uptime-kuma est maintenant en cours d’exécution et vous pouvez le rendre accessible via le Web avec nginx. Nous supposons que vous avez déjà généré les certificats nécessaires, via l’offre Gandi certificat TLS-SSL gratuit, par exemple.

Créez donc le fichier sub.domain.conf dans /etc/nginx/sites-available afin d’y placer le contenu suivant :

server {
    listen 80;
    listen [::]:80;
    server_name  sud.domain.tld;
    location / { return 301 https://$host$request_uri; }
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name sub.domain.tld;
  ssl_certificate /path/to/ssl/cert/crt;
  ssl_certificate_key /path/to/ssl/key/key;

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:3001/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

Vous devrez, bien entendu, adapter les valeurs de server_name, ssl_certificate et ssl_certificate_key à votre configuration.

Créez un lien symbolique afin d’activer le site  :

$ sudo ln -s /etc/nginx/sites-available/sub.domain.conf /etc/nginx/sites-enabled/sub.domain.conf

Validez la configuration :

$ sudo nginx -t

Démarrez nginx :

$ sudo systemctl enable nginx --now

Ou redémarrez-le s’il était déjà en cours d’exécution :

$ sudo systemctl restart nginx

Votre site sera maintenant accessible à l’adresse que vous aurez choisi pour celui-ci. Rendez-vous à cette adresse : https://sub.domain.tld

Vous devrez alors configurer votre compte Administrateur d’Uptime-kuma, comme sur la capture ci-dessous.

config_screen_uptimekuma_fr
Configuration de votre compte Administrateur d’Uptime-kuma

Que faire avec Uptime-kuma ?

Une fois votre compte créé, vous arrivez sur un tableau de bord Uptime-kuma, vide pour l’instant.

tableau_de_bord_uptimekuma_fr
Votre premier tableau de bord Uptime-kuma


Vous pourrez alors ajouter de nouvelles sondes HTTP(s), Ping, TCP et bien d’autres afin de surveiller vos différents services et équipements, et obtenir un écran comme ceci :

tableau_de_bord_uptimekuma_fr
Exemple de tableau de bord avec sondes

Comme vous le voyez, vous avez en un coup d’oeil un historique des derniers événements.

Il ne s’agit là que de l’installation de base, nous n’avons pas optimisé la sécurité de l’outil ni du serveur web.

Vous pourrez également créer une page Statut indiquant l’état de vos services : 

statuspage_green_uptimekuma_fr
Création d’une page Statut avec Uptime-kuma

Avec la possibilité d’afficher un incident lorsque celui-ci survient :  

Statuspage_incident_uptimekuma_fr
Notification d’incident sur la page Statut

Enfin, vous pourrez bien évidemment définir vos paramètres d’envois d’alertes via email, Telegram, Matrix, Push, Mattermost et de nombreux autres.

Pour tous ces réglages, nous ne pouvons que vous inviter à visiter le wiki Uptime-kuma.