Aller au contenu

Uptime Kuma

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.

Installation

Docker (Recommandé)

# 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

Docker — Localhost seulement

# 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

Docker Compose

# 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

Docker avec surveillance des conteneurs

# 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

Installation sans Docker

# 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

Commandes de base

CommandeDescription
docker run -d -p 3001:3001 louislam/uptime-kuma:2Démarrer le conteneur Uptime Kuma
docker compose up -dDémarrer avec Docker Compose
docker compose downArrêter tous les services
docker compose logs -fSuivre les journaux des conteneurs
docker restart uptime-kumaRedémarrer le conteneur
docker stop uptime-kumaArrêter le conteneur
docker start uptime-kumaDémarrer le conteneur arrêté
node server/server.jsDémarrer sans Docker
pm2 start server/server.js --name uptime-kumaDémarrer avec PM2
pm2 restart uptime-kumaRedémarrer avec PM2
pm2 stop uptime-kumaArrêter avec PM2
pm2 logs uptime-kumaAfficher les journaux PM2

Commandes de mise à jour

Docker

# 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

Docker Compose

# Récupérer et recréer
docker compose pull
docker compose up -d

Sans Docker

cd uptime-kuma
git fetch --all
git checkout 2.1.3 --force
npm install --production
npm run download-dist
pm2 restart uptime-kuma

Types de surveillance

TypeDescription
HTTP(S)Surveiller la disponibilité du site web et le temps de réponse
HTTP(S) KeywordVérifier la présence de texte spécifique dans le corps de la réponse
HTTP(S) JSON QueryValider les valeurs de réponse JSON
TCP PortVérifier si un port TCP est ouvert et répond
PingPing ICMP pour la disponibilité de l’hôte
DNSSurveiller la résolution des enregistrements DNS
Docker ContainerSurveiller l’état de santé du conteneur
Steam Game ServerVérifier la disponibilité du serveur de jeu
MQTTSurveiller la connectivité du courtier MQTT
gRPCSurveiller la santé du service gRPC
RadiusVérification du serveur d’authentification RADIUS
GameDigSurveillance du serveur de jeu (plusieurs protocoles)
PushSurveillance passive via point de terminaison de battement de cœur
GroupGroupage logique des surveillance

Services de notification (90+)

Chat et messagerie

ServiceDescription
SlackWebhooks de canal et notifications bot
DiscordNotifications de canal basées sur webhook
TelegramNotifications API bot
Microsoft TeamsNotifications webhook entrantes
MattermostIntégration de chat auto-hébergé
Rocket.ChatNotifications webhook
Google ChatNotifications webhook d’espace
MatrixNotifications de chat décentralisé

Push et mobile

ServiceDescription
PushoverNotifications push mobile
GotifyServeur push auto-hébergé
ntfyNotifications pub/sub basées sur HTTP
PushbulletNotifications push multi-appareils
SignalNotifications de messagerie sécurisée
LINEIntégration LINE Notify

Gestion des incidents

ServiceDescription
PagerDutyAlertes d’incident et intervention
OpsgenieGestion des alertes et escalade
SquadcastGestion des incidents
Splunk On-CallRoutage d’alerte VictorOps
Better StackSurveillance de la disponibilité et gestion des incidents

Email et webhooks

ServiceDescription
SMTP EmailNotifications email personnalisées
WebhookAppels de point de terminaison HTTP personnalisés
Home AssistantDéclencheurs d’automatisation de maison intelligente
ApprisePasserelle de notification universelle

Variables d’environnement

VariableDescriptionPar défaut
UPTIME_KUMA_PORTPort du serveur3001
UPTIME_KUMA_HOSTAdresse de liaison::
DATA_DIRRépertoire de stockage des données./data
TZFuseau horaireUTC
UMASKMasque d’autorisation de fichier0000
NODE_EXTRA_CA_CERTSChemin des certificats CA personnalisés
SSL_CERTChemin du certificat SSL
SSL_KEYChemin de la clé privée SSL

Pages d’état

FonctionnalitéDescription
Plusieurs pagesCréer des pages d’état séparées pour différents services
Domaines personnalisésMapper les pages d’état à des noms de domaine personnalisés
CSS personnaliséStyliser les pages d’état avec CSS personnalisé
Publications d’incidentCréer des rapports d’incident visibles sur la page d’état
MaintenancePlanifier les fenêtres de maintenance
Groupes de surveillanceOrganiser les surveillance en groupes sur la page d’état

API Python (Automatisation)

# Installer le client API Python
pip install uptime-kuma-api

Exemples d’utilisation de l’API

OpérationDescription
Add monitorCréer les surveillance par programme
Edit monitorMettre à jour la configuration de surveillance
Delete monitorSupprimer les surveillance
Pause/ResumeBasculer l’état de surveillance
Get statusRécupérer l’état actuel de surveillance
Add notificationConfigurer les fournisseurs de notification
Get uptimeInterroger les statistiques de disponibilité

Configuration Docker Compose

# 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

Configuration de la sécurité

FonctionnalitéDescription
2FAAuthentification à deux facteurs pour la connexion
Reverse ProxyDéployer derrière Nginx, Caddy ou Traefik
SSL/TLSSSL intégré ou terminaison par reverse proxy
Limitation de débit de connexionProtection contre le forçage brut
Clés APIAccès API basé sur jetons

Configuration de reverse proxy

Nginx

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;
    }
}

Sauvegarde et restauration

CommandeDescription
docker cp uptime-kuma:/app/data ./backupSauvegarder le répertoire de données
docker cp ./backup/. uptime-kuma:/app/dataRestaurer à partir de la sauvegarde
docker volume inspect uptime-kumaTrouver le point de montage du volume

Dépannage

ProblèmeSolution
Impossible d’accéder à l’interface utilisateurVérifier la liaison du port: docker port uptime-kuma
Erreurs de volume NFSUtiliser les répertoires locaux, pas les systèmes de fichiers réseau
Erreurs WebSocketConfigurer le reverse proxy pour la mise à niveau WebSocket
Conteneur ne démarre pasVérifier les journaux: docker logs uptime-kuma
Persistance des données perdueS’assurer que le volume -v uptime-kuma:/app/data est utilisé
Échec de la surveillance DockerMonter docker.sock: -v /var/run/docker.sock:/var/run/docker.sock:ro

Plates-formes supportées

PlateformeÉtat
Linux (x64, ARM)Supporté
Windows 10+ (x64)Supporté
macOSSupporté
Docker DesktopSupporté
KubernetesVia image Docker
FreeBSD/OpenBSDNon supporté
Replit/HerokuNon supporté

Meilleures pratiques

  • 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