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) ?
- 02reconSyncthing déjà installé ? quelle version ?
- 03reconun service syncthing@… existe-t-il déjà et pour quel utilisateur ?
- 04reconport 8384 (GUI) déjà pris, et par quoi ? vide = libre ; pris → demande un autre port (ask_user)
- 05reconport 22000 (synchronisation) déjà pris, et par quoi ? vide = libre ; pris → demande un autre port (ask_user)
- 06reconun pare-feu (ufw ou firewalld) est-il actif ?
- 07agirAjouter le dépôt officiel (Debian/Ubuntu) ou EPELvérif
- 08agirInstaller Syncthingvérif
- 09agirCréer l’utilisateur (seulement s’il n’existe pas)vérif
- 10agirActiver le service syncthing@utilisateurvérif
- 11agirProtéger la GUI par mot de passevérif
- 12agirLa GUI répond en localvérif
- 13agirOuvrir les ports de synchronisation (seulement si un pare-feu est actif)vé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érifAjouter le dépôt officiel (Debian/Ubuntu) ou EPELVérifié par
apt-cache policy syncthing 2>/dev/null | grep -c apt.syncthing.net || dnf info syncthing 2>/dev/null | grep -c Versionattendu : au moins 1 - 02vérifInstaller SyncthingVérifié par
syncthing --versionattendu : syncthing v… - 03vérifCréer l’utilisateur (seulement s’il n’existe pas)Vérifié par
id -u ${user}attendu : un uid différent de 0 - 04vérifActiver le service syncthing@utilisateurVérifié par
systemctl is-active syncthing@${user}attendu : active - 05vérifProtéger la GUI par mot de passeVérifié par
sudo -H -u ${user} syncthing cli config gui user getattendu : admin - 06vérifLa GUI répond en localVérifié par
curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:8384/rest/noauth/healthattendu : 200 - 07vérifOuvrir les ports de synchronisation (seulement si un pare-feu est actif)Vérifié par
ufw status 2>/dev/null | grep ALLOW; firewall-cmd --list-ports 2>/dev/null; trueattendu : 22000/tcp, 22000/udp, 21027/udp autorisés, ou aucun pare-feu actif
SEC.03
Les garde-fous
Les consignes non négociables que le run doit respecter, quoi qu'il trouve sur le serveur.
Syncthing déjà actif pour un utilisateur → vérifie et rapporte, ne réinstalle pas et ne touche pas à sa config. Ne lance jamais Syncthing en root. La GUI (8384) reste sur 127.0.0.1 et n’est jamais ouverte dans le pare-feu. N’ouvre que 22000/tcp, 22000/udp et 21027/udp.
SEC.04
Les variables
Ce que vous choisissez avant de lancer — la recette s'occupe du reste.
| Nom | Signification |
|---|---|
| ${user} | Utilisateur système qui exécute Syncthing (non root) |
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 Syncthing 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 auto-hébergé
- 01VaultwardenGestionnaire de mots de passe Vaultwarden (compatible Bitwarden) via Docker Compose, en HTTPS si un domaine est fourni.
- 02GiteaForge Git légère Gitea via Docker Compose (SQLite), web en local, SSH Git sur un port dédié.
- 03Uptime KumaMonitoring d’uptime Uptime Kuma 2 via Docker Compose, en HTTPS si un domaine est fourni.
- 04NextcloudNextcloud (cloud de fichiers) via Docker Compose : PostgreSQL, Redis, cron, admin créé automatiquement.
- 05JellyfinServeur média Jellyfin via Docker Compose, dossier média monté en lecture seule, HTTPS si un domaine est fourni.
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.