Ce week-end, j’ai voulu déplacer l’IPMI de mon node Nutanix de lab sur mon segment d’administration. J’ai changé l’adresse de la carte et le profil de VLAN du port du switch dans la même minute. Le node venait d’être réinitialisé, il n’avait plus de système, donc plus aucun moyen de corriger depuis l’intérieur, et la carte a disparu du réseau.
Ce qui m’a rendu la main tient en une adresse IPv6 link-local et deux commandes, un quart d’heure montre en main. Voici la méthode, sous Windows 11 et sous Rocky Linux.
Le soir où l’IPMI a disparu du réseau
Deux changements dans la même minute m’ont privé de tout moyen de savoir lequel des deux avait cassé quoi. J’ai branché un laptop en direct sur le port IPMI dédié de ce Supermicro SYS-5019D-4C-FN8TP pour reprendre la main.
Sur un node qui tourne, ipmitool en local règle ce genre de bêtise en une commande via l’interface KCS, sans passer par le réseau, mais un serveur fraîchement effacé ferme cette porte. Si vous êtes dans la situation inverse, la carte joignable mais le mot de passe perdu, je vous invite à consulter mon article à ce sujet : mot de passe IPMI perdu sur un noeud Nutanix ou Supermicro.
Pourquoi le link-local répond quand l’IPv4 est muette
Toute interface IPv6 active porte une adresse qui commence par fe80::, construite toute seule à partir de sa MAC et sans DHCP. Une machine dont l’IPv4 est fausse ou absente garde donc une identité joignable sur son segment. L’adresse ff02::1 est le groupe multicast dit all-nodes : un ping vers ce groupe fait répondre tout ce qui vit au bout du câble, et un IPMI alimenté en veille répond même serveur éteint. Le multicast ne traverse pas un routeur, il faut donc être sur le même segment que la carte.
Un détail achève de justifier la méthode, vu plus tard en relisant la configuration de ma carte en firmware 01.74.13 : la ligne « ARP Responses Enabled, Gratuitous ARP Disabled ». L’IPMI ne s’annonce jamais spontanément, donc écouter passivement le segment ne mène nulle part.
Retrouver la carte sur le câble
Le principe est le même sur les deux systèmes : identifier l’interface, envoyer le multicast, lire le cache voisinage.
Sous Windows 11
Repérage de la carte et de son index :
Get-NetAdapter
La colonne ifIndex donne le numéro à réutiliser ensuite, l’index 3 chez moi.
Sur un lien direct il n’y a aucun serveur DHCP, et une interface restée en automatique bascule en APIPA sur 169.254.x.x, auquel cas rien ne pinguera jamais, même face à un IPMI en parfait état. Posez une adresse statique :
Envoi du multicast, avec l’index de l’interface en suffixe de zone :
ping -6 ff02::1%3
Lecture des voisins découverts, avec leur adresse MAC :
Get-NetNeighbor -InterfaceIndex 3
Sous Rocky Linux
Identification de l’interface :
ip link show
Envoi du multicast :
ping6 -c4 ff02::1%ens0
Retour de la commande :
PING ff02::1%ens0(ff02::1%ens0) 56 data bytes
64 bytes from fe80:0:0:0:225:90ff:feb8:f313%ens0: icmp_seq=1 ttl=64 time=0.659 ms
64 bytes from fe80:0:0:0:225:90ff:feb8:f313%ens0: icmp_seq=2 ttl=64 time=0.288 ms
Association des adresses à leur MAC :
ip -6 neigh show dev ens0
Une nuance fait perdre du temps quand on passe d’un système à l’autre : le suffixe de zone prend un nom d’interface sous Linux et un index numérique sous Windows, et une adresse copiée d’une console à l’autre échoue sans message explicite.
Lire le constructeur directement dans l’adresse
Quand une adresse link-local contient ff:fe en son milieu, elle dérive de la MAC par la méthode EUI-64, et l’opération s’inverse de tête. Retirez les deux octets ff:fe du centre de fe80::225:90ff:feb8:f313, il reste 02:25:90:b8:f3:13, puis inversez le deuxième bit du premier octet : 02 devient 00, soit un OUI Super Micro Computer.
Ouvrir l’interface web en link-local
L’adresse récupérée s’utilise telle quelle dans un navigateur, entre crochets et suivie de son suffixe de zone :
https://[fe80::225:90ff:feb8:f313%3]
Le suffixe est obligatoire, une adresse link-local n’étant unique que sur un segment donné. Si votre navigateur refuse ce format, curl confirmera que le service répond, avec le % échappé en %25 et l’option -g sans laquelle les crochets partent en globbing :
Une fois l’interface ouverte, la réponse tenait en une ligne de sa page réseau : la carte portait 192.168.10.11, quand je pensais avoir configuré 192.168.10.1. Le profil de VLAN du port n’y était pour rien, et l’adresse que j’avais saisie est celle de la machine qui héberge mon DNS. Reconfiguration sur la bonne adresse, et c’était reparti.
Mes cartes de gestion vivent maintenant dans une plage réservée en bas du segment, avec une exclusion DHCP en face, le node de lab en .1 et celui de production en .2. Et je m’applique une règle simple depuis : un seul changement à la fois, vérifié avant le suivant.
Il m’est arrivé une petite mésaventure récemment. Après un changement de mot de passe IPMI sur mon 1-node, impossible de me reconnecter à l’interface de management de mon nœud. Oubli dans la seconde ? Faute de frappe ? Copier coller foireux ? Qu’importe la raison, le verrouillage de l’accès, lui, était bien réel.
Perdre son mot de passe IPMI (ou BMC) fait souvent transpirer. Mais rassurez-vous, l’expérience m’a appris une règle d’or : tant que vous avez encore un accès au système d’exploitation de l’hôte (que ce soit AHV, un Linux standard ou même ESXi), vous pouvez récupérer la main sans avoir besoin de faire un reset matériel.
Toutefois, la situation peut être plus critique qu’il n’y paraît. Pour les experts qui me lisent, vous savez qu’en environnement NutanixSingle-Node, l’IPMI n’est pas juste un confort d’administration : c’est votre seul et unique fail-safe. Sans lui, impossible de monter une ISO Phoenix en Remote Media lors d’un crash AOS majeur ou pour forcer un redémarrage. Perdre l’accès BMC sur un tel nœud devient donc très vite un point de blocage impactant pour votre production et l’accès à la console distante.
Dans ce guide, je vous partage les différentes méthodes pour reprendre le contrôle sur votre noeud en quelques minutes, de la plus douce à celle de la dernière chance.
Méthode 1 : Réinitialisation in-band via ipmitool
Si vous êtes sous Nutanix AHV ou une distribution Linux classique, vous avez de la chance : l’utilitaire ipmitool est généralement présent nativement. L’astuce de cette méthode repose sur le canal matériel KCS (Keyboard Controller Style). En clair, cela permet à l’OS de l’hôte de communiquer directement avec la puce BMC via le bus de la carte mère (LPC/PCIe), sans passer par le réseau de management.
Identifier et écraser le compte Admin
Connectez-vous en root sur votre hôte. Par précaution, on s’assure d’abord que les modules noyaux gérant l’IPMI sont bien chargés :
modprobe ipmi_si
modprobe ipmi_devintf
Ensuite, on va lister les utilisateurs configurés (généralement sur le channel 1) pour repérer l’ID de notre compte administrateur. Dans 99% des cas, le compte par défaut (ADMIN) correspond à l’ID 2.
ipmitool user list 1
Dans mon cas, l’ID correspond bien à 2 :
Une fois l’ID confirmé, la commande pour forcer un nouveau mot de passe est enfantine :
ipmitool user set password 2 'MonNouveauMdp123!'
Lors de la saisie de la commande précédente, il se peut que le terminal vous renvoie un vilain Invalid data field in request.
Pas de panique, c’est simplement le parseur de politique de sécurité de certains firmwares qui rejette votre demande. Il exige non seulement une complexité minimale (8 caractères, majuscule, minuscule, chiffre), mais peut aussi être capricieux sur le format de la requête.
Pour contourner (ou plutôt satisfaire) ce mécanisme, forcez la longueur d’encodage sur 20 octets en ajoutant simplement 20 à la fin de votre commande :
ipmitool user set password 2 'MonNouveauMdp123!' 20
Votre mot de passe est maintenant écrasé. Vous pouvez tester la connexion à l’interface web.
Méthode 2 : L’utilitaire IPMICFG (La solution pour VMware ESXi)
Si vous êtes sous VMware ESXi, la première méthode risque de vous laisser sur le carreau. Pourquoi ? Parce qu’ipmitool n’y est pas packagé nativement et résoudre les dépendances pour le compiler sur un hyperviseur est une perte de temps que je ne vous recommande pas.
La parade s’appelle IPMICFG. C’est l’outil officiel fourni par Supermicro (téléchargeable sur leur portail avec un compte gratuit). L’immense avantage est qu’il est fourni sous forme de binaires statiques, prêts à l’emploi pour Linux ou Windows.
Une fois l’archive transférée sur votre hôte et décompressée, son utilisation est très simple :
./IPMICFG-Linux.x86_64 -user list
./IPMICFG-Linux.x86_64 -user setpwd 2 MonNouveauMdp123!
Note : adaptez le nom du binaire si vous utilisez la version Windows ou Linux.
Que faire si l’OS ne démarre plus du tout ? C’est souvent là qu’on transpire, pensant que sans accès réseau à l’IPMI ni système d’exploitation fonctionnel, la seule méthode restante est le reset usine.
Rappelez-vous : l’interface KCS est exposée au niveau matériel dès la fin du POST BIOS. Elle est totalement indépendante de l’état de votre stockage.
Il suffit donc de booter le serveur sur une clé USB contenant un Live CD Linux (Ubuntu, Rocky Linux). Une fois sur le bureau éphémère, ouvrez un terminal, installez l’utilitaire s’il n’est pas déjà présent (apt install ipmitool par exemple), et reprenez exactement les commandes de la Méthode 1.
Méthode de dernier recours : Le Factory Reset du BMC
Si pour une raison obscure les méthodes précédentes échouent, il reste l’ultime recours : le reset aux paramètres d’usine.
Avec l’outil de Supermicro, la commande est directe :
./IPMICFG-Linux.x86_64 -fd
Et si vous préférez la méthode ipmitool pure, il faut passer une commande RAW :
ipmitool raw 0x3c 0x40
⚠️ Attention, les conséquences sont lourdes : Toute votre configuration BMC est remise à zéro. Vous perdez l’IP statique (le port repasse en DHCP), la configuration des VLANs, et vos comptes utilisateurs. Le BMC va ensuite redémarrer (comptez bien 2 à 3 minutes). Gros point de vigilance sur les générations récentes de serveurs : il se peut que le mot de passe ne redevienne pasADMIN/ADMIN. Il bascule sur le mot de passe unique imprimé sur l’étiquette OCP (souvent collée sur le châssis ou la carte mère). Pensez-y si votre serveur est physiquement à l’autre bout du monde !
Mes recommandations
Une fois l’accès récupéré via la méthode 1 ou 2, voici ce que je fais systématiquement pour sécuriser mes arrières :
Le gestionnaire de mots de passe : C’est basique, mais renseignez vos creds immédiatement au lieu de le garder dans le cache du copié-collé.
Le compte de secours : Créez un second compte administrateur.
L’astuce du Slot ID : Ne mettez pas votre compte de secours sur le Slot ID 3. Forcez sa création sur un Slot plus éloigné (comme le 5 ou le 6). Pourquoi ? Parce que certains scripts d’automatisation d’infrastructure ont parfois la fâcheuse tendance à écraser ou modifier en force les premiers Slots (2 et 3) lors du provisionning. En le mettant plus loin, vous le sanctuarisez.
Et vous, ça vous est déjà arrivé de vous enfermer dehors sur l’un de vos nœuds ? Partagez votre pire galère dans les commentaires ci-dessous !
Beaucoup le savent, j’ai un niveau de développement brut qui oscille entre le zéro absolu et le « c’est tombé en marche ».
Mais voilà, la donne a changé. L’intelligence artificielle, et plus précisément les agents de codage en CLI (Command Line Interface) comme Claude Code, m’ont donné des super-pouvoirs. Soudainement, coder n’est plus une montagne insurmontable, mais une discussion. Seulement, il y a un hic : pour discuter avec la machine, il faut que l’environnement soit d’équerre. Et le développement sous Windows, historiquement, c’était un peu comme essayer de faire rentrer des carrés dans des ronds (carré dans l’tube pour ceux qui ont la réf).
Heureusement, WSL (Windows Subsystem for Linux) est là. L’idée de ce guide ? Vous éviter les sueurs froides que j’ai eues. Je vous propose de configurer un environnement Ubuntu propre sous Windows, de le blinder avec les dépendances nécessaires (Cargo, npm), d’installer Claude Code, et de relier tout ça de façon fluide à Visual Studio Code.
Pourquoi s’embêter avec WSL2 me direz-vous ? Tout simplement parce que cela permet d’isoler totalement nos outils d’IA. Claude Code tournera dans son bac à sable Linux, avec des performances I/O natives, et tout ceci indépendamment de notre système Windows. On garde le contrôle.
Prêt à transformer votre machine Windows en station de développement boostée à l’IA ? Suivez le guide, j’ai déminé le terrain pour vous.
1. Activer et installer WSL (Windows Subsystem for Linux)
On ne va pas se mentir : à une époque, installer un environnement Linux sous Windows, c’était le parcours du combattant. Il fallait fouiller dans des menus obscurs, cocher des « Fonctionnalités Windows », et prier très fort. Aujourd’hui, Microsoft a rattrapé son retard, et ça tient en une ligne de commande.
Installation de WSL
Commencez par ouvrir PowerShell en tant qu’administrateur (clic droit sur le menu Démarrer > Windows PowerShell (admin) ou Terminal (Administrateur)).
Tapez simplement cette commande et appuyez sur Entrée :
wsl --install
Laissez la magie opérer. Une fois que c’est terminé, la règle d’or de l’informatique s’applique : redémarrez votre PC. Ce n’est pas optionnel, Windows a besoin de ce redémarrage pour activer les composants de virtualisation au niveau du système.
WSL : Choisir sa distribution
Au redémarrage, WSL est là, mais on va s’assurer d’installer la bonne distribution. Rouvrez PowerShell (pas besoin des droits admin cette fois).
Pour voir ce qui est disponible au « catalogue », tapez :
wsl --list --online
Dans notre cas, on va partir sur le standard absolu, Ubuntu. C’est là que la communauté est la plus grande, et où l’on trouve le plus de solutions quand on a un message d’erreur.
Lancez l’installation avec :
wsl --install Ubuntu
Une fenêtre de terminal va s’ouvrir, vous demandant de créer un nom d’utilisateur UNIX et un mot de passe.
Pourquoi WSL2 change tout ? Pour les plus curieux, sachez que cette commande active par défaut WSL2. Ce détail est crucial. Fini la première version (WSL1) où Windows essayait de traduire maladroitement les commandes Linux à la volée. Aujourd’hui, WSL2 utilise une véritable machine virtuelle ultra-légère (basée sur Hyper-V) avec un vrai noyau Linux optimisé par Microsoft. Le résultat ? Une compatibilité à 100% avec les outils de développement et des performances d’accès aux fichiers (I/O) fulgurantes, ce qui sera vital pour que Claude Code lise notre code rapidement.
2. Préparer l’environnement Ubuntu
Ça y est, la distribution Linux est installée mais un système Linux tout neuf, c’est comme un appartement vide : c’est très propre, mais on ne peut pas y faire grand-chose.
Avant de faire entrer notre super-agent IA, il faut installer les meubles, ou plutôt les dépendances. Beaucoup d’outils modernes en CLI s’appuient sur des écosystèmes bien précis.
Installer Cargo (et notre premier outil IA)
Pour mes propres expérimentations, j’utilise souvent l’écosystème Rust. On va donc installer son gestionnaire de paquets, cargo.
Tapez ceci dans votre terminal Ubuntu :
sudo apt install cargo
Pourquoi Cargo ? Parce qu’il va nous permettre d’installer des outils directement depuis leur code source. Par exemple, j’utilise rtk, un framework IA hyper pratique. Pour l’installer, c’est aussi simple que ça :
cargo install --git https://github.com/rtk-ai/rtk
Laissez compiler. C’est beau à voir (même si, je l’avoue, je regarde souvent défiler ces dizaines de lignes de compilation comme une poule devant un Rubik’s Cube, en priant juste pour qu’il n’y ait pas de texte rouge clignotant à la fin).
A quoi sert RTK me direz-vous ? Et bien à économiser des tokens Claude Code grâce à des automatisations et donc à pouvoir discuter plus longtemps avec l’IA d’Anthropic afin de préserver nos quotas.
Installer Node.js et npm
Ensuite, Claude Code et beaucoup d’autres agents utilisent des technologies web. Il nous faut donc npm (Node Package Manager).
On lance la commande :
sudo apt install npm
Si un développeur barbu et/ou chauve lit ce tutoriel, il va s’étrangler : « Ju, on n’installe jamais npm via apt, ça met une vieille version et ça crée des erreurs de permissions ! ». Et il aurait surement raison. La « vraie » bonne pratique consiste à utiliser NVM (Node Version Manager). Cependant, soyons pragmatiques : pour notre objectif précis de faire tourner Claude Code CLI aujourd’hui, la version stable fournie par les dépôts d’Ubuntu fait très bien le job. Si, plus tard, vous commencez à accumuler les erreurs de type EACCES en installant d’autres paquets globaux, vous saurez qu’il sera temps de nettoyer tout ça et de passer à NVM !
3. Installer et configurer Claude Code
Le script d’installation officiel
Pour installer Claude Code, Anthropic a fait les choses simplement. Enfin, « simplement » version Linux. On va utiliser un outil appelé curl qui va télécharger un script sur leurs serveurs et l’exécuter directement sur notre machine.
Tapez ceci dans votre terminal Ubuntu :
curl -fsSL https://claude.ai/install.sh | bash
En temps normal, balancer un script inconnu trouvé sur le net directement dans le bash de sa machine, c’est l’équivalent numérique de ramasser une clé USB sur le trottoir et de la brancher direct sur son PC. Mais bon, ici c’est Anthropic, on part du principe qu’ils ne veulent pas miner du bitcoin sur notre dos.
Le script va mouliner un peu. Et là, plein d’espoir, les yeux brillants, vous tapez claude dans votre terminal. Et paf… claude: command not found.
Frustration. Sueurs froides. Pas de panique, c’est un grand classique.
Le fameux piège du PATH
Pourquoi ça ne marche pas du premier coup ?
Parce qu’Anthropic fait les choses proprement en respectant le principe du moindre privilège. Au lieu d’installer Claude Code brutalement à la racine de votre système (ce qui requerrait des droits super-administrateur root et pourrait tout casser), le script place l’exécutable dans un petit dossier caché bien à vous : ~/.local/bin.
Le problème, c’est que votre système Ubuntu ne regarde pas de base dans ce dossier précis quand vous lui lancez une commande. Il faut lui indiquer explicitement le chemin. C’est ce qu’on appelle la variable d’environnement $PATH.
Pour réparer ça une bonne fois pour toutes, on va ajouter ce fameux dossier à notre PATH. Copiez-collez cette ligne (attention, copiez-la exactement avec ses guillemets) :
Cette double commande fait deux choses : elle inscrit le bon chemin à la fin de votre fichier de configuration personnel (.bashrc), et elle demande au terminal de relire ce fichier immédiatement pour prendre en compte la modification (source).
Maintenant, retapez claude ou claude --version. Si un menu ou un numéro de version s’affiche : c’est gagné !
4. L’intégration finale avec VS Code
C’est bien beau d’avoir la CLI de Claude qui tourne sagement dans un terminal sur WSL, mais l’idée, c’est quand même de lui faire lire et écrire du code de manière confortable. Et pour ça, il nous faut notre fidèle Visual Studio Code.
L’extension WSL pour VS Code
Ouvrez VS Code de manière classique, sous Windows. Allez dans l’onglet des extensions et cherchez WSL (anciennement Remote – WSL, éditée directement par Microsoft). Installez-la.
Une fois installée, regardez tout en bas à gauche de la fenêtre de VS Code. Vous y verrez une petite icône bleue (ou verte) avec des chevrons ><. Cliquez dessus, et choisissez l’option « Se connecter à WSL » (ou Connect to WSL).
Une nouvelle fenêtre VS Code s’ouvre. En bas à gauche, il y a maintenant écrit « WSL: Ubuntu ». Bingo.
C’est là que la puissance de l’architecture dont je vous parlais plus haut frappe fort. Quand vous ouvrez un projet de cette manière, VS Code installe un mini-serveur directement à l’intérieur de votre machine Linux. L’interface graphique (l’éditeur) tourne sous Windows, mais toute la logique de développement, le terminal intégré et l’accès aux fichiers s’exécutent de manière native sous Ubuntu.
Le plugin Claude pour VS Code
Avoir la CLI pour lancer des commandes globales c’est super, mais on ne va pas se mentir : avoir Claude directement intégré dans l’interface de l’éditeur, c’est le confort ultime.
Toujours dans cette nouvelle fenêtre VS Code (connectée à WSL), retournez dans l’onglet des extensions et cherchez l’extension officielle Claude (ou Claude Dev/Cline selon vos préférences).
⚠️ Attention : VS Code gère désormais deux « zones » d’extensions distinctes. Celles installées sur votre Windows local, et celles installées dans votre machine WSL. Assurez-vous de cliquer sur le petit bouton bleu « Installer dans WSL: Ubuntu » (Install in WSL: Ubuntu) si VS Code vous le propose.
Si vous l’installez par erreur du côté Windows, le plugin va tourner dans le vide et sera incapable de lire les fichiers de votre projet Linux ou de comprendre les commandes que vous lui envoyez.
Une fois le plugin activé côté Ubuntu, une nouvelle icône va apparaître dans votre barre latérale. Vous voilà avec la CLI puissante dans le terminal en bas, et l’assistant visuel réactif sur le côté. Une vraie tour de contrôle !
Conclusion
Et voilà, la boucle est bouclée. En quelques lignes de commande, nous sommes passés d’un environnement Windows cloisonné à un setup hybride ultra-performant. Vous avez maintenant un sous-système Ubuntu propre, prêt à compiler du Rust, faire tourner du Node, et surtout, héberger votre nouvel assistant IA.
De mon côté, avec mon niveau de « dev du dimanche », ce setup a changé ma vie. Je discute, j’oriente, je supervise et Claude gère le code. Et vous, quel va être votre premier projet avec cette nouvelle stack ?
Il y a des e-mails qui font plus plaisir que d’autres. Quand j’ai vu apparaître ce fameux « You’re in » dans ma boîte de réception, je me suis pris une petite décharge d’adrénaline. J’ai l’immense plaisir de partager avec vous mon invitation pour le très privé Nutanix Tech Connect 2026, qui se tiendra les 26 et 27 octobre prochains directement au siège, au HQ de Nutanix à San José dans la Silicon Valley !
Vous le savez, au quotidien, je passe une bonne partie de mes journées le nez dans l’écosystème Nutanix chez Inetum. C’est mon terrain de jeu. Mais ce voyage, c’est l’occasion de passer littéralement de l’autre côté du miroir. Et pour la 2e fois ! (voir mon article retraçant mes 2 jours au NTC Tech Connect 2024).
Si les grandes messes technologiques comme l’événement .NEXT sont parfaits pour découvrir les annonces publiques entouré de milliers de participants, le Tech Connect est son exact opposé. C’est l’envers du décor. Seule une poignée d’élus, triés sur le volet parmi les membres les plus actifs de la communauté NTC (Nutanix Technology Champions), sont invités. Et nous ne faisons pas le déplacement pour écouter le discours marketing habituel, mais pour plonger dans le vif du sujet, échanger sous NDA (Non-Disclosure Agreement) et décortiquer l’architecture avec ceux qui conçoivent la plateforme.
Qu’est-ce que le Nutanix Tech Connect ?
Un rassemblement d’experts passionnés
Faire partie du programme NTC, c’est déjà évoluer au quotidien au sein d’une communauté incroyable de partage et d’entraide. Mais cet événement en présentiel pousse le concept encore plus loin. Il a été pensé comme un rassemblement intimiste. L’objectif de Nutanix n’est pas ici de remplir un centre de conventions, mais de réunir autour d’une table une poignée de passionnés dont la voix et l’expérience terrain comptent.
L’impact direct sur la roadmap Nutanix
C’est là que l’on touche au but ultime pour tout ingénieur système ! Pendant ces deux jours d’immersion à San Jose, on laisse les présentations commerciales au vestiaire. Nos interlocuteurs directs ? Le Product Management (PM) et les équipes de Recherche & Développement (R&D).
C’est une occasion en or de discuter de manière transparente des évolutions du socle AOS (Acropolis Operating System) et des futures capacités de notre hyperviseur AHV. C’est précisément lors de ces tables rondes « sans filtre » que l’on décortique les cas d’usage complexes que nous rencontrons sur nos clusters de production. Savoir que nos « pain points » et nos retours terrains peuvent directement influencer la roadmap technique et façonner le code des prochaines releases est tout simplement grisant !
Au programme : Deux jours d’immersion San Jose
Le programme de ces deux jours s’annonce dense. L’email d’invitation est clair : l’objectif est d’interagir directement avec l’ingénierie, les équipes produit, et même les dirigeants de Nutanix. Concrètement, cela se traduit par des sessions techniques interactives où nous allons pouvoir « challenger » les choix d’architecture. C’est le moment idéal pour poser ces questions pointues qui restent souvent sans réponse sur les forums classiques, et surtout, pour avoir un aperçu exclusif (et strictement sous NDA !) de ce qui arrive dans les prochains mois.
L’autre immense atout du Tech Connect, c’est le networking. Se retrouver physiquement avec des NTC venus des quatre coins du monde, c’est l’assurance d’échanges d’une grande richesse dû à la provenance hétéroclite de l’ensemble des participants. On compare nos infrastructures, on partage nos retours d’expérience, et on trouve souvent des solutions à des problèmes complexes autour d’un simple café. C’est cette synergie entre experts passionnés qui fait la véritable force de la communauté Nutanix.
D’ici la fin octobre, la préparation va s’accélérer. Dans les prochaines semaines, nous aurons droit à un webinaire exclusif de « Kickoff » pour découvrir l’agenda détaillé, les sessions prévues et, on l’espère, quelques surprises. Ensuite, viendra le temps de sécuriser les vols et l’hébergement.
De mon côté, la préparation technique a déjà commencé ! Je compile mes notes, mes observations sur les dernières versions d’AOS, et surtout, les retours des collègues. Car oui, je compte bien être le porte-voix de notre communauté francophone lors de cet événement !
Merci et rendez-vous en Californie !
En attendant le mois d’octobre, je vais commencer à préparer tranquillement ma compilation de notes et observations et travailler sur quelques stickers à échanger avec les chers NTCs. Comptez sur moi pour vous faire un retour détaillé à mon retour (du moins, sur tout ce qui ne sera pas protégé par le NDA !).
Pour conclure, je tenais à adresser un immense et sincère merci à Angelo, ainsi qu’à toutes les équipes Nutanix, pour cette opportunité exceptionnelle et pour l’organisation de cet événement. La reconnaissance de cette communauté est un moteur puissant au quotidien.
Dans un précédent article, nous avons vu comment déployer OpenClaw sur Nutanix AHV. Cependant, avant de pouvoir profiter pleinement de cet agent IA autonome, il est crucial de préparer le terrain. OpenClaw n’est pas qu’un simple script : c’est un écosystème qui s’appuie sur plusieurs briques technologiques pour « penser » (LLM local), « exécuter » (Node.js) et « chercher » (SearXNG).
Dans cet article, nous allons détailler l’installation pas-à-pas de tous les prérequis nécessaires sur votre machine virtuelle (sous Ubuntu), en expliquant pour chacun pourquoi il est indispensable au bon fonctionnement d’OpenClaw.
1. Pilotes NVIDIA : Libérer la puissance du GPU
OpenClaw peut s’appuyer sur des modèles de langage (LLM) exécutés localement. Bien qu’il soit techniquement possible de faire tourner ces modèles sur un processeur (CPU), les performances seraient extrêmement lentes. L’installation des pilotes NVIDIA permet au système d’exploiter la carte graphique (GPU) allouée à votre VM via Nutanix AHV (vGPU ou Passthrough), garantissant ainsi une inférence rapide et fluide de l’IA.
Voici comment mettre à jour votre système et installer les pilotes adéquats :
# Mise à jour du système
sudo apt update && sudo apt upgrade -y
# Installation du pilote serveur NVIDIA
sudo apt install nvidia-driver-535-server -y
# Redémarrage nécessaire pour la prise en compte
sudo reboot
Après le redémarrage, vérifiez que votre GPU est bien reconnu avec la commande suivante :
nvidia-smi
2. Node.js (v24) : Le moteur d’exécution d’OpenClaw
Le cœur de la logique d’OpenClaw est développé en JavaScript/TypeScript. Node.js est l’environnement d’exécution qui permet de faire tourner le code de l’agent, de gérer ses dépendances et d’orchestrer les appels entre l’interface, le modèle d’IA et les différents outils. Nous ciblons ici la version 24.x pour assurer une compatibilité optimale.
# Ajout du dépôt NodeSource et installation
curl -fsSL [https://deb.nodesource.com/setup_24.x](https://deb.nodesource.com/setup_24.x) | sudo -E bash -
sudo apt install -y nodejs
# Vérification de la version installée
node --version # doit afficher v24.x
3. Ollama & Qwen 2.5 : Le cerveau local de l’opération
Ollama est l’outil qui va nous permettre de télécharger et de faire tourner facilement notre modèle d’IA en local. Pour OpenClaw, nous allons utiliser le modèle Qwen2.5 (7B). Pourquoi ce choix ? C’est un modèle léger (adapté pour les GPU avec environ 8 Go de VRAM) et, surtout, il est excellent en « Tool Calling » (l’appel d’outils). C’est cette capacité qui permet à OpenClaw de comprendre qu’il doit exécuter une recherche web ou lancer un script plutôt que de simplement générer du texte.
# Installation d'Ollama
curl -fsSL [https://ollama.ai/install.sh](https://ollama.ai/install.sh) | sh
# Démarrer le service Ollama (en arrière-plan)
ollama serve &
# Dans un autre terminal, vérifiez qu'Ollama détecte bien le GPU :
nvidia-smi # Vous devriez voir ollama dans la liste des processus GPU
# Puller (télécharger) le modèle recommandé
ollama pull qwen2.5:7b
# Tester le modèle et vérifier son exécution sur le GPU
ollama run qwen2.5:7b "dis bonjour"
# Pendant que le modèle génère une réponse, vérifiez l'utilisation de la VRAM
nvidia-smi
4. Docker : L’infrastructure de conteneurisation
Afin d’étendre les capacités d’OpenClaw (notamment pour la recherche web que nous verrons juste après), nous avons besoin de services tiers. Docker permet de déployer ces services de manière isolée, standardisée et rapide, sans polluer notre système hôte avec de multiples dépendances complexes.
# Installation des dépendances initiales
sudo apt update
sudo apt install -y ca-certificates curl gnupg
# Ajout de la clé GPG officielle de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](https://download.docker.com/linux/ubuntu/gpg) | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Configuration du dépôt Docker
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
[https://download.docker.com/linux/ubuntu](https://download.docker.com/linux/ubuntu) \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installation des paquets Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Ajout de votre utilisateur au groupe docker pour éviter d'utiliser 'sudo' à chaque fois
sudo usermod -aG docker $USER
newgrp docker
# Vérification de l'installation
docker --version
5. SearXNG : Donner un accès au Web à l’IA
Pour qu’OpenClaw soit un véritable agent de recherche performant, il ne peut pas se contenter des données contenues dans le modèle Qwen (qui s’arrêtent à sa date d’entraînement). SearXNG est un métamoteur de recherche respectueux de la vie privée. En l’installant via Docker, nous offrons à OpenClaw une API (sur le port 8080) qu’il va pouvoir utiliser pour aller chercher en temps réel des informations sur le web et sourcer ses réponses.
# Créer un répertoire dédié pour la configuration
mkdir -p ~/searxng && cd ~/searxng
# Lancer le conteneur SearXNG
docker run -d \
--name searxng \
--restart unless-stopped \
-p 8080:8080 \
searxng/searxng
# Vérifier que le conteneur tourne correctement
docker ps
# Tester que l'API de SearXNG répond bien
curl http://localhost:8080
6. Homebrew & GCC : Les outils de compilation
L’écosystème Node.js d’OpenClaw fait parfois appel à des bibliothèques bas niveau ou à des packages natifs qui nécessitent d’être compilés directement sur votre machine lors de leur installation. Homebrew (le gestionnaire de paquets bien connu sur macOS, très pratique aussi sur Linux) et le compilateur GCC sont indispensables pour éviter les erreurs lors de la phase d’installation finale des dépendances (les fameux npm install).
# Installer le package de compilation de base Ubuntu
sudo apt-get install build-essential
# Installer Homebrew
/bin/bash -c "$(curl -fsSL [https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh](https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh))"
# Les instructions de fin d'installation d'Homebrew vous demanderont
# d'ajouter Homebrew à votre PATH. Généralement cela ressemble à ceci :
# (Assurez-vous d'adapter le chemin si nécessaire)
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/$USER/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
# Installation de GCC via Homebrew
brew install gcc
Conclusion
Votre machine virtuelle sous Nutanix AHV est désormais un environnement riche et complet, équipé de pilotes GPU performants, d’un moteur d’exécution (Node.js), d’un LLM prêt à répondre (Ollama), d’un accès au Web (SearXNG) et des bons outils de compilation.
Le terrain est parfaitement préparé. Il ne vous reste plus qu’à finaliser l’installation de l’application elle-même en suivant la suite de notre guide sur OpenClaw.
On a tous connu ce moment de solitude dans notre parcours professionnel. Celui où tu as planifié l’upgrade matériel pour ton infrastructure, mais où un détail insignifiant vient perturber le déroulé des opérations. Récemment, nous devions remplacer les disques mécaniques 3.5 pouces d’un de nos clusters de 4 nœuds par des disques SSD 2.5 pouces. Une opération de maintenance classique pour passer d’un stockage hybride a une stockage full-flash et gagner en IOPS.
Seul problème, et de taille : les caddys d’origine des serveurs n’étaient pas compatibles avec ce format réduit.
Première approche : les adaptateurs “officiels”
La solution évidente quand on gère une infra pro ? Commander des adaptateurs officiels ou des caddys de remplacement. Il nous fallait 24 pièces au total (6 disques pour chacun des 4 nœuds). Et là, c’est la douche froide.
Plus de 500 euros (avec les taxes et la livraison).
Mais le pire n’était finalement pas le prix : c’était le délai d’approvisionnement. Attendre plusieurs semaines alors que le projet devait avancer ? Inenvisageable. Puisque je refuse de payer ce tarif et que les délais sont beaucoup trop longs, mon imprimante 3D va s’en charger.
La plan B : la solution DIY
L’avantage d’avoir du matériel standard comme du Supermicro, c’est que l’on n’est jamais le premier à rencontrer un problème. Pas besoin de passer des heures sur Fusion 360 à modéliser la pièce au millimètre près : la communauté open-source l’a probablement déjà fait.
En quelques clics sur les plateformes de partage de modèles 3D (comme Printables ou Thingiverse), j’ai déniché le fichier .stl parfait : https://www.thingiverse.com/thing:4353094
Pour m’assurer de la compatibilité, j’en ai imprimé un rapidement pour valider les dimensions et que cela faisait le job…
L’étape suivante : l’industrialisation. J’ai positionné mes modèles de sorte de pouvoir imprimer 6 adaptateurs d’un seul coup. Cela impliquait de laisser tourner l’imprimante pendant 7h30 environ pour chaque plateau.
Sur ma Creality CR-10S Pro v2 tournant sous Klipper, j’ai pu monitorer le job d’impression pour m’assurer que tout se passait comme prévu du coin de l’oeil tout en continuant à travailler sur mes projets.
Malgré un couac lors du premier batch qui m’a contraint à faire un peu de mécanique, les impressions se sont parfaitement bien déroulées.
Maker Spirit for the Win !
Le verdict final est sans appel :
Option Fournisseur : ~543 € et 3 semaines d’attente.
Option Maker : 20 € de filament, quelques kWh et deux grosses journées d’impression.
Au-delà de l’économie financière évidente (pour le prix des adaptateurs officiels, on aurait pu acheter l’imprimante + le filament), la vraie leçon de cette aventure, c’est que l’état d’esprit maker permet de transformer une problématique budgétaire et temporelle en une solution DIY 20 fois moins chère et qui fait le job dans des délais ultra-courts.
Alors, la prochaine fois qu’un problème pointe le bout de son nez, pensez “out-of-the-box” et éventuellement, dégainez votre plus belle bobine de filament.
Si vous avez lu mon précédent article détaillant l’architecture et la stack technique que j’ai retenu pour déployer OpenClaw, vous savez déjà pourquoi j’ai choisi de faire tourner cette solution sur mon cluster Nutanix AHV. Aujourd’hui, on passe à la pratique ! Je vais vous montrer, étape par étape, comment déployer votre propre instance sur une machine virtuelle Ubuntu fraîchement installée.
Avant de lancer les hostilités, petit rappel de ma configuration. J’ai provisionné une VM sous Nutanix AHV avec :
8 vCPU
32 Go de RAM
250 Go de stockage
une carte NVIDIA Tesla P4 en PCI Passthrough
💡 Pourquoi avoir privilégié le Passthrough complet plutôt que du vGPU (virtual GPU) ? Tout simplement pour garantir des performances d’inférence quasi « bare-metal ». En donnant un accès direct et exclusif au matériel physique à notre VM, on élimine totalement l’overhead (la latence) lié à la couche de virtualisation.
C’est parti pour le déploiement.
Préparation de la VM Ubuntu : Système et Pilotes NVIDIA
La toute première étape consiste à préparer le terrain pour déployer notre IA.
Ubuntu 24.04 : Mise à jour du système d’exploitation
C’est une règle que j’applique à chaque fois que je déploie un nouveau système d’exploitation. Dès que je me connecte en SSH, je m’assure que tous les paquets sont à jour pour éviter de futures failles de sécurité ou des conflits de dépendances.
sudo apt update && sudo apt upgrade -y
GPU : Installation des drivers NVIDIA
Pour qu’OpenClaw puisse exploiter la puissance de calcul de ma Tesla P4, le système d’exploitation doit être en mesure lui parler correctement. Voici les commandes à passer pour installer le drivers (vous pouvez accéder à un guide plus détaillé sur le blog) :
Une fois la machine redémarrée, on se reconnecte et on tape la commande pour vérifier que notre GPU est bien détecté et prêt à travailler :
nvidia-smi
Node.js et OpenClaw
Installation de Node.js 22
OpenClaw est bâti sur Node.js. Pour s’assurer de disposer d’un environnement d’exécution récent et performant (ici la version 22), on ajoute le dépôt officiel de NodeSource avant de lancer l’installation :
Maintenant que NodeJS est en place, on passe à l’installation d’OpenClaw. Un simple script curl fourni par les développeurs s’occupe du gros du travail :
Une fois l’installation terminée, le système lance automatiquement l’assistant de configuration de votre instance. Je détaillerai cette étape ainsi que les créations de clés API (Discord, Telegram, etc…) dans un futur article.
Une petite manipulation est requise juste après l’installation d’OpenClaw si on veut pouvoir utiliser les commandes “openclaw” sans contrainte. Il faut ajouter le répertoire d’installation local à notre variable d’environnement PATH (pensez à adapter le nom d’utilisateur si vous n’utilisez pas administrateur) :
💡 Pourquoi cette manipulation ? C’est une excellente pratique de sécurité que je vous recommande. En exportant le PATH vers ~/.npm-global/bin, on évite d’installer des paquets globaux NPM avec les privilèges root (sudo). Cela réduit considérablement les surfaces d’attaque et vous épargne les éternels conflits de permissions sous Linux !
Exposer proprement OpenClaw avec Caddy
Par défaut, l’interface web d’OpenClaw écoute sur le port 18789. Au lieu d’attaquer ce port de manière brute, je préfère toujours placer un reverse proxy devant mes applications. Pour ce lab, mon choix s’est porté sur Caddy.
sudo apt install -y caddy
💡 Pourquoi Caddy plutôt qu’Apache ou Nginx ? Parce que Caddy est redoutablement efficace. Là où Nginx réclame parfois de longs blocs de configuration pour du proxying simple, Caddy accomplit le même travail en littéralement trois lignes de code, le tout de manière ultra légère.
On édite son fichier de configuration :
sudo vi /etc/caddy/Caddyfile
Et on remplace l’intégralité du contenu par les instructions suivantes (remplacez l’IP par celle de votre VM, dans mon cas 192.168.84.134) :
192.168.84.134 {
reverse_proxy 127.0.0.1:18789
}
Il ne reste plus qu’à redémarrer le service pour que le proxy prenne le relais :
sudo systemctl restart caddy
Sécurité réseau : Verrouiller l’instance OpenClaw
Avoir une instance fonctionnelle c’est bien, la sécuriser c’est indispensable. Même si vous êtes sur votre réseau local (LAN), il ne faut jamais laisser l’accès libre à votre interface de contrôle. Nous allons appliquer une configuration stricte via les commandes CLI d’OpenClaw.
On commence par restreindre l’écoute de la Gateway à la boucle locale pour empêcher tout accès direct :
openclaw config set gateway.bind loopback
On force ensuite le mode de fonctionnement en local, et on active l’authentification par token (le minimum syndical) :
openclaw config set gateway.mode local
openclaw config set gateway.auth.mode token
Enfin, comme nous passons par Caddy, il faut autoriser les requêtes Cross-Origin (CORS) provenant de notre adresse IP, sans quoi le navigateur bloquera la page (n’oubliez pas d’adapter l’IP) :
openclaw config set gateway.controlUi.allowedOrigins '["[https://192.168.84.134](https://192.168.84.134)"]'
On redémarre le service pour appliquer notre blindage :
openclaw gateway restart
💡 Le pattern de sécurité appliqué ici s’apparente à du « Zero Trust » local. En forçant OpenClaw sur le loopback (127.0.0.1), on s’assure qu’absolument tout le trafic est obligé de passer par notre proxy Caddy. Couplé au filtrage CORS et à l’authentification, on protège un minimum notre instance contre d’éventuels scans ou scripts malveillants sur le réseau.
Premier contact et validation de la configuration
Récupération du Token d’accès
Maintenant que les portes sont fermées, il nous faut la clé. Le token d’authentification a été généré automatiquement lors de l’installation. On va aller le pêcher directement dans le fichier JSON de configuration :
grep -i token ~/.openclaw/openclaw.json
Copiez précieusement cette chaîne de caractères. Ouvrez ensuite votre navigateur et accédez à votre interface Web (ex: https://192.168.84.134).
Entrez le token dans l’encart « Gateway Token ».
Approbation du périphérique
Une fois connecté, vous remarquerez qu’il manque quelque chose : le système attend que l’on approuve le « périphérique » (le PC ou la tablette depuis laquelle on souhaite utiliser OpenClaw) pour lui accorder le droit de traiter des requêtes.
Retournez dans votre terminal pour lister les périphériques en attente :
openclaw devices list
Repérez l’ID de votre périphérique dans la liste (une chaîne de type UUID) et approuvez-le :
💡 L’approbation d’un périphérique (devices approve) est bien plus qu’une simple formalité d’interface. C’est une sorte de handshake cryptographique. Ce mécanisme garantit qu’aucune machine non sollicitée ne puisse se greffer à votre instance cluster OpenClaw à votre insu !
Tests d’interaction
L’instance OpenClaw est à présent 100% opérationnelle ! Pour valider l’ensemble de notre stack, rien de tel qu’un test grandeur nature. Vous pouvez envoyer un premier prompt sur le chat intégré de l’interface web, ou configurer un pont pour envoyer un message côté Discord.
Conclusion
Nous sommes passés d’une simple VM Ubuntu à un véritable serveur d’inférence sécurisé, propulsé par Node.js et accéléré par un GPU NVIDIA Tesla P4 dédié via Nutanix AHV. L’architecture est propre, sécurisée derrière un proxy Caddy, et prête à encaisser nos requêtes.
Mais ce n’est que le début. Dans les prochains articles, nous irons encore plus loin : je vous montrerai comment configurer OpenClaw via l’assistant de départ, déployer des modèles locaux via Ollama, créer un bot Discord interactif, et même injecter des clés API Google pour doter notre IA de capacités de recherche. Restez connectés !
Si vous suivez un peu mes pérégrinations sur le blog, vous savez que j’adore triturer mes clusters et tester des trucs un peu out-of-the-box (cf. mes articles avec le Steamdeck par exemple). Récemment, je me suis fait une réflexion : Gemini ou Claude dans le cloud public, c’est super pour coder un script Python ou rédiger des mails. Mais quand il s’agit de lui demander d’interagir avec notre infrastructure locale, c’est là que ça coince.
Je me suis donc demandé comment je pourrais connecter l’intelligence artificielle au plus près de mes VMs. C’est dans cette optique que j’ai mis les mains sur OpenClaw. Honnêtement, ça a un peu été le parcours du combattant au démarrage. Fini le simple gadget conversationnel, on parle ici de déployer une véritable IA Privée sur un cluster Nutanix AHV capable d’agir sur notre infrastructure. Laissez-moi vous présenter la stack technique que j’ai retenue pour cette expérience.
OpenClaw : qu’est-ce que c’est ?
Pour ceux qui vivaient dans une grotte ces derniers mois, OpenClaw c’est un projet GitHub qui a dépassé les 300k étoiles en seulement quelques mois. Imaginez un traducteur de pensée ultra-intelligent couplé à un majordome. Au lieu de cliquer sur des dizaines de menus dans une interface complexe, vous demandez simplement à votre infrastructure de travailler pour vous en langage naturel (via une interface web universelle ou même des messageries comme WhatsApp et Telegram). Il est même capable de bosser tout seul pendant que vous dormez !
Mais là où ça devient passionnant pour nous, les ingénieurs, c’est sous le capot. OpenClaw n’est pas un énième modèle de langage (LLM) « stateless » qui oublie tout à chaque nouvelle requête. C’est une véritable Agentic Gateway. Concrètement, cela signifie qu’elle orchestre des agents autonomes équipés d’outils. Ces agents peuvent être configurés pour taper directement dans les API privées de notre cluster (comme les API REST de Prism Element ou Prism Central), coder, parcourir le web et en synthétiser certaines informations. Bref, on ne pose plus simplement des questions à l’IA, on lui délègue des tâches.
Pourquoi l’héberger en Self-hosted ?
Sur le terrain, la question de la gouvernance des données se pose à la seconde où l’on prononce le mot « IA ». Hors de question d’envoyer des informations sensibles sur des serveurs dont je n’ai pas la maîtrise !
Faire le choix du Self-hosted (auto-hébergement) avec OpenClaw, c’est reprendre le contrôle absolu. Les flux de données, les logs d’exécution et les identifiants d’API restent cloisonnés bien au chaud sur mon réseau, isolés d’internet si on le souhaite.
Architecture et Stack Technique
Pour ce projet, hors de question de faire un simple « Next, Next, Finish » sur un coin de table. Voici l’architecture technique robuste que j’ai fini par valider pour mon déploiement.
Le socle : Nutanix AHV & Ubuntu 24.04 LTS
Pour faire tourner la bête, il faut des fondations solides. J’ai provisionné une machine virtuelle sous Ubuntu 24.04 LTS hébergée directement sur mon cluster Nutanix AHV.
Côté dimensionnement, je suis parti sur 8 vCPU, 32 Go de RAM et 250 Go de stockage dédié. Vous allez peut-être me dire : « 32 Go pour une gateway, c’est pas un peu too much ? » La gateway va devoir ingérer des flux de données conséquents, maintenir le cache des différents agents actifs, et potentiellement gérer du requêtage d’API lourd en parallèle. Et puis, je peux affecter ces ressources sur mon lab, alors pourquoi s’en priver ?
Le moteur applicatif : NodeJS 22
Au cœur d’OpenClaw, la magie opère grâce à NodeJS 22. C’est le moteur d’exécution qui fait tourner la gateway et ses intégrations d’agents IA.
Pourquoi Node 22 est un excellent choix architectural ici ? Pour sa gestion de l’asynchrone (Event Loop). Quand vous demandez à OpenClaw de faire un rapport d’état sur 50 VMs, la gateway va initier de multiples appels d’API vers Prism Central tout en maintenant votre flux WebSocket ouvert pour vous répondre en temps réel dans l’interface de chat. NodeJS excelle dans cette gestion de la concurrence non-bloquante.
Le routage réseau : Caddy
Le mode de fonctionnement habituel d’OpenClaw, c’est de le déployer en local sur la machine depuis laquelle on va s’y connecter, ou bien de monter un tunnel pour pouvoir accéder à l’instance distante. On ne va pas se mentir, j’avais envie de taper l’IP dans mon navigateur et de pouvoir accéder à mon instance, que je sois sur mon PC ou sur ma tablette.
Pour rendre ceci possible, j’utilise un reverse proxy sous Caddy. Caddy gère le routage du trafic et le chiffrement HTTPS de manière totalement automatisée.
Je vous entends déjà me dire : “Oui mais si un mec se connecte sur ton réseau local, il aura accès à ton instance !”. Eh bien non ! Parce qu’OpenClaw intègre nativement un système de Device Whitelisting (liste blanche de périphériques). Si votre PC n’a jamais été connecté à l’instance, vous devrez fournir le “Gateway Token”. Ensuite, vous devrez accepter cette nouvelle connexion du côté de l’instance OpenClaw. Vous l’aurez compris, seuls les périphériques préalablement autorisés peuvent profiter de votre instance locale.
Le point d’entrée : Discord
Le choix du point d’entrée, ce qui vous permettra d’interagir avec OpenClaw, c’est souvent une question de goûts et de couleurs.
OpenClaw intègre directement un système de chat pour que vous puissiez discuter avec lui. C’est bien, c’est natif, mais inaccessible si je ne suis pas chez moi. Le système propose également de configurer des points d’entrée externes comme Telegram, WhatsApp, Discord ou encore Teams et Slack. Et ça, c’est clairement un gros plus car cela donne des possibilités quasi illimitées !
Et ensuite ?
L’objectif de cet article était de vous présenter l’architecture envisagée pour mon assistant OpenClaw, de comprendre ce que l’on déploie et pourquoi. Nous avons donc une stack technique cohérente, performante grâce à Nutanix AHV, et hébergée en local.
Dans un prochain article, je vous expliquerai comment installer OpenClaw étape par étape jusqu’à avoir une instance fonctionnelle.
L’intégration de puissance de calcul graphique au sein d’environnements virtualisés est devenue un incontournable. Que ce soit pour faire tourner des modèles d’Intelligence Artificielle, du Machine Learning ou simplement pour du traitement vidéo intensif, nos machines virtuelles ont de plus en plus besoin de muscles.
Lorsque je discute avec des clients, je reçois souvent des questions à ce sujet : comment assigner une carte graphique physique à une VM de manière simple et performante ?
Aujourd’hui, je vous propose de voir ensemble comment déployer un GPU NVIDIA Tesla P4 sur une VM Ubuntu Server 24.04 hébergée sous Nutanix AHV, en utilisant le mode « Passthrough ».
1. Les prérequis
Avant de mettre les mains dans le cambouis, prenons un instant pour vérifier notre équipement. Une bonne préparation, c’est la moitié du travail de fait ! J’ai moi-même perdu des heures par le passé à cause d’un simple prérequis oublié.
Pour suivre ce tutoriel, vous aurez besoin de :
Un nœud Nutanix (cluster physique) équipé d’au moins une carte NVIDIA Tesla P4.
Une machine virtuelle sous Ubuntu Server 24.04.
Un accès SSH fonctionnel vers cette VM avec des privilèges sudo.
Bien que Nutanix AHV gère cela de manière transparente pour vous, gardez en tête que le mode Passthrough repose sur des instructions matérielles spécifiques. Il nécessite que les extensions de virtualisation des I/O (VT-d chez Intel ou AMD-Vi chez AMD) soient bien activées au niveau du BIOS de votre nœud physique. Si un jour vous montez un cluster « home-lab », c’est la première chose à vérifier !
2. Configuration côté Nutanix : Le mode Passthrough
Maintenant que notre base est solide, passons à l’interface d’administration. C’est ici que la magie opère. Que vous utilisiez Prism Element ou Prism Central, la logique reste la même. Assurez-vous d’abord que votre machine virtuelle est bien éteinte.
Allez dans les paramètres de votre VM, sélectionnez « Update », puis descendez jusqu’à la section « GPUs ». Cliquez sur « Add GPU ».
Dans la fenêtre qui s’ouvre, le choix est crucial : dans le menu déroulant « GPU Type », sélectionnez le mode Passthrough, puis choisissez votre Tesla P4 dans la liste.
Le mode Passthrough est une fonctionnalité particulière : il permet de « donner les clés » matérielles de la carte graphique directement à la machine virtuelle. L’OS invité a l’illusion (et les avantages) de posséder la carte physiquement.
Vous vous demandez peut-être pourquoi nous privilégions le Passthrough plutôt que le vGPU ? C’est une question de cas d’usage, mais aussi d’architecture.
Le vGPU permet de découper virtuellement une carte pour la partager entre plusieurs VMs, ce qui est génial pour du VDI, mais il nécessite l’installation et la maintenance d’un serveur de licences NVIDIA (vGPU Software).
Le Passthrough, en revanche, dédie 100% de la puissance de la Tesla P4 à notre VM Ubuntu, sans aucun serveur de licence additionnel. Pour un besoin de performance brute mono-VM, c’est clairement la meilleure option.
3. Préparation et mise à jour d’Ubuntu 24.04
Une fois le GPU attaché, sauvegardez la configuration, allumez votre VM et connectez-vous en SSH.
Avant de nous précipiter sur l’installation des drivers NVIDIA, il y a une étape que je ne saute absolument jamais : la mise à jour du système.
Tapez simplement cette commande :
sudo apt update && sudo apt upgrade -y
Les pilotes propriétaires NVIDIA s’appuient sur le système DKMS (Dynamic Kernel Module Support) pour compiler les modules du noyau à la volée lors de l’installation.
Si vos en-têtes de noyau (kernel headers) ne sont pas parfaitement synchronisés avec votre version actuelle du noyau linux, l’installation échouera silencieusement. Un système fraîchement mis à jour est votre meilleure garantie pour une compilation propre et sans accroc !
4. Installation des drivers NVIDIA (Branche Server)
Maintenant que notre système est propre et à jour, passons au plat de résistance. Sous Ubuntu, on a souvent le réflexe d’utiliser la commande ubuntu-drivers autoinstall ou d’installer la dernière version « desktop » à la mode. Je vous arrête tout de suite !
Pour un serveur, surtout en production, la stabilité est le maître mot. C’est pourquoi nous allons installer la branche « Server » du pilote. Tapez la commande suivante :
sudo apt install nvidia-driver-535-server -y
💡 L’astuce de l’Expert : Pourquoi précisément le paquet « server » ? NVIDIA maintient des branches de pilotes spécifiques pour les data centers. La branche « Server » (ou Tesla driver) est conçue pour des cycles de vie longs (LTS) et minimise le risque de régression. Installer un pilote « Desktop » sur un hyperviseur ou un serveur IA, c’est s’exposer à ce qu’une mise à jour mineure casse votre environnement de production un vendredi à 17h !
Laissez l’installation se terminer (cela peut prendre quelques minutes le temps que DKMS compile le module pour votre noyau). Une fois terminé, un redémarrage est obligatoire pour charger correctement le pilote :
sudo reboot
5. Vérification
Après le redémarrage, reconnectez-vous en SSH à votre machine virtuelle. Pour vérifier que l’OS, le pilote et le matériel communiquent parfaitement, NVIDIA nous fournit un outil en ligne de commande :
nvidia-smi
Si tout s’est bien passé, vous devriez voir apparaître un magnifique tableau de bord en ASCII.
💡 Décryptage : En haut à droite, notez la CUDA Version (ici 12.2) : c’est la version maximale de l’API CUDA supportée par ce pilote, une info cruciale pour les développeurs IA. Regardez aussi la colonne Perf : elle indique « P0 », ce qui correspond à l’état de performance maximum (les « P-states » vont de P0 à P12 pour l’économie d’énergie). Si votre carte reste bloquée sur un P-state bas alors qu’elle est en charge, c’est qu’il y a un souci matériel ou thermique ! Enfin, cet output confirme que l’OS est prêt à accueillir le NVIDIA Container Toolkit (pour du Docker avec GPU).
Conclusion
Et voilà ! En quelques étapes simples, nous avons réussi à présenter physiquement notre GPU NVIDIA Tesla P4 à notre VM Ubuntu 24.04 sous Nutanix AHV. Le mode Passthrough nous a permis d’obtenir une configuration performante, sans latence et sans l’usine à gaz d’un serveur de licences externe.
Notre Tesla P4 est désormais correctement installée ! La prochaine étape logique ? Le déploiement de modèles LLM (Large Language Models) ou d’applications gourmandes en calcul dans des conteneurs isolés. Mais ça, ce sera pour un prochain article sur le blog !
Le codage assisté par IA, pour moi qui suis une buse en développement, c’est une révolution qui me permet de concrétiser des idées en quelques heures là où cela relevait de l’impossible auparavant. Mais cette vitesse a un prix que l’on néglige trop souvent : la dette technique.
Le contexte de développement
Récemment, j’en parlais ici, j’ai développé une petite application web nommée HYCU Upgrade Path. Le concept est simple : une interface épurée pour générer et visualiser l’upgrade path d’une version A à une version B du logiciel de backup.
Pour ce faire, j’ai utilisé Lovable, une solution « no-code/low-code » qui m’a permis en quelques jours de mettre l’application en ligne.
Quelques semaines plus tard, j’ai décidé de redévelopper l’application à l’aide de Gemini, l’IA multimodale de Google, pour voir ce qu’elle avait dans le ventre.
J’ai donné des instructions similaires à chacune des 2 IA. J’attendais un résultat fonctionnel et similaire des deux côtés. Ce que je n’avais pas prévu, c’est l’écart abyssal dans la structure du code… Et le temps passé.
On parle d’une différence de 628ko contre 115ko. On parle de passer de 79 fichiers à 21 fichiers. On parle d’une semaine contre une demi journée. Un gouffre.
L’expérience Lovable
Sur le papier Lovable vend du rêve : vous décrivez, ça s’affiche. Et c’est vrai, l’expérience utilisateur est bluffante de fluidité. J’ai décrit mon besoin pour HYCU Upgrade Path, et en quelques itérations, l’application tournait sous mes yeux. Visuellement, c’était propre avec quelques ajustements à faire. Fonctionnellement, c’était un peu plus bancal.
Je ne suis pas développeur, mais mon premier réflexe a été d’aller voir le repository généré. Et là… ça a été la douche froide.
Pour une application aussi simple qu’un générateur d’upgrade path, Lovable m’a pondu une véritable usine à gaz :
79 fichiers créés.
8 dossiers imbriqués.
Un poids total de 628ko.
Lovable a fragmenté l’application en une myriade de petits composants atomiques, a généré des fichiers de configuration en doublon et a importé des librairies « au cas où ». En regardant le dossier components/ui, j’ai trouvé 38 fichiers ! Des accordéons, des badges, des carrousels, des « toasters »… alors que mon app n’utilise qu’une fraction de tout ça.
C’est l’approche « Black Box » : tant que ça marche en façade, on ne se soucie pas de l’élégance du moteur. Le résultat est une application lourde et difficilement maintenable dans le temps. Et ça pour moi, c’est un premier red flag.
Coté modification du code par itération, je ne l’ai pas trouvé très précise. J’ai été contraint d’avancer par toutes petites itérations ce qui a rallongé le temps de développement… Une itération un peu trop musclée ? Ca cassait une fois sur deux mon interface ou donnait un résultat qui n’était pas celui attendu. Bref, pas hyper satisfait de l’expérience bien que j’ai réussi à atteindre mon but en une petite semaine de discussions.
L’expérience Gemini : L’architecte logiciel
Après cette semaine de lutte et quelques semaines en production, j’ai tenté la même expérience avec Gemini. Même prompt, même besoin, juste “pour voir” de quoi l’IA de Google était capable.
Le résultat ? Au départ, j’ai cru qu’il manquait des morceaux.
21 fichiers au total.
5 dossiers.
115ko sur la balance.
Temps de développement : une demi-journée.
Gemini a adopté une approche radicalement différente, bien plus mature. Au lieu d’importer une librairie graphique massive, il a structuré le code et n’a gardé que ce qui était réellement nécessaire.
En ouvrant le dossier src/components, la différence est flagrante : 7 fichiers, tous essentiels. Pas de bruit, pas de composants inutiles.
Plus impressionnant encore, Gemini m’a fourni une architecture « Prête à mettre en prod ». Là où Lovable m’a donné un frontend en vrac, Gemini a séparé proprement le frontend du backend, et m’a même généré un docker-compose.yml et un script de déploiement (deploy.sh) pour mon VPS. Il n’a pas juste codé l’interface, il a pensé à comment je la ferais tourner, avec un joli README.md en prime.
Pour le plaisir, j’ai ajouté quelques détails supplémentaires sur mon application au passage.
Le Match Technique : L’obésité vs L’efficacité
Comparons ce qui est comparable. Voici le bilan des courses pour la même fonctionnalité :
Métrique
Lovable
Gemini
Gain
Poids du projet
628 ko
115 ko
-82%
Nombre de fichiers
79
21
-73%
Philosophie
UI Kit complet (« au cas où »)
Code propre, lisible
Maintenance facilitée
Architecture
Frontend monolithique
Dockerisé (Front + Back)
Prêt à déployer
Temps de dev
1 semaine
1/2 journée
Productivité x10
Pourquoi la « propreté » compte (même pour les non-devs comme moi) ?
Vous pourriez me dire : « On s’en fiche du code ou du nombre de fichiers tant que l’app fonctionne ! ». C’est une erreur.
La maintenance : Modifier à la main le projet créé sous Lovable, c’est chercher une aiguille dans une botte de 79 fichiers. Avec Gemini, chaque fichier a un nom qui décrit réellement ce qu’il fait.
La consommation : 628ko de code à charger pour un utilisateur mobile, c’est lourd. 115ko, c’est presque instantané.
Le coût cognitif : Quand l’IA génère du code « brouillon », elle a elle-même plus de mal à se relire pour les itérations suivantes. C’est pour ça que Lovable « cassait » l’interface : elle se perdait dans sa propre complexité.
Conclusion : Le choix de l’outils fait la différence
Mon verdict est sans appel. Si vous voulez prototyper une idée en 10 minutes pour montrer que « ça bouge » à votre boss, Lovable fait illusion. C’est spectaculaire, c’est visuel, c’est une belle démo technologique.
Mais si vous voulez construire une application pérenne, que vous pourrez faire évoluer sans tout casser, une IA comme Gemini est bien plus performante à mes yeux.
L’écosystème évolue vite. Je ne l’ai pas testé pour le moment, mais un outils comme Claude Code doit même surement être capable de faire encore mieux.
We use cookies to improve your experience on our site. By using our site, you consent to cookies.
This website uses cookies
Websites store cookies to enhance functionality and personalise your experience. You can manage your preferences, but blocking some cookies may impact site performance and services.
Essential cookies enable basic functions and are necessary for the proper function of the website.
Name
Description
Duration
Cookie Preferences
This cookie is used to store the user's cookie consent preferences.
30 days
These cookies are needed for adding comments on this website.
Name
Description
Duration
comment_author
Used to track the user across multiple sessions.
Session
comment_author_email
Used to track the user across multiple sessions.
Session
comment_author_url
Used to track the user across multiple sessions.
Session
Statistics cookies collect information anonymously. This information helps us understand how visitors use our website.
Matomo is an open-source web analytics platform that provides detailed insights into website traffic and user behavior.