Configuration des versions de référence et gestion des serveurs
Chaque serveur peut utiliser un ou plusieurs modes de collecte, non exclusifs :
| Mode | Badge | Source | Données collectées | Configuration requise |
|---|---|---|---|---|
| Basic | (aucun) | /status.php |
Version Nextcloud uniquement | Aucune : fonctionne dès l'ajout du serveur |
| Étendu | ⚡ Étendu | /ocs/v2.php/apps/serverinfo/… |
Version NC, PHP, serveur web, OPcache, Redis, base de données, utilisateurs actifs… | Token serverinfo à renseigner dans la zone "Sondes" de la carte serveur |
| Push | 📡 Push | Script cron sur l'instance distante | Même données qu'Étendu + mises à jour Docker disponibles + résultats occ setupchecks |
Générer un token Push depuis la carte serveur, puis déployer le script bash sur l'instance Nextcloud |
⚠️ L'application Monitor doit être activée dans Nextcloud pour que l'API serverinfo fonctionne.
Vérifier dans Paramètres → Applications → Outils système → Monitor (ou via occ app:enable serverinfo).
ℹ️ Choisissez votre type d'installation ci-dessous : les trois commandes s'adaptent.
Le champ reste modifiable pour les cas particuliers (chemin occ différent, linuxserver, Podman…).
TOKEN=$(openssl rand -hex 32) && \ sudo -u www-data php /var/www/cloud/occ config:app:set serverinfo token --value "$TOKEN" && \ echo "Token généré : $TOKEN"
sudo -u www-data php /var/www/cloud/occ config:app:get serverinfo token
sudo -u www-data php /var/www/cloud/occ config:app:delete serverinfo token
wget -qO- --header="NC-Token: VOTRE_TOKEN" "https://cloud.example.com/ocs/v2.php/apps/serverinfo/api/v1/info?format=json"
Remplacer VOTRE_TOKEN et l'URL par ceux du serveur concerné.
Une réponse JSON valide confirme que le token et l'app Monitor sont corrects.
⚠️ Le script tourne en root via cron et exécute occ en tant que www-data.
Sur l'instance Nextcloud : installer jq (et skopeo pour la détection des mises à jour Docker),
et vérifier que occ est exécutable. Générez d'abord un token Push depuis la carte serveur,
puis utilisez le bouton « Script ».
ℹ️ Le script collecte les données (occ setupchecks + Docker) une seule fois, puis les pousse
vers tous les monitors listés dans /etc/ncstatuscheck/targets-<instance>.conf.
La décision d'envoi (déclenchement immédiat ou intervalle) est prise par monitor.
➕ Plusieurs monitors (fan-out) : pour qu'un 2ᵉ NcStatusCheck surveille la même instance, ne retouchez pas le script :
depuis l'admin de l'autre monitor, exécutez uniquement l'étape 3 (la ligne targets, idempotente).
Une seule collecte, push vers les deux.
🐳 Nextcloud en Docker (image officielle, compose, AIO) : le script s'installe sur
l'hôte (cron root + accès au démon Docker), jamais dans le conteneur ;
occ passe par docker exec. Choisissez le type d'installation dans le
générateur de script : le champ occ est prérempli
(ex. docker exec -u www-data nextcloud php occ ;
AIO : conteneur nextcloud-aio-nextcloud).
Test rapide : docker exec -u www-data <conteneur> php occ status : si du JSON sort, la sonde fonctionnera.
🖥️ Plusieurs instances Nextcloud sur un même serveur : chacune a son propre script/cron/targets/log,
suffixés par un slug dérivé de l'URL (ex. latest_ezeo_coop).
Générez le script séparément depuis la carte de chaque serveur : aucune collision.
🔁 Garder le script à jour : un marqueur ↑ orange (colonne Sondes du tableau de bord, page détail,
et carte serveur ici) signale un script obsolète : régénérez-le et redéployez-le.
En venant d'un ancien script (chemins non suffixés), supprimez d'abord
/etc/cron.d/ncstatuscheck, /usr/local/bin/ncstatuscheck-push.sh et targets.conf
pour éviter un double push.
/usr/local/bin/ncstatuscheck-push.sh /etc/ncstatuscheck/<instance>.conf
Attendu : OK : données envoyées à …. Sinon : 401 = couple URL/token incorrect ;
setupchecks a échoué = OCC_CMD ou sudoers www-data.
Ajoutez ou supprimez des serveurs Nextcloud à surveiller :
L'URL suffit pour commencer : sans jeton, la version Nextcloud est collectée via /status.php.
Après l'ajout, vous arrivez directement sur la carte du serveur pour configurer les sondes — c'est là que les jetons se saisissent et se testent.
Configurez les versions de référence pour chaque branche Nextcloud :
Nextcloud ne publie pas officiellement quand une version devient « prête pour la prod » : ce seuil est une estimation empirique, ajustable ici.
Dès qu'une branche atteint ce seuil, elle devient « stable » ; la précédente passe « oldstable » ; les plus anciennes « deprecated ». Les branches au-dessus du seuil restent « dev » tant qu'elles ne l'ont pas atteint. Une branche verrouillée « Manuel » n'est jamais recalculée.
Un patch tout juste sorti n'est pas exigé immédiatement : Nextcloud a déjà publié un correctif remplacé quelques jours après par un patch buggé. Tant que le patch minimal requis (« min_secure ») a moins de ce nombre de jours, les instances ne sont considérées « à mettre à jour » que vis-à-vis du patch précédent, déjà éprouvé. Ne s'applique qu'aux branches resynchronisées (la date de sortie n'est connue que via 🔄 Resynchroniser).
Configurez les versions PHP supportées :
📖 Page officielle des prérequis PHP (Nextcloud)
Signalez manuellement une app (ou une plage de versions) buggée : l'avertissement s'applique à toutes les instances surveillées qui l'utilisent.
Versions impliquées : laisser vide ou * = toutes les versions ; sinon une condition par <, >, >=, <=, =, ou une plage (« branche ») ex. >=4.0 <5.0. App id = identifiant technique (ex. calendar).
Recevez une alerte (email et/ou Mattermost) au changement d'état d'un serveur et sur les signaux lents (SSL, version, push, audit, apps, échec setupchecks), sans avoir à garder le tableau de bord ouvert.
Tout se configure dans config.php (constantes ALERT_*) : ces réglages portent des secrets et choisissent une cible sortante, ils n'ont donc pas d'équivalent web. Cette page les documente, affiche l'état effectif et permet de tester l'envoi.
Génère les règles qui n'autorisent que les adresses IP connues à atteindre le monitor : un inconnu ne peut alors même pas parler à l'application pour y chercher une faille.
C'est une couche de défense en profondeur : elle ne remplace ni l'authentification Basic, ni les jetons Push, ni auth_require_admin(). Cette page génère un texte à relire et à coller — elle ne touche jamais votre serveur web ni votre pare-feu.
🔒 Indisponible sur l'instance de démonstration. Cet onglet résout et affiche les adresses IP réelles des serveurs surveillés — précisément ce que la démo masque. Il fonctionne normalement sur une instance protégée par authentification.