Superviser ses services avec Uptime Kuma

Superviser ses services avec Uptime Kuma

Installez votre propre service de monitoring "à la UptimeRobot" auto-hébergé. Uptime Kuma surveille vos sites web, API, ports, bases de données et certificats SSL, avec notifications Discord, Telegram, email et page de statut publique.

Introduction

Uptime Kuma est l'alternative open-source à UptimeRobot, Pingdom et StatusCake. Il monitore en continu :

  • HTTP/HTTPS (avec validation du certificat SSL)
  • Ports TCP/UDP ouverts
  • Ping ICMP
  • Bases de données (MySQL, PostgreSQL, MongoDB, Redis)
  • DNS résolus
  • Steam game servers
  • Docker containers

Le tout avec 90+ canaux de notification et des pages de statut publiques personnalisables.

Prérequis

  • VPS Linux avec Docker installé
  • Domaine pointant vers le VPS (optionnel mais recommandé)
  • Port 3001 accessible

Étape 1 : Lancer Uptime Kuma avec Docker

Créez le volume et le conteneur :

sudo docker volume create uptime-kuma
sudo docker run -d \
  --name uptime-kuma \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  louislam/uptime-kuma:latest

Vérifiez que le conteneur tourne :

sudo docker ps | grep uptime-kuma

Étape 2 : Première connexion

Ouvrez votre navigateur :

http://IP_DE_VOTRE_VPS:3001

À la première connexion, créez votre compte administrateur (utilisateur + mot de passe).

Étape 3 : Ajouter un moniteur HTTP

Cliquez sur Add New Monitor.

Champs principaux :

  • Monitor Type : HTTP(s)
  • Friendly Name : Mon Site
  • URL : https://votre-site.com
  • Heartbeat Interval : 60 secondes (par défaut)
  • Retries : 3 (nombre de tentatives avant déclencher l'alerte)
  • Accepted Status Codes : 200-299

Cliquez sur Save. Uptime Kuma commence immédiatement à monitorer.

Étape 4 : Configurer une notification Discord

Settings → Notifications → Setup Notification.

  • Notification Type : Discord
  • Friendly Name : Alertes VeryCloud
  • Discord Webhook URL : https://discord.com/api/webhooks/XXX/YYY
  • Cliquez sur Test pour vérifier
  • Save

Retournez sur votre moniteur, onglet Notifications, et cochez Alertes VeryCloud.

Étape 5 : Moniteurs avancés

TCP Port

Vérifier qu'un serveur Minecraft répond :

  • Monitor Type : TCP Port
  • Hostname : mc.votre-domaine.com
  • Port : 25565

Ping ICMP

  • Monitor Type : Ping
  • Hostname : IP_DU_SERVEUR

Certificat SSL expirant

Sur un moniteur HTTPS, activez Notify when certificate expires et définissez le seuil (ex: 14 jours).

Base de données

  • Monitor Type : MySQL/MariaDB
  • Connection String : mysql://user:password@host:3306/database

Étape 6 : Créer une page de statut publique

Status Pages → Add New Status Page.

  • Slug : verycloud → URL accessible sur /status/verycloud
  • Title : Statut VeryCloud
  • Description : État en temps réel de nos services
  • Sélectionnez les moniteurs à afficher
  • Customisez les couleurs, le logo

La page est accessible publiquement sans authentification.

Étape 7 : Reverse proxy avec SSL (recommandé)

Configurez Nginx Proxy Manager ou Nginx classique pour exposer Uptime Kuma sur https://status.votre-domaine.com.

Configuration Nginx manuelle :

sudo nano /etc/nginx/sites-available/uptime-kuma
server {
    listen 80;
    server_name status.votre-domaine.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-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Activez et obtenez le SSL :

sudo ln -s /etc/nginx/sites-available/uptime-kuma /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d status.votre-domaine.com

Étape 8 : Sauvegarde

Uptime Kuma stocke tout dans le volume Docker. Pour sauvegarder :

sudo docker stop uptime-kuma
sudo tar -czf uptime-kuma-backup-$(date +%F).tar.gz \
  /var/lib/docker/volumes/uptime-kuma/_data
sudo docker start uptime-kuma

Pour automatiser, créez un cron :

sudo crontab -e
0 3 * * * docker stop uptime-kuma && tar -czf /backup/uptime-kuma-$(date +\%F).tar.gz /var/lib/docker/volumes/uptime-kuma/_data && docker start uptime-kuma

Dépannage

Conteneur ne démarre pas

sudo docker logs uptime-kuma --tail 50

Notifications Discord ne fonctionnent pas

Vérifiez que le webhook est valide (pas de typo) et testez avec un curl :

curl -H "Content-Type: application/json" \
  -d '{"content":"test"}' \
  https://discord.com/api/webhooks/XXX/YYY

Mise à jour

sudo docker pull louislam/uptime-kuma:latest
sudo docker stop uptime-kuma
sudo docker rm uptime-kuma
# Relancez la commande docker run de l'étape 1

Commandes utiles

# Logs en temps réel
sudo docker logs -f uptime-kuma

# Redémarrer
sudo docker restart uptime-kuma

# Mettre à jour
sudo docker pull louislam/uptime-kuma:latest
sudo docker stop uptime-kuma && sudo docker rm uptime-kuma
# (puis docker run de l'étape 1)

# Statistiques
sudo docker stats uptime-kuma

Conclusion

Uptime Kuma vous donne une supervision externe et indépendante de votre infrastructure. Combiné avec Netdata (monitoring interne), vous couvrez tous les angles : si votre VPS tombe complètement, c'est Uptime Kuma (hébergé ailleurs ou sur un autre node) qui vous alerte, alors que Netdata ne pourrait plus communiquer.

Ressources

Join our Discord community server

For any questions, suggestions, or just to chat with the community, join us on Discord!

900+Members