Grappe conteneurs (k3s)
Petite grappe Kubernetes (k3s) répartie entre un plan de contrôle dans le nuage et des nœuds à la maison, qui a remplacé l'ancien hôte Docker unique. Fait tourner les conteneurs du réseau serveurs, dont le pipeline de déploiement de ce site. Tous les nœuds — serveurs GPU, machines virtuelles, Raspberry Pi et la VM cloud — sont sous NixOS et décrits dans un seul dépôt : réinstaller un nœud, c'est réappliquer sa configuration, pas refaire les étapes de mémoire. Les workloads qui tournent dessus ont leur propre dépôt.
# dans l'architecture générée
cluster:k3sclusterhost:pi-01hardwarehost:vm-01hardwarehost:vm-02hardware
Ces identifiants viennent des dépôts IaC publics, pas de cette page — la vue générée les redessine chaque nuit.
Un pod qui voyage léger : sortir l'état de mon planificateur de tâches
Mon planificateur de tâches gardait ses données sur le disque de son nœud — un pod techniquement mobile, pratiquement riveté. En une session avec Claude Code (Fable 5), son moteur de stockage est passé sur S3 : 1 136 enregistrements copiés en 21 secondes, et un pod qui change maintenant de nœud en 12 secondes parce qu'il n'a plus rien à transporter. L'occasion de clarifier ce que « stateless » veut vraiment dire : on n'élimine pas l'état, on le déménage chez quelqu'un dont c'est le métier.
L'île du survivant : concevoir la dernière chose qui meurt dans son infrastructure
Après trois jours de pannes électriques et quatre tests de débranchement volontaires, mon homelab a maintenant une « île du survivant » : le routeur, le modem et un seul Raspberry Pi sur l'onduleur le moins chargé, avec pour mission de survivre à tout le reste — pour observer, alerter, puis réveiller les serveurs par IPMI quand le courant revient. Analyse de la conception : domaines de panne, sémantique des battements de cœur, et deux mécanismes de reprise complémentaires.
Tout ça pour un script bash : le jour où le pipeline de numérisation a perdu son image sur mesure
Le pipeline du numériseur roulait une image Docker maison dont l'unique raison d'exister était un script de soixante lignes. On l'a remplacé par une fonction sans serveur, remis l'image officielle, et rendu le tout sans état. En chemin : trois numérisations qui n'étaient jamais arrivées, une boucle infinie qui attendait son heure, une sonde de santé qui répond « ok » avec zéro utilisateur chargé, et une panne finale que j'ai attribuée au mauvais coupable avec beaucoup d'assurance.
Laisser le pipeline appuyer sur apply : quatre dépôts IaC, trois outils, et une porte qui refuse les destroys
Tout le labo était déjà décrit en code, mais chaque apply passait encore par mes mains. On a fermé la boucle en une session : GitHub Actions avec OIDC pour le nuage, Argo CD pour le cluster, comin pour NixOS. Le plus intéressant n'est pas la plomberie : c'est ce que la porte refuse, et les deux Raspberry Pi qui se sont étouffés sur une dépendance de tests.
Trois majeures un jeudi soir : MongoDB qui refuse d'ouvrir, les sondes qui tirent sur l'ambulance, pis la migration qu'il ne fallait surtout pas arrêter
Mon nouveau robot de mises à jour m'a proposé trois versions majeures d'un coup : Grafana, Uptime Kuma, MongoDB. J'ai toutes fusionnées le soir même, confiant comme un gars qui vient de finir de construire ses garde-fous. Une base de données s'est empoisonnée elle-même, des sondes de santé ont appelé un numéro débranché depuis deux ans, et un logiciel qui écrivait DON'T STOP dans ses logs s'est fait arrêter pareil. Tout a survécu. De justesse, pis avec des leçons.
Quatre dépôts pour un labo au complet : et comment les publier sans donner les clés de la maison
Les machines, les workloads, le compte infonuagique et le edge : tout le labo est décrit dans quatre dépôts git. Ce que ça prend pour adopter une infrastructure qui existe déjà sans rien casser, comment on vérifie chaque nuit que la réalité est encore d'accord, et surtout : comment publier ce code au grand jour sans publier le labo avec.
Déplacer mes partages NFS sur un SSD sans toucher à Kubernetes
Un disque dur qui gratte sans arrêt, un SSD supposément neuf qui contenait déjà 437 Go de quelque chose, deux pièges QNAP qui ne s'annoncent pas, et un processus fantôme qui m'a fait accuser le réseau pendant une bonne demi-heure. Au bout du compte : une migration de partages NFS où le cluster Kubernetes n'a jamais su que le stockage avait changé de disque.
Neuf machines, zéro clé USB : migrer tout mon homelab vers NixOS
Claude Code aux commandes, moi en mode apprentissage : tout mon parc — serveurs GPU, machines virtuelles, Raspberry Pi et une instance cloud — est passé sous NixOS en une journée. C'est quoi Nix au juste, ce que ça change par rapport à Ubuntu, et pourquoi je n'aurais pas pu faire ça tout seul.
Je me suis voté hors de l'île (et j'ai amené deux serveurs avec moi)
Le plan de contrôle du cluster k3s tournait sur trois nœuds — deux dans le nuage, un à la maison. Le vrai problème n'était pas la répartition, c'était une des deux machines cloud, trop serrée en mémoire pour son propre bien. Direction : un seul nœud, bien nourri.
Un tiroir 1U pour mes trois Raspberry Pi : fini le fouillis sur la tablette
Coquille, worker1 et worker2 vivaient chacun dans son boîtier, empilés sur une tablette du rack mural. Un support 1U GeeekPi pour Raspberry Pi 5 plus tard, les trois nœuds sont enfin montés proprement, étiquetés, et accessibles sans démêler un nid de câbles.
Renuméroter les adresses IP d'un cluster k3s : plus corsé que prévu
Un audit de routine débusque une vraie erreur DHCP, puis on décide de renuméroter deux autres nœuds pour le fun — jusqu'à se buter sur une limite d'AWS qui force à reconstruire le nœud du plan de contrôle au grand complet.
Bâtir une grappe k3s avec Claude Code aux commandes
Remplacer l'hôte conteneurs unique du labo par une petite grappe k3s de six nœuds — un plan de contrôle dans le nuage, cinq nœuds à la maison — en travaillant de bout en bout avec Claude Code, jusqu'au déménagement du pipeline de déploiement de ce site sur la nouvelle grappe.
La semaine où mon cluster a fait une crise d'identité
Cette semaine : on a essayé de renommer un serveur, on a tout défait, un nouveau serveur est arrivé sous un nom qui a bien plus de classe, pis un vieux script qui traînait a failli planter en silence le dimanche suivant.
Donner une adresse IPv6 propre et prévisible à chaque serveur de mon réseau
Mise en place d'une convention d'adressage IPv6 (suffixe = octet IPv4 en hexadécimal) sur un réseau de serveurs en DHCPv6 stateful. Couvre la découverte de DUID par capture réseau, un piège de rechargement de configuration après changement de moteur DHCP, et un cas de client DHCPv6 attaché à la mauvaise interface.
Site web: statique ou dynamique?
Il y a plusieurs options pour créer son site web. Plusieurs services offrent de l'hébergement avec leur outil de conception propriétaire. Je pense entre autres à Squarespace ou Wix. Pour ma part j'ai choisi le logiciel…