Uptime Kuma - Monitoring de disponibilité¶
Vue d'ensemble¶
Uptime Kuma est une solution open-source de monitoring d'uptime et de disponibilité des services. C'est l'alternative auto-hébergée à UptimeRobot, Pingdom ou StatusCake.
URL d'accès : http://192.168.1.82:3001
📋 Configuration des moniteurs : Voir uptime-kuma-monitors.md pour la liste complète des services à surveiller et les instructions de configuration étape par étape.
Caractéristiques¶
Types de monitoring supportés¶
- HTTP(S) : Surveillance d'endpoints web avec codes de statut
- TCP Port : Vérification de ports ouverts (bases de données, services)
- Ping : Test ICMP de disponibilité réseau
- DNS : Vérification de résolution DNS
- Docker Container : Surveillance de conteneurs Docker
- Steam Game Server : Monitoring de serveurs de jeux
- Keyword : Détection de mots-clés dans réponses HTTP
Dashboard et visualisation¶
- Status en temps réel : Couleurs (vert/rouge) pour chaque service
- Graphiques d'uptime : 24h, 7j, 30j, 90j
- Historique détaillé : Logs de tous les checks
- Temps de réponse : Graphiques de latence
- Certificats SSL : Alerte avant expiration
Notifications¶
- Intégrations : Slack, Discord, Telegram, Email, Webhooks
- Alertes personnalisables : Seuils, fréquence, escalation
- Status page publique : Page de statut partageable
- Multi-utilisateurs : Gestion d'équipe avec permissions
Installation¶
Déploiement automatique via GitLab CI/CD¶
Le playbook Ansible install-uptime-kuma.yml est exécuté automatiquement à chaque push sur main.
Job GitLab : ansible:install-uptime-kuma (stage apply)
Installation manuelle (si besoin)¶
cd /opt/probatiovault-ia-server/ansible
ansible-playbook -i inventory/hosts playbooks/install-uptime-kuma.yml
Vérification de l'installation¶
# Vérifier le conteneur Docker
docker ps | grep uptime-kuma
# Logs temps réel
docker logs -f uptime-kuma
# Accès web
curl -I http://192.168.1.82:3001
Architecture¶
Déploiement Docker¶
Docker Host (192.168.1.82)
└─ uptime-kuma (container)
├─ Port: 3001 → 3001 (internal)
├─ Volume: /data/uptime-kuma → /app/data
└─ Image: louislam/uptime-kuma:1
Stockage des données¶
Toutes les configurations, historiques et alertes sont stockées dans une seule base SQLite.
Premier démarrage¶
1. Créer le compte admin¶
La première personne à s'inscrire devient automatiquement admin.
- Ouvrir http://192.168.1.82:3001
- Page d'accueil "Setup" s'affiche
- Remplir :
- Username : admin (ou votre pseudo)
- Password : Mot de passe sécurisé (min 8 caractères)
- Cliquer "Create"
Vous êtes maintenant Admin avec accès complet.
2. Ajouter le premier monitor¶
- Cliquer "+ Add New Monitor" (bouton en haut)
- Remplir les champs :
- Monitor Type : HTTP(s)
- Friendly Name : Ollama API
- URL : http://192.168.1.82:11434/api/tags
- Heartbeat Interval : 60 secondes
- Retries : 1
- Cliquer "Save"
Le monitor apparaît dans le dashboard avec un statut Up (vert) si le service est accessible.
3. Configurer les notifications¶
- Aller dans Settings (⚙️ en haut à droite)
- Cliquer Notifications
- Add New Notification :
- Notification Type : Slack, Discord, Email, etc.
- Friendly Name : Slack ProbatioVault
- Configurer les credentials (Webhook URL, etc.)
- Test la notification
- Cliquer "Save"
4. Associer une notification à un monitor¶
- Éditer un monitor existant
- Section Notifications en bas
- Cocher la notification configurée
- Cliquer "Save"
Vous recevrez désormais des alertes si ce service devient indisponible.
Utilisation¶
Monitors recommandés pour ProbatioVault-IA-Server¶
📋 Guide complet : uptime-kuma-monitors.md
| Service | Type | URL | Intervalle |
|---|---|---|---|
| Ollama API | HTTP(s) | http://192.168.1.82:11434/api/tags | 60s |
| Open WebUI | HTTP(s) | http://192.168.1.82:3000 | 60s |
| ComfyUI | HTTP(s) | http://192.168.1.82:8188 | 60s |
| JupyterLab | HTTP(s) | http://192.168.1.82:8889 | 60s |
| Nerfstudio Viewer | HTTP(s) | http://192.168.1.82:7007 | 120s |
| Netdata | HTTP(s) | http://192.168.1.82:19999 | 60s |
| Plex | HTTP(s) | http://192.168.1.82:32400/web | 120s |
| Homer | HTTP(s) | http://192.168.1.82:8080 | 60s |
Configuration automatique : Le playbook configure-uptime-kuma.yml génère un guide de configuration détaillé dans /data/uptime-kuma/CONFIGURATION.md.
Configuration manuelle rapide :
Pour chaque service : 1. + Add New Monitor 2. Monitor Type : HTTP(s) 3. Friendly Name : [nom du service] 4. URL : [URL ci-dessus] 5. Heartbeat Interval : [intervalle] 6. Save
Types de monitors avancés¶
1. HTTP(s) avec validation de contenu
Pour vérifier qu'une page contient un texte spécifique :
- Monitor Type : HTTP(s) - Keyword
- URL : http://192.168.1.82:8080
- Keyword : "ProbatioVault IA Server" (titre Homer)
- Heartbeat Interval : 300 (5 min)
2. TCP Port monitoring
Pour surveiller un port sans HTTP :
- Monitor Type : TCP Port
- Hostname : 192.168.1.82
- Port : 5432 (exemple: PostgreSQL)
- Heartbeat Interval : 60
3. Ping monitoring
Pour vérifier la disponibilité réseau :
- Monitor Type : Ping
- Hostname : 192.168.1.82
- Heartbeat Interval : 30
4. Docker Container monitoring
Pour surveiller un conteneur Docker local :
- Monitor Type : Docker Container
- Docker Host : (laisser vide pour localhost)
- Container Name : open-webui
- Heartbeat Interval : 60
Certificats SSL¶
Uptime Kuma surveille automatiquement l'expiration des certificats SSL/TLS.
- Ajouter un monitor HTTPS
- Section SSL Certificate Expiry :
- Ignore TLS/SSL error : ❌ (décocher)
- Certificate Expiry Notification : ✅ (cocher)
- Days Before Expiry : 7 (alerte 7 jours avant)
Vous recevrez une alerte si le certificat expire bientôt.
Status Page (page de statut publique)¶
Créer une page de statut accessible publiquement :
- Aller dans Status Pages
- Cliquer "+ Add New Status Page"
- Remplir :
- Title : ProbatioVault Services Status
- Slug : probatiovault (URL : /status/probatiovault)
- Description : Real-time status of ProbatioVault IA Server
- Add a Group :
- Name : "Core Services"
- Ajouter les monitors : Ollama, Open WebUI, Plex
- Publish : ✅
- Cliquer "Save"
La page de statut est accessible à : http://192.168.1.82:3001/status/probatiovault
Avantages : - Partage public de l'état des services - Aucune authentification requise pour voir - Historique d'uptime visible
Gestion des notifications¶
Slack¶
- Settings → Notifications → + Add New Notification
- Notification Type : Slack
- Webhook URL : Obtenir depuis Slack Incoming Webhooks
- Aller sur https://api.slack.com/apps
- Create New App → Incoming Webhooks → Add New Webhook
- Copier l'URL
- Channel : #monitoring (ou autre)
- Username : Uptime Kuma
- Test → doit envoyer un message dans Slack
- Save
Discord¶
- Settings → Notifications → + Add New Notification
- Notification Type : Discord
- Discord Webhook URL :
- Discord → Server Settings → Integrations → Webhooks → New Webhook
- Copier l'URL
- Username : Uptime Kuma
- Test → doit envoyer un message dans Discord
- Save
Email (SMTP)¶
- Settings → Notifications → + Add New Notification
- Notification Type : Email (SMTP)
- Hostname : smtp.gmail.com (ou autre)
- Port : 587 (TLS) ou 465 (SSL)
- Security : TLS ou SSL/TLS
- Username : votre-email@gmail.com
- Password : App Password (Gmail) ou mot de passe
- From Email : votre-email@gmail.com
- To Email : destinataire@example.com
- Test → doit envoyer un email
- Save
Note Gmail : Utilisez un App Password, pas votre mot de passe principal.
Webhook (personnalisé)¶
Pour intégrations custom (Zapier, n8n, etc.) :
- Settings → Notifications → + Add New Notification
- Notification Type : Webhook
- POST URL : https://your-webhook-url.com/endpoint
- Content Type : application/json
- Body :
- Test → doit envoyer une requête POST
- Save
Gestion des utilisateurs¶
Ajouter un utilisateur¶
- Settings → Users
-
- Add New User
- Remplir :
- Username : nouveau-user
- Password : mot-de-passe-sécurisé
- Role : User (ou Admin)
- Save
Rôles : - Admin : Tous les droits (création monitors, notifications, users) - User : Lecture seule, ne peut pas modifier
Désactiver un utilisateur¶
- Settings → Users
- Trouver l'utilisateur
- Cliquer Disable
L'utilisateur ne peut plus se connecter.
API REST¶
Uptime Kuma expose une API WebSocket pour intégrations programmatiques.
Connexion WebSocket¶
const io = require('socket.io-client');
const socket = io('http://192.168.1.82:3001', {
auth: {
username: 'admin',
password: 'votre-mot-de-passe'
}
});
socket.on('connect', () => {
console.log('Connected to Uptime Kuma');
});
socket.on('monitorList', (monitors) => {
console.log('Monitors:', monitors);
});
Endpoints disponibles¶
| Événement | Description |
|---|---|
login | Authentification |
monitorList | Liste des monitors |
heartbeatList | Liste des heartbeats (pings) |
addMonitor | Ajouter un monitor |
deleteMonitor | Supprimer un monitor |
getMonitor | Obtenir les détails d'un monitor |
Documentation complète : https://github.com/louislam/uptime-kuma/wiki/API
Intégration Homer¶
Uptime Kuma est référencé dans le dashboard Homer :
- name: "Monitoring & Logs"
items:
- name: "Uptime Kuma"
logo: "assets/tools/uptime-kuma.png"
subtitle: "Service uptime monitoring"
url: "http://192.168.1.82:3001"
Accès depuis Homer : http://192.168.1.82:8080
Troubleshooting¶
Uptime Kuma ne démarre pas¶
# Vérifier le conteneur
docker ps -a | grep uptime-kuma
# Si absent, le relancer
docker start uptime-kuma
# Vérifier les logs
docker logs uptime-kuma
Monitors toujours "Down"¶
# Vérifier que le service cible est accessible depuis le serveur
curl http://192.168.1.82:11434/api/tags
# Vérifier les logs Uptime Kuma
docker logs uptime-kuma --tail 50
# Redémarrer Uptime Kuma
docker restart uptime-kuma
Notifications ne fonctionnent pas¶
- Tester la notification :
- Settings → Notifications → Edit → Test
-
Vérifier le message d'erreur
-
Vérifier les credentials :
- Webhook URL valide
- SMTP password correct
-
Channel/Email exist
-
Vérifier les logs :
Erreur "Database is locked"¶
# Arrêter Uptime Kuma
docker stop uptime-kuma
# Attendre 5 secondes
sleep 5
# Redémarrer
docker start uptime-kuma
Interface lente ou freeze¶
# Vérifier la taille de la base de données
du -sh /data/uptime-kuma/kuma.db
# Si trop volumineuse (> 1 GB), nettoyer les anciens logs
# Via l'interface : Settings → Data Retention → Cleanup
# Ou redémarrer le conteneur
docker restart uptime-kuma
Maintenance¶
Mise à jour Uptime Kuma¶
# Pull la dernière image
docker pull louislam/uptime-kuma:1
# Arrêter et supprimer l'ancien conteneur
docker stop uptime-kuma
docker rm uptime-kuma
# Relancer avec la nouvelle image (via Ansible)
cd /opt/probatiovault-ia-server/ansible
ansible-playbook -i inventory/hosts playbooks/install-uptime-kuma.yml
Important : Les données dans /data/uptime-kuma sont préservées.
Sauvegarde des données¶
# Sauvegarder la base de données
sudo cp /data/uptime-kuma/kuma.db /tmp/kuma-backup-$(date +%Y%m%d).db
# Ou avec tar
sudo tar czf /tmp/uptime-kuma-backup-$(date +%Y%m%d).tar.gz /data/uptime-kuma/
# Copier vers NAS
cp /tmp/uptime-kuma-backup-*.tar.gz /mnt/nas/backups/
Restaurer depuis une sauvegarde¶
# Arrêter Uptime Kuma
docker stop uptime-kuma
# Restaurer la base de données
sudo cp /tmp/kuma-backup-20260211.db /data/uptime-kuma/kuma.db
# Ou restaurer depuis tar
sudo tar xzf /tmp/uptime-kuma-backup-20260211.tar.gz -C /
# Redémarrer Uptime Kuma
docker start uptime-kuma
Nettoyage des anciens logs¶
Pour libérer de l'espace et améliorer les performances :
- Settings → Maintenance
- Clear all statistics → Supprime tous les heartbeats anciens
- Clear inactive monitors → Supprime les monitors désactivés
Ou via SQL :
docker exec -it uptime-kuma /bin/bash
sqlite3 /app/data/kuma.db
DELETE FROM heartbeat WHERE time < datetime('now', '-90 days');
VACUUM;
.quit
exit
Alerting avancé¶
Escalation de notifications¶
Pour envoyer des alertes à différents canaux selon la gravité :
- Première alerte (Slack) :
- Créer notification Slack
-
Associer à tous les monitors
-
Escalation (Email au responsable) :
- Créer notification Email
-
Associer uniquement aux monitors critiques (Ollama, Plex)
-
Configuration par monitor :
- Monitor critique : Slack + Email
- Monitor secondaire : Slack uniquement
Alertes multiples (rate limiting)¶
Pour éviter le spam de notifications :
- Éditer un monitor
- Resend Notification if Down :
- Cocher pour ré-alerter si toujours down
- Resend Interval : 60 minutes (ou plus)
Plages horaires (maintenance windows)¶
Pour désactiver les alertes pendant maintenance :
- Éditer un monitor
- Maintenance :
- Activer "Schedule Maintenance"
- Start : 2026-02-15 02:00
- End : 2026-02-15 06:00
- Recurring : Tous les dimanches 2h-6h
Pendant cette période, aucune alerte ne sera envoyée.
Ressources¶
- GitHub officiel : https://github.com/louislam/uptime-kuma
- Documentation : https://github.com/louislam/uptime-kuma/wiki
- Discord : https://discord.gg/uptime-kuma
- Démo en ligne : https://demo.uptime.kuma.pet/
Résumé des ports¶
| Service | Port | Protocole | Accès |
|---|---|---|---|
| Uptime Kuma Web | 3001 | HTTP | LAN uniquement |
| Uptime Kuma WebSocket | 3001 | WS | LAN uniquement |
Comparaison avec alternatives¶
| Fonctionnalité | Uptime Kuma | UptimeRobot | Pingdom |
|---|---|---|---|
| Hébergement | Auto-hébergé | Cloud | Cloud |
| Coût | Gratuit | $7/mois (50 monitors) | $10/mois |
| Monitors | Illimités | 50 (plan payant) | 10 (plan de base) |
| Notifications | Illimitées | Limitées | Limitées |
| Status Page | ✅ Oui | ✅ Oui (payant) | ✅ Oui (payant) |
| API | ✅ WebSocket | ✅ REST | ✅ REST |
| Docker Container | ✅ Oui | ❌ Non | ❌ Non |
| Open Source | ✅ Oui | ❌ Non | ❌ Non |
Avantages Uptime Kuma : - ✅ Gratuit, illimité - ✅ Données privées (pas de cloud externe) - ✅ Monitors spécifiques (Docker, databases locales) - ✅ Customisation totale
Avantages UptimeRobot/Pingdom : - ✅ Monitoring depuis plusieurs localisations géographiques - ✅ Pas de gestion infrastructure - ✅ Support professionnel