SEC.01
Le playbook
Le run démarre en lecture seule : les sondes de reconnaissance décident de la suite. Les étapes qui suivent sont adaptées à la distribution et à l'état trouvés — une vraie machine est rarement propre.
- 01recondistro et version : apt (Debian/Ubuntu) ou dnf (RHEL/Fedora/Rocky/Alma) ?
- 02reconMosquitto déjà présent ? quelle version ?
- 03reconservice actif ?
- 04reconconfig existante : listeners, allow_anonymous, password_file, include_dir conf.d ?
- 05reconle port 1883 est-il déjà pris (par quel processus) ?
- 06reconun pare-feu (ufw ou firewalld) est-il actif ?
- 07agirInstaller Mosquitto (si absent)vérif
- 08agirCréer l’utilisateur ${mqtt_user}vérif
- 09agirÉcouter avec authentificationvérif
- 10agirActiver et redémarrervérif
- 11agirOuvrir 1883 (seulement si exposition publique et pare-feu actif)vérif
- 12agirPublier avec authentificationvérif
SEC.02
Ce qu'elle vérifie
Chaque étape embarque sa propre vérification. Le run ne continue que si elle passe, donc ce que la recette annonce comme fait est ce qui est réellement sur le serveur.
- 01vérifInstaller Mosquitto (si absent)Vérifié par
command -v mosquitto mosquitto_passwdattendu : deux chemins - 02vérifCréer l’utilisateur ${mqtt_user}Vérifié par
grep -c "^${mqtt_user}:" /etc/mosquitto/passwdattendu : 1 - 03vérifÉcouter avec authentificationVérifié par
grep -rh "allow_anonymous false" /etc/mosquitto/ | head -1attendu : allow_anonymous false - 04vérifActiver et redémarrerVérifié par
systemctl is-active mosquittoattendu : active - 05vérifOuvrir 1883 (seulement si exposition publique et pare-feu actif)Vérifié par
ufw status 2>/dev/null | grep -c "^1883/tcp"; firewall-cmd --list-ports 2>/dev/null; trueattendu : 1883/tcp autorisé, ou aucun pare-feu actif - 06vérifPublier avec authentificationVérifié par
mosquitto_pub -h 127.0.0.1 -t servor/test -m ok -u ${mqtt_user} -P "$(cat /root/.servor/mosquitto-${mqtt_user}.pass)" && echo okattendu : ok
SEC.03
Les garde-fous
Les consignes non négociables que le run doit respecter, quoi qu'il trouve sur le serveur.
Jamais d’accès anonyme (allow_anonymous false). Ne réécris pas /etc/mosquitto/passwd avec -c s’il existe. Le mot de passe généré reste dans /root/.servor/ et n’est jamais affiché dans un rapport. En exposition publique, recommande TLS (8883) pour les clients distants.
SEC.04
Les variables
Ce que vous choisissez avant de lancer — la recette s'occupe du reste.
| Nom | Signification |
|---|---|
| ${mqtt_user} | Utilisateur MQTT |
| ${exposure} | Exposition |
SEC.05
Comment une recette s'exécute dans Servor
Servor est zero-knowledge : la plateforme ne peut rien exécuter seule. Quand vous lancez cette recette, un run lit la reconnaissance, planifie les étapes et demande votre validation. Chaque commande approuvée est signée par votre navigateur — avec une clé que le serveur ne voit jamais — puis relayée telle quelle à l'agent, qui vérifie la signature localement avant d'exécuter.
recherche par intention — tapez « firewall », obtenez ufw
- 01Reconnaissance en lecture seule avant tout changement
- 02Chaque commande signée par votre navigateur, validée par vous
- 03Chaque étape vérifiée avant de continuer, chaque run conservé dans l'historique
SEC.06
Bouton Deploy on Servor
Vous maintenez Mosquitto (MQTT) ou un projet qui en dépend ? Ajoutez ce bouton à votre README ou à votre site : en un clic, vos utilisateurs l'installent sur leur propre serveur.
SEC.07
D'autres recettes cache & files
Recette vérifiée
Lancez cette recette sur votre serveur
Connectez un serveur, lancez la recette, et validez chaque étape pendant que Servor exécute et vérifie. Plan gratuit, sans carte bancaire.