Intégrer une page statut pour son site web avec Uptime Kuma

Intégrer une page statut pour son site web avec Uptime Kuma

Avoir une page statut de ses services peut être utile si on en possède plusieurs, si on souhaite être alerté d'une éventuelle indisponibilité.

A la recherche de ce type d'outil, j'ai trouvé pas mal d'offres payantes, ou gratuites, mais dans les 2 cas limitées.

J'ai trouvé Uptime Kuma, un outil pouvant tourner sous NodeJS, et également sous Docker.

Nous allons aborder l'installation sous ce dernier.

Installation

Si votre serveur ne dispose pas de Docker, voici comment l'installer :

apt-get update

apt-get install ca-certificates curl gnupg lsb-release -y

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]
https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt-get update

apt-get install docker-ce docker-ce-cli containerd.io -y

Une fois l'installation finalisée sur votre serveur, vous pouvez visualiser la version de Docker avec la commande docker -v.

Ensuite pour lancer le conteneur magique, utilisez la commande suivante :

docker volume create uptime-kuma
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

Pensez à vérifier que le port n'est pas déjà utilisé, sinon modifiez le selon vos besoins.

Voilà, c'est fait, vous pouvez dès à présent vous rendre sur VotreIP:3001 pour commencer la configuration.

Configuration avec Nginx

Maintenant que votre service est fonctionnel, il convient de ne pas l'exposer avec VotreIP:Port

Nous allons utiliser Nginx pour ce faire, pour l'installer :

apt-get install nginx

Créez ensuite un fichier de configuration pour Rocket.Chat :

nano /etc/nginx/conf.d/status.conf

Mettez les lignes suivantes dans le fichier. Remplacez status.example.com par votre propre nom de domaine, ainsi que le numéro de port que vous avez spécifié (par défaut 3001) :

server {
      listen 80;
      server_name status.example.com;

      location / {
          proxy_pass http://127.0.0.1:3001;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
}

Enregistrez et fermez ce fichier.

Rechargez Nginx pour que la modification prenne effet :

sudo systemctl reload nginx

Vous pouvez maintenant accéder à votre installation via status.example.com.

Activer le HTTPS

Pour chiffrer le trafic HTTP lorsque vous visitez Rocket.Chat de l'extérieur, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let's Encrypt.

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

Exécutez ensuite la commande suivante pour obtenir et installer le certificat TLS :

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d status.example.com

Le certificat doit maintenant être obtenu et installé automatiquement, vous pouvez accéder à l'interface Web de Uptime Kuma via HTTPS.