Skip to content

Uptime Kuma

Outil de monitoring auto-hébergé pour surveiller la disponibilité des services et hôtes de l'infrastructure. Remplace les checks manuels et envoie des alertes en cas de panne.

Informations

Paramètre Valeur
URL locale http://192.168.1.101:3003
Admin public https://uptime.ncls.ltd (Authelia one_factor)
Status page https://status.ncls.ltd (public, sans authentification)
Port 3003 (hôte) → 3001 (container)
Image louislam/uptime-kuma:2
LXC LXC 101 – Management
Stack GitOps — 101-admin/uptime-kuma/docker-compose.yml
Données /opt/docker/uptime-kuma/data
Notifications SMTP Gmail

Token API Proxmox

Token en lecture seule utilisé par les moniteurs JSON Query pour consulter l'API Proxmox.

Champ Valeur
Token ID monitoring@pve!kuma
Rôle MonitoringReadOnly (Sys.Audit, VM.Audit, Datastore.Audit)
Header Authorization: PVEAPIToken=monitoring@pve!kuma=<SECRET>

Ignorer erreur TLS sur les endpoints Proxmox (certificat auto-signé).

⚠️ Après migration/réinstallation PVE : l'utilisateur monitoring@pve et son token sont dans /etc/pve/ (rootfs host), non sauvegardés par PBS. Les recréer via restore-host-artefacts.sh (voir ci-dessous).

Restauration après migration PVE

En cas de réinstallation du host Proxmox (migration disque, disaster recovery), les artefacts suivants sont perdus car ils sont dans rpool/ROOT (non couvert par PBS) :

Artefact Localisation Impact
User monitoring@pve + token /etc/pve/user.cfg Monitors LXC/PVE todos DOWN
Service Glances /etc/systemd/system/glances.service Monitor Glances DOWN + thermals DOWN
Scripts cron monitoring /usr/local/bin/monitor-*.sh, /etc/cron.d/monitor-* Monitors push disques/thermals DOWN

Restauration en une commande :

bash /mnt/lxc-data/101-admin/uptime-kuma/restore-host-artefacts.sh

Ce script (idempotent) recrée le user/token PVE, installe Glances, régénère les scripts cron depuis les tokens stockés dans kuma.db, et patche la DB Kuma avec le nouveau token.

Glances (Host PVE)

Glances est installé directement sur le host Proxmox (apt install glances) et exposé comme service systemd sur le port 61208.

Paramètre Valeur
Installation apt install glances (host PVE)
Service glances.service — systemd, démarrage automatique
Port 61208
API http://192.168.1.21:61208/api/4/

Rôle dans Uptime Kuma

Glances est utilisé uniquement pour le monitor HTTP "Glances (PVE Host)" (groupe Proxmox Host) — il vérifie que le service tourne et répond.

Il n'est plus utilisé pour lire les températures ou les vitesses ventilateurs. Depuis la session 3 (2026-04-02), le script monitor-thermals.sh utilise directement sensors (lm-sensors) pour lire coretemp-isa-0000 (CPU) et it8628-isa-0a40 (carte mère + ventilateurs).

Prérequis module it87

Le capteur it8628-isa-0a40 (puce IT8628E) nécessite que le module kernel it87 soit chargé :

# Chargement immédiat
modprobe it87

# Persistance (survit au reboot)
# /etc/modules-load.d/it87.conf contient : it87

Sans ce module, sensors ne liste pas les capteurs MB/fans — ni les températures carte mère, ni les vitesses ventilateurs.

Indépendance des monitors

Le service Glances est indépendant du monitoring thermique :

  • Si Glances s'arrête → seul le monitor "Glances (PVE Host)" passe DOWN
  • Les monitors Températures & Ventilateurs continuent de fonctionner (ils n'utilisent plus Glances)
  • La perte du module it87 (ex. après réinstallation kernel) est la vraie cause de panne des capteurs MB/fans
# Vérifier l'état des capteurs après reboot
sensors coretemp-isa-0000
sensors it8628-isa-0a40
# Si erreur « No sensors found » : modprobe it87

Configuration des Moniteurs

Groupe : Réseau

Nom Type Cible Notes
Freebox Ping 192.168.1.254 Routeur LAN
DNS Cloudflare Ping 1.1.1.1 Résolution publique
DNS Google Ping 8.8.8.8 Backup DNS

Groupe : Proxmox Host

Nom Type URL / Cible Config
Proxmox WebUI HTTP(s) https://192.168.1.21:8006 Ignorer TLS ✅
Glances (PVE Host) HTTP(s) http://192.168.1.21:61208
PVE Node Status HTTP(s) – JSON Query https://192.168.1.21:8006/api2/json/nodes/pve/status Token header ✅, Ignorer TLS ✅, Path : $.data.uptime, Condition : > 0

Groupe : LXC – Statuts (via API Proxmox)

Pour chaque LXC, vérifie que chaque conteneur est running du point de vue de Proxmox.

  • Type : HTTP(s) – JSON Query
  • URL : `https://192.168.1.21:8006/api2/json/nodes/pve/lxc/{ID}/status/current |
  • Json Path : $.data.status |
  • Valeur attendue : running |

LXC couverts : 100 (Media), 101 (Management), 102 (PBS), 103 (Gateway), 104 (Services), 105 (Web).

Groupe : LXC 100 – Média

Chaque service exposé en HTTP à http://192.168.1.100.

Voir LXC 100

Groupe : LXC 101 – Management

Nom Type URL Notes
Homepage HTTP(s) http://192.168.1.101:3000
Portainer HTTP(s) https://192.168.1.101:9443 Ignorer TLS ✅
Zensical HTTP(s) http://192.168.1.101:8001
CoolerControl HTTP(s) http://192.168.1.101:11987
Uptime Kuma (self) HTTP(s) http://localhost:3001 Heartbeat interne

Groupe : LXC 102 – PBS

Nom Type URL Notes
PBS WebUI HTTP(s) https://192.168.1.102:8007 Ignorer TLS ✅

Groupe : LXC 103 – Network Gateway

Nom Type Cible Notes
Caddy HTTP Port TCP 192.168.1.103 : 80 Redirect check
Caddy HTTPS Port TCP 192.168.1.103 : 443
Authelia HTTP(s) http://192.168.1.103:9091

Groupe : LXC 104 – Services

Nom Type URL
Endurain HTTP(s) http://192.168.1.104:8080
FreshRSS HTTP(s) http://192.168.1.104:8787
Romm HTTP(s) http://192.168.1.104:8082
Gramps Web HTTP(s) http://192.168.1.104:5152

Groupe : LXC 105 – Web

Monitors de type HTTP(s) vers les URLs directes des services WordPress.

⚠️ Investigation en cours (2026-04-02) : les ports 801x ne sont pas joignables depuis le réseau local — monitors en état DOWN, cause non résolue. Anciennement en type Port TCP (idem symptôme).

Nom Type URL
WP nliautaud.fr HTTP(s) http://192.168.1.105:8010
WP alicesuretcanale.fr HTTP(s) http://192.168.1.105:8011
WP lmdp.ncls.ltd HTTP(s) http://192.168.1.105:8012

Groupe : Domaines HTTPS publics (SSL)

Vérifie la disponibilité et la validité du certificat SSL (alerte à J-14 avant expiry).

Nom URL
ncls.ltd https://ncls.ltd
home.ncls.ltd https://home.ncls.ltd
flix.ncls.ltd https://flix.ncls.ltd
auth.ncls.ltd https://auth.ncls.ltd
pbs.ncls.ltd https://pbs.ncls.ltd
portainer.ncls.ltd https://portainer.ncls.ltd
seer.ncls.ltd https://seer.ncls.ltd
docs.ncls.ltd https://docs.ncls.ltd
run.ncls.ltd https://run.ncls.ltd
feed.ncls.ltd https://feed.ncls.ltd
retro.ncls.ltd https://retro.ncls.ltd
genea.ncls.ltd https://genea.ncls.ltd
glances.ncls.ltd https://glances.ncls.ltd
host.ncls.ltd https://host.ncls.ltd
nliautaud.fr https://nliautaud.fr
alicesuretcanale.fr https://alicesuretcanale.fr
lmdp.ncls.ltd https://lmdp.ncls.ltd

Groupe : Espaces Disques

Moniteurs de type Push — le host Proxmox envoie les métriques via cron toutes les 3 min.

Script : /usr/local/bin/monitor-disk-space.sh
Cron : /etc/cron.d/monitor-disk-space (*/3 * * * *)

Nom Cible Seuil Méthode
Host root (/) / 85% df
lxc-data (/mnt/lxc-data) /mnt/lxc-data 85% df
scratch (/mnt/scratch) /mnt/scratch 85% df
media (/mnt/media) /mnt/media 90% df
storage (/mnt/storage) /mnt/storage 85% df
pbs-secondary (/mnt/pbs-secondary) /mnt/pbs-secondary 85% df
ZFS rpool/data (LXC rootfs) rpool/data 80% zfs quota
ZFS rpool/pbs (Backups) rpool/pbs 80% zfs quota

Architecture post-migration NVMe/ZFS (2026-04-02) — LVM thin pool remplacé par ZFS avec quotas.

ping = % utilisé (graphe historique) ; msg = détail espace libre.

Groupe : Températures & Ventilateurs

Moniteurs de type Push — le host Proxmox envoie les métriques via cron toutes les 3 min.

Sources : sensors coretemp-isa-0000 (CPU) + sensors it8628-isa-0a40 (carte mère + fans) via lm-sensors + smartctl
Script : /usr/local/bin/monitor-thermals.sh
Cron : /etc/cron.d/monitor-thermals (*/3 * * * *)

Prérequis : module it87 chargé (puce IT8628E) — persisté dans /etc/modules-load.d/it87.conf. Sans ce module, lm-sensors ne voit pas les capteurs MB/fans.

Nom Source Seuil alerte
CPU Package coretemp-isa-0000 (Package id 0) ≥ 80°C
Carte mère it8628-isa-0a40 (SYSTIN/CPUTIN, max valide) ≥ 50°C
Ventilateur 1 it8628-isa-0a40 fan2 (boîtier) < 100 RPM (calé)
Ventilateur 2 it8628-isa-0a40 fan3 (boîtier) < 100 RPM (calé)
HDD media (sdc) smartctl /dev/sdc attr 194 ≥ 50°C
HDD storage (sdd) smartctl /dev/sdd attr 194 ≥ 45°C

Pas de ventilateur CPU dédié — fan2 et fan3 sont les deux ventilateurs boîtier. Capteurs bogus exclus (tensions mal étiquetées comme températures).
ping = valeur brute (°C ou RPM) pour le graphe historique.