Outil de surveillance de la disponibilité auto-hébergé avec support pour HTTP, TCP, DNS, Docker et 90+ services de notification incluant Slack, Discord et Telegram.
# Exécuter Uptime Kuma avec stockage persistant
docker run -d \
--restart=always \
-p 3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:2
# Accéder à http://localhost:3001
# Lier à localhost seulement (aucun accès externe)
docker run -d \
--restart=always \
-p 127.0.0.1:3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:2
# Télécharger le fichier compose officiel
mkdir uptime-kuma && cd uptime-kuma
curl -o compose.yaml \
https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml
# Démarrer le service
docker compose up -d
# Accéder à http://localhost:3001
# Monter le socket Docker pour la surveillance de la santé des conteneurs
docker run -d \
--restart=always \
-p 3001:3001 \
-v uptime-kuma:/app/data \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--name uptime-kuma \
louislam/uptime-kuma:2
# Exigences: Node.js 20.4+, Git
# Cloner et configurer
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
# Démarrer directement
node server/server.js
# Ou utiliser PM2 pour l'opération en arrière-plan
npm install -g pm2
pm2 start server/server.js --name uptime-kuma
| Commande | Description |
|---|
docker run -d -p 3001:3001 louislam/uptime-kuma:2 | Démarrer le conteneur Uptime Kuma |
docker compose up -d | Démarrer avec Docker Compose |
docker compose down | Arrêter tous les services |
docker compose logs -f | Suivre les journaux des conteneurs |
docker restart uptime-kuma | Redémarrer le conteneur |
docker stop uptime-kuma | Arrêter le conteneur |
docker start uptime-kuma | Démarrer le conteneur arrêté |
node server/server.js | Démarrer sans Docker |
pm2 start server/server.js --name uptime-kuma | Démarrer avec PM2 |
pm2 restart uptime-kuma | Redémarrer avec PM2 |
pm2 stop uptime-kuma | Arrêter avec PM2 |
pm2 logs uptime-kuma | Afficher les journaux PM2 |
# Récupérer la dernière image
docker pull louislam/uptime-kuma:2
# Arrêter et supprimer le conteneur actuel
docker stop uptime-kuma
docker rm uptime-kuma
# Recréer avec la nouvelle image (les données persistent dans le volume)
docker run -d \
--restart=always \
-p 3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:2
# Récupérer et recréer
docker compose pull
docker compose up -d
cd uptime-kuma
git fetch --all
git checkout 2.1.3 --force
npm install --production
npm run download-dist
pm2 restart uptime-kuma
| Type | Description |
|---|
| HTTP(S) | Surveiller la disponibilité du site web et le temps de réponse |
| HTTP(S) Keyword | Vérifier la présence de texte spécifique dans le corps de la réponse |
| HTTP(S) JSON Query | Valider les valeurs de réponse JSON |
| TCP Port | Vérifier si un port TCP est ouvert et répond |
| Ping | Ping ICMP pour la disponibilité de l’hôte |
| DNS | Surveiller la résolution des enregistrements DNS |
| Docker Container | Surveiller l’état de santé du conteneur |
| Steam Game Server | Vérifier la disponibilité du serveur de jeu |
| MQTT | Surveiller la connectivité du courtier MQTT |
| gRPC | Surveiller la santé du service gRPC |
| Radius | Vérification du serveur d’authentification RADIUS |
| GameDig | Surveillance du serveur de jeu (plusieurs protocoles) |
| Push | Surveillance passive via point de terminaison de battement de cœur |
| Group | Groupage logique des surveillance |
| Service | Description |
|---|
| Slack | Webhooks de canal et notifications bot |
| Discord | Notifications de canal basées sur webhook |
| Telegram | Notifications API bot |
| Microsoft Teams | Notifications webhook entrantes |
| Mattermost | Intégration de chat auto-hébergé |
| Rocket.Chat | Notifications webhook |
| Google Chat | Notifications webhook d’espace |
| Matrix | Notifications de chat décentralisé |
| Service | Description |
|---|
| Pushover | Notifications push mobile |
| Gotify | Serveur push auto-hébergé |
| ntfy | Notifications pub/sub basées sur HTTP |
| Pushbullet | Notifications push multi-appareils |
| Signal | Notifications de messagerie sécurisée |
| LINE | Intégration LINE Notify |
| Service | Description |
|---|
| PagerDuty | Alertes d’incident et intervention |
| Opsgenie | Gestion des alertes et escalade |
| Squadcast | Gestion des incidents |
| Splunk On-Call | Routage d’alerte VictorOps |
| Better Stack | Surveillance de la disponibilité et gestion des incidents |
| Service | Description |
|---|
| SMTP Email | Notifications email personnalisées |
| Webhook | Appels de point de terminaison HTTP personnalisés |
| Home Assistant | Déclencheurs d’automatisation de maison intelligente |
| Apprise | Passerelle de notification universelle |
| Variable | Description | Par défaut |
|---|
UPTIME_KUMA_PORT | Port du serveur | 3001 |
UPTIME_KUMA_HOST | Adresse de liaison | :: |
DATA_DIR | Répertoire de stockage des données | ./data |
TZ | Fuseau horaire | UTC |
UMASK | Masque d’autorisation de fichier | 0000 |
NODE_EXTRA_CA_CERTS | Chemin des certificats CA personnalisés | — |
SSL_CERT | Chemin du certificat SSL | — |
SSL_KEY | Chemin de la clé privée SSL | — |
| Fonctionnalité | Description |
|---|
| Plusieurs pages | Créer des pages d’état séparées pour différents services |
| Domaines personnalisés | Mapper les pages d’état à des noms de domaine personnalisés |
| CSS personnalisé | Styliser les pages d’état avec CSS personnalisé |
| Publications d’incident | Créer des rapports d’incident visibles sur la page d’état |
| Maintenance | Planifier les fenêtres de maintenance |
| Groupes de surveillance | Organiser les surveillance en groupes sur la page d’état |
# Installer le client API Python
pip install uptime-kuma-api
| Opération | Description |
|---|
| Add monitor | Créer les surveillance par programme |
| Edit monitor | Mettre à jour la configuration de surveillance |
| Delete monitor | Supprimer les surveillance |
| Pause/Resume | Basculer l’état de surveillance |
| Get status | Récupérer l’état actuel de surveillance |
| Add notification | Configurer les fournisseurs de notification |
| Get uptime | Interroger les statistiques de disponibilité |
# compose.yaml
services:
uptime-kuma:
image: louislam/uptime-kuma:2
container_name: uptime-kuma
restart: always
ports:
- "3001:3001"
volumes:
- ./data:/app/data
# Optionnel: Surveillance des conteneurs Docker
# - /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- TZ=UTC
| Fonctionnalité | Description |
|---|
| 2FA | Authentification à deux facteurs pour la connexion |
| Reverse Proxy | Déployer derrière Nginx, Caddy ou Traefik |
| SSL/TLS | SSL intégré ou terminaison par reverse proxy |
| Limitation de débit de connexion | Protection contre le forçage brut |
| Clés API | Accès API basé sur jetons |
server {
listen 443 ssl;
server_name status.example.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
| Commande | Description |
|---|
docker cp uptime-kuma:/app/data ./backup | Sauvegarder le répertoire de données |
docker cp ./backup/. uptime-kuma:/app/data | Restaurer à partir de la sauvegarde |
docker volume inspect uptime-kuma | Trouver le point de montage du volume |
| Problème | Solution |
|---|
| Impossible d’accéder à l’interface utilisateur | Vérifier la liaison du port: docker port uptime-kuma |
| Erreurs de volume NFS | Utiliser les répertoires locaux, pas les systèmes de fichiers réseau |
| Erreurs WebSocket | Configurer le reverse proxy pour la mise à niveau WebSocket |
| Conteneur ne démarre pas | Vérifier les journaux: docker logs uptime-kuma |
| Persistance des données perdue | S’assurer que le volume -v uptime-kuma:/app/data est utilisé |
| Échec de la surveillance Docker | Monter docker.sock: -v /var/run/docker.sock:/var/run/docker.sock:ro |
| Plateforme | État |
|---|
| Linux (x64, ARM) | Supporté |
| Windows 10+ (x64) | Supporté |
| macOS | Supporté |
| Docker Desktop | Supporté |
| Kubernetes | Via image Docker |
| FreeBSD/OpenBSD | Non supporté |
| Replit/Heroku | Non supporté |
- Utiliser les volumes Docker (pas les montages de liaison sur NFS) pour la persistance des données
- Déployer derrière un reverse proxy avec terminaison SSL pour une utilisation en production
- Activer 2FA pour le compte administrateur immédiatement après la première connexion
- Définir les intervalles de surveillance à 60 secondes ou plus pour les services externes
- Utiliser le type de surveillance Push pour les services derrière des pare-feu
- Configurer au moins 2 canaux de notification pour la redondance
- Créer des pages d’état séparées pour les audiences internes et externes
- Sauvegarder régulièrement le répertoire de données — il contient toute la configuration
- Définir le fuseau horaire via la variable d’environnement
TZ pour correspondre à votre centre d’exploitation