Language: fr
Uptime Kuma : mettre en place sa propre surveillance de site web sur un VPS
Un site web peut tomber en panne tout en continuant à renvoyer 200 OK. Une sauvegarde peut également cesser de fonctionner sans message d’erreur évident. Uptime Kuma détecte ces deux situations : il vérifie les sites, les API, les ports et les tâches en arrière-plan, puis envoie une notification lorsqu’un problème survient.
Nous verrons où héberger le système de surveillance, quel type de VPS il lui faut et comment installer Uptime Kuma 2, activer HTTPS, connecter Telegram et créer une page de statut.
Uptime Kuma en sept étapes
- Allouez un petit VPS séparé des projets surveillés.
- Faites pointer vers celui-ci un sous-domaine comme
monitor.example.com. - Installez Docker et démarrez Uptime Kuma 2.
- Fermez le port interne
3001et activez HTTPS. - Créez des moniteurs HTTP, DNS, TCP ou Push.
- Configurez Telegram et, si nécessaire, une page de statut.
- Mettez en place les mises à jour et une sauvegarde externe du répertoire de données.
Qu’est-ce qu’Uptime Kuma ?
Uptime Kuma est un outil gratuit, open source et auto-hébergé. Son tableau de bord et l’historique des vérifications sont stockés sur votre propre serveur.
Il peut surveiller HTTP(S), les ports TCP, le ping, DNS, WebSocket, le texte et le JSON des réponses, les signaux push et les conteneurs Docker. L’intervalle de vérification minimal est de 20 secondes. L’outil propose aussi des dizaines de canaux de notification, la 2FA, des graphiques de latence, la surveillance des certificats TLS et plusieurs pages de statut.
Détecter une panne cachée derrière 200 OK
Une vérification HTTP simple ne voit que le code de réponse. Pourtant, un serveur web peut afficher une page blanche ou un écran d’erreur de l’application tout en renvoyant un statut de réussite.
Pour une surveillance plus précise, utilisez :
- Keyword — recherche une phrase attendue, comme le nom du site ou le texte « Account dashboard » ;
- JSON Query — vérifie une valeur dans une réponse API, par exemple
status: healthy.
Ainsi, le moniteur confirme non seulement que le port est accessible, mais aussi que l’application présente au moins un signe attendu de fonctionnement correct.
Moniteur Push pour les sauvegardes et les tâches cron
Un moniteur Push n’interroge pas un service. Il attend plutôt un signal régulier envoyé par ce service. Un script de sauvegarde ou une tâche cron appelle une URL unique après avoir terminé avec succès. Si le signal n’arrive pas à temps, Uptime Kuma signale une panne.
Cela permet de détecter un problème « silencieux » : le site fonctionne encore, mais la sauvegarde quotidienne n’a pas été créée depuis plusieurs jours.
Ce qu’Uptime Kuma ne remplace pas
Uptime Kuma suit principalement la disponibilité et le temps de réponse. Pour le CPU, la RAM, le disque, les logs et les métriques des conteneurs, complétez-le avec Prometheus, Netdata, Zabbix ou un autre système de monitoring : Kuma remarque le problème de l’extérieur, tandis que les métriques aident à en trouver la cause.
Pourquoi faire fonctionner le monitoring sur un VPS séparé
Si Uptime Kuma est installé à côté du site web, une panne du VPS, du réseau ou du centre de données peut arrêter à la fois le projet et le système de surveillance. La notification risque alors de ne jamais être envoyée.
Hébergez le tableau de bord sur un VPS séparé et, pour les projets importants, dans un autre emplacement ou chez un autre fournisseur. Il est également utile de surveiller Kuma lui-même avec un service externe : le système de surveillance a lui aussi besoin d’être surveillé.
Configuration requise pour Uptime Kuma
Le projet ne définit pas de minimum officiel strict pour le CPU et la RAM. Une configuration de départ pratique pour une petite installation est la suivante :
- 1 vCPU ;
- 1 Go de RAM ;
- 10 Go de SSD ;
- Ubuntu 24.04 LTS ;
- IPv4 ;
- un domaine ou sous-domaine pour HTTPS.
Cette configuration suffit généralement pour plusieurs dizaines de vérifications simples. Pour des centaines de moniteurs, une longue conservation de l’historique ou des vérifications via navigateur, choisissez 2 Go de RAM ou davantage.
Installer Uptime Kuma sur un VPS
Cet exemple utilise Ubuntu 24.04 et le sous-domaine monitor.example.com.
1. Configurer le DNS et le pare-feu
Créez un enregistrement DNS A pointant vers l’adresse IPv4 du VPS. Connectez-vous en SSH et ouvrez les ports nécessaires :
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enableNe fermez pas la session SSH actuelle avant d’avoir testé une nouvelle connexion.
2. Installer Docker et Docker Compose
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose version3. Démarrer Uptime Kuma 2
mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma
cat > compose.yaml <<'EOF'
services:
uptime-kuma:
image: louislam/uptime-kuma:2
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
EOF
docker compose up -d
docker compose psUtilisez le tag :2 : latest pointe encore vers la branche v1 obsolète. Le répertoire /app/data doit être stocké sur un disque local ou dans un volume Docker classique. NFS et les systèmes de stockage sans verrouillage correct des fichiers peuvent corrompre la base de données.
Le port 3001 n’est accessible que sur 127.0.0.1. Un reverse proxy avec HTTPS publiera le tableau de bord vers l’extérieur.
4. Activer HTTPS avec Caddy
apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
monitor.example.com {
reverse_proxy 127.0.0.1:3001
}
EOF
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddySi le DNS pointe vers le VPS, Caddy demandera automatiquement un certificat TLS et fera transiter les connexions WebSocket. Hébergez le tableau de bord à la racine d’un domaine ou d’un sous-domaine : une adresse comme example.com/kuma n’est pas prise en charge.
5. Créer le compte administrateur
Ouvrez https://monitor.example.com, créez un compte avec un mot de passe long et unique, puis activez l’authentification à deux facteurs.
Ajouter le premier moniteur
Cliquez sur Add New Monitor et sélectionnez HTTP(s) :
- Saisissez un nom et l’URL complète.
- Définissez un intervalle, par exemple 60 secondes.
- Ajoutez deux tentatives supplémentaires pour gérer les défaillances réseau occasionnelles.
- Sélectionnez un canal de notification.
- Enregistrez le moniteur et vérifiez que les contrôles réussis commencent à apparaître.
Pour le site principal, les vérifications HTTP et Keyword sont utiles. Pour une API, utilisez un endpoint de santé et JSON Query. N’exposez pas des bases de données ou des ports d’administration sur Internet uniquement pour les surveiller ; utilisez un réseau de confiance ou un VPN.
Exemple de moniteur Push pour une sauvegarde
Après avoir créé un moniteur Push, ajoutez son URL unique à la fin du script :
backup-command && \
curl -fsS "https://monitor.example.com/api/push/SECRET_TOKEN?status=up&msg=backup-ok"La requête ne s’exécute qu’après une sauvegarde réussie. Traitez le token Push comme un mot de passe : toute personne connaissant l’URL peut envoyer un faux signal.
Connecter Telegram
Créez un bot avec @BotFather, envoyez-lui un message, puis ouvrez Settings → Notifications → Telegram. Saisissez le Bot Token et le Chat ID, cliquez sur Test et associez le canal à vos moniteurs. Pour les services critiques, ajoutez un second canal comme l’e-mail.
Créer une page de statut
Dans Status Pages, vous pouvez regrouper les moniteurs, afficher l’état actuel et l’historique de disponibilité, associer un domaine et signaler les travaux planifiés via Maintenance. Ne publiez pas d’adresses IP internes ni d’URL techniques : les clients ont seulement besoin de composants tels que « Website », « API », « Account dashboard » et « Payments ».
Mettre à jour et sauvegarder Uptime Kuma
Avant une mise à jour importante, arrêtez le conteneur et enregistrez le répertoire de données :
cd /opt/uptime-kuma
docker compose down
tar -czf /root/uptime-kuma-$(date +%F).tar.gz \
data compose.yaml
docker compose up -dDéplacez l’archive vers un autre appareil ou un stockage externe. Une copie sur le même VPS ne protège ni contre la suppression du serveur ni contre une panne du disque.
Pour une mise à jour régulière :
cd /opt/uptime-kuma
docker compose pull
docker compose up -d --force-recreateAprès le démarrage, vérifiez docker compose ps, ouvrez le tableau de bord et envoyez une notification de test.
Quel VPS choisir pour Uptime Kuma ?
Une petite installation nécessite seulement un VPS Linux avec 1 vCPU et 1 Go de RAM. L’indépendance compte davantage que la puissance brute : le moniteur doit continuer à fonctionner lorsque le projet principal est indisponible.
Vous pouvez héberger Uptime Kuma sur un VPS de tropic.host lorsque les services surveillés fonctionnent sur une autre plateforme ou un nœud indépendant. Ubuntu, Docker et une IP statique permettent de lancer rapidement le tableau de bord, tandis que les ressources peuvent augmenter avec le nombre de vérifications.
Si la production fonctionne déjà dans la même infrastructure, choisissez un autre nœud ou ajoutez un moniteur de sauvegarde externe. Séparer les domaines de panne est plus utile que d’ajouter un cœur CPU.
Erreurs fréquentes
| Erreur | Pourquoi c’est un problème | Meilleure approche |
|---|---|---|
| Le monitoring fonctionne à côté du projet | Une panne commune arrête le service et les notifications | Utiliser un VPS ou un emplacement séparé |
Le port 3001 est exposé publiquement | Le tableau de bord est accessible sans reverse proxy ni HTTPS | Lier le port à 127.0.0.1 |
Seul le code 200 est vérifié | Une erreur de l’application peut ressembler à un succès | Ajouter Keyword ou JSON Query |
Le tag latest est utilisé | Il pointe vers la branche v1 obsolète | Utiliser louislam/uptime-kuma:2 |
| La sauvegarde est stockée sur le même VPS | Elle disparaîtra avec le serveur | Copier le répertoire data ailleurs |
Résumé
Uptime Kuma transforme un petit VPS en centre de surveillance personnel pour les sites web, les API, le DNS, les ports, les certificats et les tâches en arrière-plan. Keyword détecte une page défectueuse, JSON Query repère une réponse API incorrecte et Push révèle une sauvegarde ou une tâche cron arrêtée.
Pour une configuration fiable, hébergez le monitoring séparément de la production, fermez le port 3001, activez HTTPS et la 2FA et configurez deux canaux de notification. Mettez ensuite en place une sauvegarde externe du répertoire de données et une vérification indépendante d’Uptime Kuma lui-même.
FAQ
Uptime Kuma est-il gratuit ?
Oui. Le projet est open source et distribué sous licence MIT. Vous ne payez que l’infrastructure, le domaine et les sauvegardes externes.
Quelle quantité de RAM faut-il à Uptime Kuma ?
Pour une petite installation, 1 Go de RAM est un bon point de départ. Pour des centaines de contrôles, une longue conservation de l’historique ou Browser Engine, prévoyez 2 Go ou davantage.
Peut-on installer Uptime Kuma sans Docker ?
Oui, avec Node.js et PM2. Docker Compose est toutefois généralement plus simple à mettre à jour, migrer et restaurer sur un VPS.
Peut-on utiliser Uptime Kuma sans domaine ?
Techniquement oui, via l’adresse IP ou un tunnel SSH. Pour un accès Internet permanent, un sous-domaine avec HTTPS est plus sûr.
Uptime Kuma affiche-t-il l’utilisation du CPU, de la RAM et du disque ?
Pas comme un système complet de métriques serveur. Pour surveiller les ressources du serveur, complétez-le avec Prometheus, Netdata, Zabbix ou un autre outil spécialisé.
