Dépannage
Problèmes courants et procédures de diagnostic.
Un Container est en État unhealthy
Section intitulée « Un Container est en État unhealthy »# Voir les derniers résultats du health checkdocker inspect --format='{{json .State.Health}}' <nom-container> | jq
# Voir les logs du containerdocker logs <nom-container> --tail 50
# Redémarrer manuellementsystemctl restart docker-<nom-container>Le timer docker-health-watch@<nom> tue automatiquement un container unhealthy
toutes les 30 secondes, ce qui déclenche un restart systemd.
Si le container reste en boucle, vérifier ses logs.
Un Service systemd est en failed
Section intitulée « Un Service systemd est en failed »# Voir le statut et les logssystemctl status docker-<nom>journalctl -u docker-<nom> --since "30 minutes ago"
# Réinitialiser le compteur d'échecs avant de redémarrersystemctl reset-failed docker-<nom>systemctl start docker-<nom>Traefik ne Répond Plus
Section intitulée « Traefik ne Répond Plus »# Health check internedocker exec traefik traefik healthcheck
# Vérifier que le container tournedocker ps | grep traefik
# Vérifier les certificats Let's Encryptls -lh /srv/docker/traefik/acme.json# Si 0 octets : les certs n'ont pas été générés# Let's Encrypt a une limite de 5 tentatives / domaine / heure
# Logs Traefiktail -100 /srv/docker/traefik/logs/traefik.log | jq .sops ne Peut pas Déchiffrer les Secrets
Section intitulée « sops ne Peut pas Déchiffrer les Secrets »# Vérifier que la clé age est présentels -la /etc/sops/age/keys.txt
# Vérifier la clé publiqueage-keygen -y /etc/sops/age/keys.txt# Doit correspondre à celle dans .sops.yaml
# Test de déchiffrementsops -d secrets/clochette.yamlSi la clé publique ne correspond pas : voir Sauvegarde & Restauration des Secrets.
Déploiement nixos-rebuild Échoue
Section intitulée « Déploiement nixos-rebuild Échoue »# Construire sans déployer pour voir l'erreurjust build_clochette
# Vérifier les lintersjust test
# Vérifier l'évaluation du flakenix flake checkSi l’erreur est réseau (timeout lors du téléchargement), relancer. Si c’est une erreur d’évaluation Nix, lire le message d’erreur complet : les erreurs sops ou de type manquant sont souvent explicites.
SSH vers clochette Inaccessible
Section intitulée « SSH vers clochette Inaccessible »Ordre de vérification :
-
Tailscale est-il actif sur les deux machines ?
Fenêtre de terminal tailscale status # depuis exampleHost -
clochette est-elle joignable via ping Tailscale ?
Fenêtre de terminal tailscale ping clochette -
Le démon SSH tourne-t-il sur clochette ? Utiliser la console série Scaleway pour vérifier :
Fenêtre de terminal systemctl status sshd -
La règle firewall est-elle en place ?
Fenêtre de terminal sudo nft list ruleset | grep 100.64
Docker Storage Driver ZFS (exampleHost)
Section intitulée « Docker Storage Driver ZFS (exampleHost) »Si Docker ne démarre pas sur exampleHost avec une erreur ZFS :
# Vérifier que le dataset Docker existezfs list | grep docker
# Docker utilise rpool/nixos/var/lib comme base# Le dataset docker est dans /var/lib/dockerdocker info | grep "Storage Driver"
# Si Docker a laissé un état corrompusudo systemctl stop dockersudo rm -rf /var/lib/docker/devicemapper # ou le sous-dossier problématiquesudo systemctl start dockerBorg Backup Échoue
Section intitulée « Borg Backup Échoue »# Dernier statutjournalctl -u borgbackup-job-remote --since today
# Tester la connexion SSH vers le serveur de backupssh -i /run/secrets/services/borg/key/private backup@storage2.friloux.me
# Tester l'accès au dépôtBORG_PASSPHRASE=$(cat /run/secrets/services/borg/passphrase) \BORG_RSH="ssh -i /run/secrets/services/borg/key/private" \borg info ssh://backup@storage2.friloux.me/~/clochette.friloux.meCauses fréquentes :
- Clé SSH du serveur de backup changée → mettre à jour
backup.nixknownHostsFiles - Espace disque plein sur le serveur de backup
- Verrou Borg bloqué :
borg break-lock ssh://backup@storage2.friloux.me/~/clochette.friloux.me
ZFS Pool Dégradé (exampleHost)
Section intitulée « ZFS Pool Dégradé (exampleHost) »# État des poolszpool status
# Si un disque est DEGRADED / FAULTEDzpool status -v # détail des erreurs
# Après remplacement physique d'un disquezpool replace rpool /dev/disk/by-id/ANCIEN_ID /dev/disk/by-id/NOUVEAU_ID# Suivre la résilverzpool status -w rpoolPréemptions WeeCHAT / Session zellij Perdue
Section intitulée « Préemptions WeeCHAT / Session zellij Perdue »# Se connecter à la session weechat existantessh irc.friloux.me# Dans le shell weechat :zellij attachSi la session zellij n’existe plus :
zellij # crée une nouvelle session# Puis relancer weechat manuellementweechat