Installer Claude Code sur une VM Alpine de développement

Pourquoi installer Claude Code dans la VM ?

Quand on veut déléguer une partie du développement d'un projet à Claude Code, l'installer directement sur la VM de test/dev offre plusieurs avantages : pas de synchronisation à gérer entre poste local et VM, accès natif à la toolchain du projet (Go, tests, packaging), et un workflow homogène entre la session SSH et l'agent.

Voici la procédure suivie sur le projet chronos-web (application web de pointage en Go, déployée sur Alpine Linux), avec les pièges rencontrés et la méthode d'authentification qui s'est révélée la plus fiable.


Pré-requis Alpine

Anthropic supporte officiellement Alpine depuis la version 3.19, mais la distribution musl impose deux dépendances que glibc rend transparentes :

Installation des paquets :

apk update
apk add curl bash libgcc libstdc++ git

Installation du binaire natif

Anthropic recommande l'installateur natif plutôt que le paquet npm — il est autonome, ne dépend pas de Node.js, et se met à jour tout seul en arrière-plan.

curl -fsSL https://claude.ai/install.sh | bash
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.profile

Le binaire s'installe dans ~/.local/bin/claude. Vérification du bon état de l'installation :

claude --version
claude doctor

La commande claude doctor est l'outil de diagnostic officiel : elle signale les dépendances manquantes, les soucis de PATH, et confirme que le ripgrep système est bien utilisé.


Authentification : méthode du token API

Pourquoi pas OAuth ?

L'authentification OAuth via abonnement Pro/Max ouvre un navigateur côté serveur — ce qui ne fonctionne pas sur une VM headless en SSH. Le flux dit « device code » existe en théorie, mais souffre actuellement d'un bug récurrent lorsque le compte possède à la fois un abonnement Pro/Max et une organisation Console : l'erreur « Redirect URI is not supported by client » empêche complètement de se connecter.

La méthode du token API

La voie la plus fiable sur une VM headless est de passer par une clé API générée sur la Console Anthropic :

export ANTHROPIC_API_KEY="sk-ant-..."
echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.profile
claude

Conséquences à connaître


Organisation des documents projet

Claude Code travaille bien mieux quand il a accès au contexte de planification du projet, pas seulement au code. La convention retenue : un sous-dossier docs/ à la racine du dépôt, qui n'est pas dans le packaging final mais qui est versionné.

Transfert des documents de planification depuis le poste local :

ssh root@<ip-vm> 'mkdir -p /root/chronos-web/docs'
scp docs/*.txt docs/*.md root@<ip-vm>:/root/chronos-web/docs/

Bonnes pratiques en session

Toujours lancer claude dans le dossier projet

Lancer claude depuis ~/chronos-web et pas depuis ~. Sinon Claude Code indexe le home en entier, ce qui pollue le contexte et coûte des tokens pour rien.

Choisir le bon modèle pour la tâche

En session, la commande /model permet de basculer entre les modèles disponibles. Le bandeau du haut indique celui actuellement actif.

Planifier avant de coder

La règle qui économise le plus de tokens et de frustration : demander un plan d'action explicite avant toute écriture de code, et le valider fichier par fichier. Sans ça, Claude Code part vite, écrit beaucoup, et il faut tout repasser.

Formulation type pour un premier prompt sur un nouveau chantier :

Lis docs/RESUME_NEXT.md, docs/plan_developpement.txt
et les sections pertinentes du cahier.

Propose-moi un plan d'action concret pour l'étape N,
fichier par fichier, fonction par fonction.

N'écris aucun code à ce stade — on valide le plan
avant.

Surveiller la consommation

La commande /usage affiche la consommation de la session courante, ventilée par catégorie (skills, sous-agents, MCP, etc.). À regarder ponctuellement, surtout si on a opté pour Opus sur un long chantier.


Conclusion

L'installation de Claude Code sur une VM Alpine est rapide une fois les deux pièges contournés : les dépendances musl (libgcc, libstdc++, ripgrep système avec USE_BUILTIN_RIPGREP=0) et le bug OAuth sur les comptes mixtes (auquel on échappe en passant par une clé API Console dédiée).

L'investissement réel est dans la mise en place du contexte projet — dossier docs/ à jour, CLAUDE.md généré, RESUME_NEXT.md tenu à chaque fin de session. C'est ce qui transforme Claude Code d'un assistant générique en un développeur qui connaît vraiment le projet.



↑ Haut de page