#!/bin/bash # ⚙️ Configuration KUMA_URL="http://127.0.0.1:3001" # URL de ton Uptime Kuma API_KEY="uk1_b-HORr0QCowCugxkPfnKvV_pdH9aXndCkNlKdSb2" # Ta clé API CHECK_INTERVAL=60 # Intervalle de check en secondes # Liste des conteneurs avec port exposé (nom:port) containers=$(docker ps --format '{{.Names}} {{.Ports}}' | grep -oP '^\S+.*->(\d+)/tcp' | awk '{print $1 ":" $NF}' | sed 's#/tcp##' | sed 's/->/:/') # Fonction pour créer ou mettre à jour un monitor create_monitor() { local name=$1 local url=$2 # Vérifier si le monitor existe déjà monitor_id=$(curl -s -H "Authorization: Bearer $API_KEY" "$KUMA_URL/api/monitors" | jq -r ".[] | select(.name==\"$name\") | .id") if [ -z "$monitor_id" ]; then echo "Création du monitor: $name -> $url" curl -s -X POST "$KUMA_URL/api/monitor" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $API_KEY" \ -d "{ \"type\": \"http\", \"name\": \"$name\", \"url\": \"$url\", \"interval\": $CHECK_INTERVAL }" else echo "Monitor existant: $name, mise à jour URL -> $url" curl -s -X PUT "$KUMA_URL/api/monitor/$monitor_id" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $API_KEY" \ -d "{ \"url\": \"$url\", \"interval\": $CHECK_INTERVAL }" fi } # Parcours des conteneurs et création/mise à jour des monitors for c in $containers; do name=$(echo $c | cut -d: -f1) port=$(echo $c | cut -d: -f2) url="http://127.0.0.1:$port" create_monitor "$name" "$url" done echo "Synchronisation Docker → Uptime Kuma terminée."