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/
(Astuce) En cas d’arrĂȘt du service PM2 :
Placez vous dans le répertoire uptime-kuma :
cd /opt/uptime-kuma npm run setup pm2 start server/server.js --name uptime-kuma pm2 startup

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