Dans ce tutoriel, nous allons expliquer étape par étape comment installer Uptime Kuma sur Debian 12.
Uptime Kuma (ou simplement Kuma) est un outil de surveillance open source permettant de surveiller les services HTTP, HTTPS, DNS et autres protocoles. Uptime Kuma offre diverses fonctionnalités, telles que le multilinguisme, plusieurs pages d’état, la prise en charge des proxys, etc.

Github : https://github.com/louislam/uptime-kuma/wiki/%F0%9F%94%A7-How-to-Install
Configuration SSL possible : https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy
Guide de configuration Uptime-Kuma : https://betterstack.com/community/guides/monitoring/uptime-kuma-guide/
Dans cet article, nous allons configurer Uptime Kuma avec Apache comme proxy inverse. L’installation d’Uptime Kuma sur Debian 12 avec Apache comme proxy inverse.
Étape 1. Mettre à jour le système
Chaque nouvelle installation du système d’exploitation nécessite que les packages système soient mis à jour vers les dernières versions disponibles.
sudo apt-get update -y && sudo apt-get upgrade -y
Si une mise à jour du noyau est en attente, vous devrez redémarrer votre ordinateur pour que la nouvelle version soit chargée. Une fois les mises à jour terminées, vous pourrez passer à l’étape suivante.
Étape 2. Installer le serveur Web Apache
Pour installer Apache, exécutez la commande suivante :
sudo apt install apache2 -y
Une fois Apache installé, vous pouvez démarrer et activer le service comme suit :
sudo systemctl enable apache2 && sudo systemctl start apache2
Vérifiez si le service est opérationnel :
sudo systemctl status apache2
Vous devriez recevoir le résultat suivant :
root@host:~# sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; preset: enabled)
Active: active (running) since Wed 2023-10-05 06:26:23 CDT; 1 day 5h ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 661 (apache2)
Tasks: 10 (limit: 4644)
Memory: 29.6M
CPU: 9.372s
CGroup: /system.slice/apache2.service
Étape 3. Installer NodeJS
Pour installer NodeJS, exécutez la commande suivante :
sudo apt install nodejs -y
Pour vérifier la version de NodeJS installée, exécutez la commande suivante :
node -v
root@host:~# node -v
v18.13.0
Après l’installation réussie de NodeJS, nous devons également installer NPM :
sudo apt install npm -y
Pour vérifier la version NPM installée, exécutez la commande suivante :
npm -v
root@host:~# npm -v
9.2.0
Étape 4. Installer Uptime Kuma
Maintenant que tous les logiciels requis sont installés, nous pouvons commencer l’installation d’Uptime Kuma. Nous devons d’abord cloner le dépôt Uptime Kuma depuis GitHub :
cd /opt
git clone https://github.com/louislam/uptime-kuma.git
Vous devez prévoir un certain temps pour que le dépôt soit cloné dans le répertoire /opt :
Cloning into 'uptime-kuma'...
remote: Enumerating objects: 28276, done.
remote: Counting objects: 100% (5082/5082), done.
remote: Compressing objects: 100% (446/446), done.
remote: Total 28276 (delta 4745), reused 4771 (delta 4619), pack-reused 23194
Receiving objects: 100% (28276/28276), 21.69 MiB | 5.30 MiB/s, done.
Resolving deltas: 100% (21463/21463), done.
Une fois téléchargé, allez dans le répertoire uptime-kuma et installez le gestionnaire de processus de production pm2 :
sudo npm install pm2 -g
Après cela, exécutez la commande suivante pour la configuration :
npm run setup
Une fois installé, démarrez le serveur Uptime Kuma avec la commande suivante :
pm2 start server/server.js --name uptime-kuma
Une fois démarré, vous devriez obtenir le résultat suivant :
[PM2] Génération du démon PM2 avec pm2_home=/root/.pm2
[PM2] PM2 démonisé avec succès
[PM2] Démarrage de /opt/uptime-kuma/server/server.js en fork_mode (1 instance)
[PM2] Terminé.
│ id │ nom │ espace de noms │ version │ mode │ pid │ uptime │ ↺ │ statut │ cpu │ mémoire │ utilisateur
│ 0 │ uptime-kuma │ par défaut │ 1.23.2 │ fork │ 17161 │ 0s │ 0 │ en ligne │ 0% │ 42,3 Mo│ racine
Après cela, nous devons activer le service pm2 pour démarrer au démarrage du système avec la commande suivante :
pm2 startup
Vous devriez obtenir le résultat suivant :
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-root...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-root.service → /etc/systemd/system/pm2-root.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save
[PM2] Remove init script via:
$ pm2 unstartup systemd
Une fois l’installation terminée, vous pouvez accéder à l’instance Uptime Kuma à l’adresse http://YourServerIPAddress:3001 . N’oubliez pas que vous devrez ajouter le numéro de port 3001 à la fin de votre URL pour accéder au service.
Étape 5. Configurer Apache comme proxy inverse
Lorsqu’Uptime Kuma est installé, il n’est pas pratique d’utiliser son numéro de port pour accéder au service. Pour résoudre ce problème, nous utiliserons Apache comme interface, qui se placera entre le visiteur et l’instance Uptime Kuma. Cela peut également renforcer la sécurité de votre instance Uptime Kuma en limitant l’accès via Apache.
Si vous ne l’avez pas encore installé, vous pouvez installer Apache avec apt install apache2 . Accédez au répertoire de configuration d’Apache et créez un fichier de configuration pour l’instance Uptime Kuma.
cd /etc/apache2/sites-available/
nano kuma.conf
Ouvrez le fichier, collez les lignes de code suivantes, enregistrez-le et fermez-le. Assurez-vous de remplacer votredomaine.com par le nom de domaine que vous souhaitez utiliser pour accéder à l’instance Kuma.
<VirtualHost *:80>
ServerName yourdomain.com
DocumentRoot /var/www/html/
ProxyPass / http://localhost:3001/
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://localhost:3001/$1" [P,L]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Activez la configuration Apache pour Kuma et activez les modules rewrite , proxy et proxy_http d’Apache .
a2dissite 000-default.conf
sudo a2enmod rewrite
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2ensite kuma.conf
Vérifiez la syntaxe :
apachectl -t
Vous devriez recevoir le résultat suivant :
root@vps:~# apachectl -t
Syntaxe OK
Si la syntaxe est correcte, redémarrez le service Apache.
systemctl restart apache2
Étape 6. Terminer l’installation d’Uptime Kuma
Si tout est correctement configuré, vous pourrez accéder à l’instance Uptime Kuma à l’adresse http://YourDomainName .

Étape 7. Installation du certificat SSL Let’s Encrypt
sudo apt install certbot
sudo apt install python3-certbot-apache
sudo certbot --apache -d nom-de-domaine.com
Remplacez nom-de-domaine.com par celui que vous possédez.
Pour terminer la mise en place du certificat SSL, éditez votre VitualHost kuma.conf :
<VirtualHost *:80>
ServerName nom-de-domaine.com
DocumentRoot /var/www/html/
ProxyPass / http://localhost:3001/
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://localhost:3001/$1" [P,L]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteCond %{SERVER_NAME} =nom-de-domaine.com [OR]
RewriteCond %{SERVER_NAME} =yourdomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:443>
ServerName nom-de-domaine.com
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/nom-de-domaine.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/nom-de-domaine.com/privkey.pem
# Protocol 'h2' is only supported on Apache 2.4.17 or newer.
Protocols h2 http/1.1
ProxyPreserveHost on
ProxyPass / http://localhost:3001/
RewriteEngine on
RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /(.*) ws://localhost:3001/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket
RewriteRule /(.*) http://localhost:3001/$1 [P,L]
</VirtualHost>
Autres configuration SSL possible : https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy
Guide de configuration Uptime-Kuma : https://betterstack.com/community/guides/monitoring/uptime-kuma-guide/
Étape 8. Configuration notification SMTP

(Astuce) En cas d’arrêt du service PM2 :
Placez vous dans le répertoire uptime-kuma :
cd /opt/uptime-kuma
pm2 start server/server.js --name uptime-kuma

PM2 : Liste de commandes
Source : https://pm2.keymetrics.io/docs/usage/quick-start/
# Fork mode
pm2 start app.js --name my-api # Name process
# Cluster mode
pm2 start app.js -i 0 # Will start maximum processes with LB depending on available CPUs
pm2 start app.js -i max # Same as above, but deprecated.
pm2 scale app +3 # Scales `app` up by 3 workers
pm2 scale app 2 # Scales `app` up or down to 2 workers total
# Listing
pm2 list # Display all processes status
pm2 jlist # Print process list in raw JSON
pm2 prettylist # Print process list in beautified JSON
pm2 describe 0 # Display all information about a specific process
pm2 monit # Monitor all processes
# Logs
pm2 logs [--raw] # Display all processes logs in streaming
pm2 flush # Empty all log files
pm2 reloadLogs # Reload all logs
# Actions
pm2 stop all # Stop all processes
pm2 restart all # Restart all processes
pm2 reload all # Will 0s downtime reload (for NETWORKED apps)
pm2 stop 0 # Stop specific process id
pm2 restart 0 # Restart specific process id
pm2 delete 0 # Will remove process from pm2 list
pm2 delete all # Will remove all processes from pm2 list
# Misc
pm2 reset <process> # Reset meta data (restarted time...)
pm2 updatePM2 # Update in memory pm2
pm2 ping # Ensure pm2 daemon has been launched
pm2 sendSignal SIGUSR2 my-app # Send system signal to script
pm2 start app.js --no-daemon
pm2 start app.js --no-vizion
pm2 start app.js --no-autorestart
