Maintenance et dépannage
Le quotidien de l’administrateur : garder le parc propre, intervenir sur un hôte, revenir en arrière après une mauvaise configuration, lire les journaux.
Agir sur un hôte
Section intitulée « Agir sur un hôte »Toutes ces commandes ciblent un hôte (ou un motif / une liste) via colmena :
| Commande | Effet |
|---|---|
just enter <host> | Ouvrir un shell SSH (alias e) |
just reboot <host> | Redémarrer |
just halt <host> | Éteindre |
just gc <host> [keep] | Purger les générations + nettoyer le store |
just fix-boot <host> | Réinstaller le chargeur d’amorçage |
L’argument keep de just gc limite la purge :
just gc <host>: ne garde que la génération courante.just gc <host> 3: garde les 3 dernières générations, courante incluse.just gc <host> 3d: supprime les générations de plus de 3 jours.
Nettoyer et formater le code
Section intitulée « Nettoyer et formater le code »Avant de committer ou déployer, normaliser le dépôt :
just clean # fix + check + generate + formatjust check: code + tests unitaires + vérification des flakes (avant déploiement).
Revenir en arrière
Section intitulée « Revenir en arrière »Chaque déploiement crée une génération NixOS. En cas de problème :
-
Au démarrage : choisir une génération précédente dans le menu de boot.
-
À chaud : revenir à la génération précédente puis la rendre active :
Fenêtre de terminal just enter <host>sudo nixos-rebuild switch --rollback -
Par le code :
git revertla mauvaise configuration, puis redéployer :Fenêtre de terminal just apply <host>
Lire les journaux
Section intitulée « Lire les journaux »just enter <host>journalctl -u <service> -n 100 --no-pager # logs d'un servicejournalctl -p err -b # erreurs depuis le démarragesystemctl status <service> # état d'une unitéServices en échec après un redémarrage de passerelle
Section intitulée « Services en échec après un redémarrage de passerelle »Symptôme : systemctl --failed liste, juste après le boot, des unités qui
repartent sans broncher une fois relancées à la main (montages NFS,
provisionnement OIDC, tout ce qui résout un nom).
Cause : sur une passerelle, le résolveur du système est AdGuard Home
(nameserver 127.0.0.1). Son unité est Type=simple, donc systemd la déclare
active dès que le processus démarre — une vingtaine de secondes avant qu’elle
n’écoute réellement sur le port 53. Tout ce qui résout un nom pendant cette
fenêtre échoue.
Le framework pose une barrière pour ça : dns-ready.service interroge le
résolveur local jusqu’à obtenir une réponse, et bloque nss-lookup.target
jusque-là.
systemctl status dns-ready # date à laquelle les noms ont résolujournalctl -b -u adguardhome | head -30 # moment où le proxy DNS écoute enfinUne unité qui résout un nom au démarrage doit donc s’ordonner derrière cette
cible — after = [ "nss-lookup.target" ] pour un service, l’option de montage
x-systemd.after=nss-lookup.target pour un point de montage. Sur les hôtes non
passerelles, la cible est atteinte immédiatement : aucun délai ajouté.
Certificats TLS d’une passerelle expirés
Section intitulée « Certificats TLS d’une passerelle expirés »Une passerelle ne demande pas ses propres certificats : c’est le HCS qui les
obtient, et l’unité sync-caddy-certs les recopie toutes les dix minutes
depuis le HCS vers le stockage Caddy local.
systemctl status sync-caddy-certs # dernier passage et son résultatjournalctl -u sync-caddy-certs -n 50systemctl list-timers sync-caddy-certsLe transfert passe par deux répertoires :
| Chemin | Rôle |
|---|---|
/var/lib/caddy-cert-sync | Zone de transit (StateDirectory de l’unité) |
/var/lib/caddy/storage | Stockage Caddy réellement servi |
L’unité tourne en root, tire depuis le HCS avec la clé SSH de l’utilisateur
nix, puis publie vers le stockage Caddy. Elle attend d’abord que le tailnet
soit réellement monté (jusqu’à cinq minutes), puis réessaie le transfert trois
fois avant d’abandonner. Un systemctl status en failed reste donc le signal
à surveiller, et un échec répété annonce une expiration de certificat.
UID des comptes gdm-greeter décalés
Section intitulée « UID des comptes gdm-greeter décalés »Symptôme, à chaque activation d’un poste GNOME :
warning: not applying UID change of user 'gdm-greeter-2' (60580 -> 60579)nixpkgs a renuméroté ses comptes gdm-greeter* ; NixOS ne renumérote jamais un
compte existant. Les postes installés avant gardent les anciens UID, et deux
greeters peuvent partager le même.
just fix-gdm-greeters poste-01,poste-02 # diagnostic, n'écrit rienjust fix-gdm-greeters poste-01,poste-02 applyapply arrête GDM, recrée les comptes décalés avec les UID déclarés, réattribue
leurs fichiers puis relance GDM. Un hôte avec une session graphique ouverte est
laissé de côté : relancer après déconnexion. Sauvegarde de /etc/passwd et
/etc/shadow dans /var/lib/nixos/backup-gdm-greeters-<date>/.