Uptime-Kuma

🎯 Objectifs :
  • Installer et déployer Uptime-Kuma
  • Exposer Uptime Kuma
  • (Optionnel) Protéger Uptime-Kuma avec Authentik

Uptime-Kuma est un conteneur dédié au monitoring de services. Le principe est d'envoyer des requêtes régulières à vos services afin de déterminer s'ils sont en lignes ou non, et de vous alerter le cas échéant. Uptime-Kuma est développé par le meme développeur que Dockge.

picture

Installation


Structure des dossiers

root
└── docker
    └── uptime-kuma
        ├── date
        └── compose.yaml

Ouvrez Dockge, cliquez sur compose, appelez la stack uptime-kuma puis copiez collez ceci :

version: "3.3"
services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    volumes:
      - /docker/uptime-kuma/uptime-kuma-data:/app/data
    ports:
      - 3200:3001 # <Host Port>:<Container Port>
    restart: always
Astuce : ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises à jour
services:
  uptime-kuma:
    #...
    labels:
      - com.centurylinklabs.watchtower.enable=true

Vous n'avez plus qu'à accéder à l'outil via http://ipdevotreserveur:3200.

  • En cas d'échec : vérifiez les règles de votre pare-feu.

Exposer avec Swag


📋 Au préalable :

Nous partons du principe que vous avez le sous-domaine stats.mondomaine.fr avec un CNAME qui pointe vers mondomaine.fr dans votre zone DNS. Et que bien sûr, à moins que vous utilisiez Cloudflare Zero Trust, le port 443 de votre box pointe bien sur le port 443 de votre serveur via les règles NAT.

Dans les dossiers de Swag, créez le fichier stats.subdomain.conf.

Astuce pour les allergiques au terminal : vous pouvez utiliser File Browser pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
sudo vi /docker/swag/config/nginx/proxy-confs/stats.subdomain.conf

Entrez en modification avec la touche i et collez la configuration ci-dessous :

## Version 2023/12/19

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name stats.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    #if ($lan-ip = yes) { set $geo-whitelist yes; }
    #if ($geo-whitelist = no) { return 404; }
    if ($geo-blacklist = no) { return 404; }

    # enable for ldap auth (requires ldap-location.conf in the location block)
    #include /config/nginx/ldap-server.conf;

    # enable for Authelia (requires authelia-location.conf in the location block)
    #include /config/nginx/authelia-server.conf;

    # enable for Authentik (requires authentik-location.conf in the location block)
    #include /config/nginx/authentik-server.conf;

    location / {
        # enable the next two lines for http auth
        #auth_basic "Restricted";
        #auth_basic_user_file /config/nginx/.htpasswd;

        # enable for ldap auth (requires ldap-server.conf in the server block)
        #include /config/nginx/ldap-location.conf;

        # enable for Authelia (requires authelia-server.conf in the server block)
        #include /config/nginx/authelia-location.conf;

        # enable for Authentik (requires authentik-server.conf in the server block)
        #include /config/nginx/authentik-location.conf;

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app uptime-kuma;
        set $upstream_port 3001;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }
}

Appuyez sur Echap puis sauvegardez et quittez en tapant :x puis en appuyant sur Entrée.

Dans Dockge, modifiez la stack Uptime-Kuma, et ajoutez le réseau de swag. Pour rappel :

services:
  nomduservice:
     container_name: #...
      # ... 
     networks: # Relie le conteneur au réseau custom. A faire pour chaque conteneur à exposer de la stack 
      - swag # Nom du réseau déclaré dans la stack
    
networks: # Défini le réseau custom
  swag: # Nom du réseau déclaré dans la stack
    name: swag_default # Nom véritable du réseau externe
    external: true # Précise que c'est un réseau à rechercher en externe
  • Ici nous partons du principe que le nom du réseau de Swag est swag_default.
Astuce :

Vous pouvez protéger cette app avec Authentik en ouvrant stats.subodmain.conf et en retirant les # devant include /config/nginx/authentik-server.conf; et include /config/nginx/authentik-location.conf;. N'oubliez pas de créer une application et un fournisseur dans Authentik. Si vous souhaitez que la page publique de stats soit joignable par tout le monde sans authentification:
  • Editez le fournisseur d'Uptime-Kuma
  • Dans paramètres avancés du protocole > chemins authentifiés, saisissez :
    ^/$
    ^/status
    ^/assets/
    ^/assets
    ^/icon.svg
    ^/api/.*
    ^/upload/.*
    ^/metrics
    

Déployez à nouveau la stack.

Uptime-Kuma sera ainsi joignable directement depuis internet en tapant https://stats.mondomaine.fr.

Astuce : Si vous utilisez Authentik et que vous ne craignez pas d'exposer votre panneau admin à votre réseau local, vous pouvez désactiver l'authentification d'Uptime-Kuma via les paramètres, afin de ne garder que celle d'Authentik.