Installer Claude Code et ChatGPT Codex sur un serveur Linux : pas à pas

Publié le 10 min de lecture

D une installation Debian ou Ubuntu fraîche à un agent IA opérationnel : utilisateur et liste blanche sudo, Node.js 22, installation et connexion de Claude Code et Codex CLI, CLAUDE.md et AGENTS.md, premières tâches et erreurs typiques.

Ce guide mène d un serveur Debian ou Ubuntu fraîchement installé à un agent IA opérationnel qui analyse les journaux, vérifie les configurations et exécute des tâches de maintenance. Nous installons Claude Code (Anthropic) et Codex CLI (OpenAI, l outil en ligne de commande derrière ChatGPT), tous deux sous un utilisateur dédié aux droits limités. Toutes les commandes ont été testées sur un serveur root KVM KernelHost avec Debian 13 et Ubuntu 24.04. Ce qu est un serveur géré par IA en général et quelles architectures existent est expliqué dans l article Serveur géré par IA : connecter des agents IA en toute sécurité.

État en septembre 2026. Les outils évoluent vite ; en cas de doute, vérifiez les options avec claude --help ou codex --help.

Prérequis

  • Un serveur root sous Debian 12 ou 13 ou Ubuntu 22.04 ou 24.04 avec accès root par SSH. Sous AlmaLinux et Rocky Linux, les étapes sont identiques, seules les commandes de paquets s appellent dnf au lieu d apt.
  • Durcissement de base effectué : connexion SSH par clé, pare-feu, mises à jour de sécurité automatiques. La liste de contrôle pour nouveaux serveurs root couvre cela.
  • Un compte chez Anthropic (Claude Pro, Max ou Team) ou une clé API, un compte ChatGPT (Plus, Pro ou Team) ou une clé API OpenAI. Un seul suffit si vous ne voulez installer qu un outil.
  • HTTPS sortant vers api.anthropic.com et api.openai.com. Sur les serveurs KernelHost, c est le cas d emblée ; un pare-feu restrictif de votre cru doit l autoriser.

Étape 1 : créer un utilisateur dédié et limiter sudo

L agent ne tourne jamais en root. Il reçoit son propre compte et, via une liste blanche sudo, exactement les commandes dont il a besoin. Commencez par quelques commandes en lecture et étendez la liste quand une tâche l exige vraiment.

sudo adduser --disabled-password --gecos "Agent IA" aiagent
sudo tee /etc/sudoers.d/aiagent >/dev/null <<'EOF'
aiagent ALL=(root) NOPASSWD: /usr/bin/journalctl *, /usr/bin/systemctl status *, /usr/bin/systemctl restart nginx, /usr/bin/apt-get update, /usr/bin/apt-get upgrade -y, /usr/bin/tail *, /usr/bin/df *, /usr/bin/ss *
EOF
sudo chmod 440 /etc/sudoers.d/aiagent
sudo visudo -cf /etc/sudoers.d/aiagent

La dernière ligne vérifie la syntaxe. Une erreur dans un fichier sudoers peut bloquer sudo pour tout le monde, d où la vérification systématique. --disabled-password garantit que personne ne peut se connecter en aiagent avec un mot de passe ; vous passerez plus tard dans le compte avec sudo -iu aiagent.

Si l agent doit modifier des fichiers dans /etc, ne lui autorisez pas nano via sudo (cela permettrait d éditer n importe quel fichier, y compris /etc/sudoers), mais travaillez avec un groupe et des droits d écriture ciblés, par exemple setfacl -m u:aiagent:rw /etc/nginx/sites-available/mon-site.conf. Pour commencer, il suffit amplement que l agent propose les modifications et que vous les appliquiez.

Étape 2 : installer Node.js 22

Les deux outils tournent avec Node.js. Claude Code exige au moins la version 18, Codex CLI au moins la 22 ; nous installons donc la 22 LTS. Les dépôts de Debian 12 fournissent une version trop ancienne ; NodeSource fournit la version actuelle :

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
node --version
npm --version

Qui préfère ne pas exécuter de scripts venant d internet avec les droits root utilise nvm dans le répertoire personnel de l utilisateur agent ; c est alors entièrement possible sans droits root. Détails et alternatives dans le guide Node.js sur Debian.

Étape 3 : installer Claude Code et se connecter

À partir d ici, nous travaillons dans le compte de l agent :

sudo -iu aiagent
curl -fsSL https://claude.ai/install.sh | bash
claude --version

L installateur natif place Claude Code sous ~/.local/bin et se tient à jour tout seul. Sinon, npm fonctionne avec npm install -g @anthropic-ai/claude-code ; en cas d échec avec EACCES, la section de dépannage plus bas vous aidera.

Au premier lancement de claude, l outil demande une connexion. Avec un compte Claude, il ouvre normalement le navigateur ; sur un serveur sans navigateur, il affiche une adresse et un code à confirmer sur un ordinateur portable ou un smartphone. Pour les scripts et les tâches cron, une clé API est le meilleur choix :

echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
chmod 600 ~/.bashrc
source ~/.bashrc
claude -p "Réponds uniquement OK" 

La clé ne se trouve ainsi que dans le répertoire personnel de l utilisateur agent, illisible pour les autres utilisateurs. Créez-la dans la console Anthropic avec un plafond de dépenses mensuel : une session qui dérape ne pourra alors pas coûter cher.

Étape 4 : configurer Claude Code pour le serveur

Au démarrage, Claude Code lit un fichier CLAUDE.md dans le répertoire courant. Il contient les règles valables pour chaque session. Créez dans le répertoire personnel de l agent un répertoire de travail avec ce fichier :

mkdir -p ~/server && cd ~/server
cat > CLAUDE.md <<'EOF'
# Règles pour ce serveur
- Ceci est un serveur de production (Debian 13, nginx, PHP-FPM, MariaDB).
- Les commandes en lecture (journalctl, systemctl status, tail, df, ss) sont toujours autorisées.
- Avant toute commande d écriture, expliquer brièvement ce qu elle change et attendre la validation.
- Ne jamais supprimer de paquets, ne jamais effacer de fichiers sous /var/lib, ne jamais créer ni supprimer d utilisateurs.
- Ne jamais répéter de mots de passe, de clés ou de données clients dans les sorties.
- À la fin de chaque tâche, fournir un résumé en trois phrases.
EOF

S y ajoute une liste blanche d outils, pour que Claude Code exécute les commandes en lecture sans demander et sollicite une validation pour tout le reste. Le fichier ~/.claude/settings.json s applique à l utilisateur :

mkdir -p ~/.claude
cat > ~/.claude/settings.json <<'EOF'
{
  "permissions": {
    "allow": [
      "Bash(sudo journalctl:*)",
      "Bash(sudo systemctl status:*)",
      "Bash(sudo tail:*)",
      "Bash(df:*)",
      "Bash(free:*)",
      "Bash(ss:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo rm:*)",
      "Bash(dd:*)",
      "Bash(mkfs:*)"
    ]
  }
}
EOF

Maintenant la première tâche, en interactif :

cd ~/server && claude
> Résume les erreurs de journalctl des dernières 24 heures et nomme les trois causes les plus fréquentes.

Et la même tâche sans surveillance, par exemple en tâche cron quotidienne à 7 h dont le résultat arrive par e-mail :

0 7 * * * cd /home/aiagent/server && /home/aiagent/.local/bin/claude -p "Résume les erreurs et avertissements de journalctl des dernières 24 heures. Indique le service, l heure et la cause probable." --allowedTools "Bash(sudo journalctl:*)" 2>&1 | mail -s "Rapport quotidien serveur" admin@example.com

L option -p lance Claude Code sans session interactive, --allowedTools limite les outils à ce dont l exécution a besoin. Les actions d écriture n ont pas leur place dans des exécutions sans surveillance.

Étape 5 : installer Codex CLI (ChatGPT) et se connecter

Codex CLI est l outil d OpenAI qui amène les modèles derrière ChatGPT en ligne de commande. Installation dans le même compte utilisateur :

npm install -g @openai/codex
codex --version

La connexion se fait avec le compte ChatGPT (Plus, Pro ou Team) : lancer codex, choisir « Sign in with ChatGPT » et ouvrir l adresse affichée sur un appareil avec navigateur. Pour les scripts, définissez plutôt une clé API de la plateforme OpenAI :

echo 'export OPENAI_API_KEY="sk-..."' >> ~/.bashrc
source ~/.bashrc

Codex apporte son propre bac à sable et un mode de validation. Les deux se définissent dans ~/.codex/config.toml ; pour un serveur de production, cette combinaison est judicieuse :

mkdir -p ~/.codex
cat > ~/.codex/config.toml <<'EOF'
approval_policy = "on-request"
sandbox_mode = "workspace-write"
EOF

workspace-write n autorise l écriture que dans le répertoire de travail courant, on-request fait demander une permission à l agent pour tout ce qui va au-delà. Le niveau danger-full-access supprime les deux et n a pas sa place sur un système de production. Codex lit des règles comme celles de CLAUDE.md dans un fichier AGENTS.md du répertoire de travail ; vous pouvez réutiliser le même contenu :

cp ~/server/CLAUDE.md ~/server/AGENTS.md
cd ~/server && codex "Vérifie si tous les services systemd activés tournent et liste ceux en échec avec leur dernier message d erreur."

Pour les exécutions sans surveillance, il existe codex exec "tâche", le pendant de claude -p.

Alternative : l agent tourne sur votre ordinateur et travaille via SSH

Qui ne veut rien installer sur le serveur lance Claude Code ou Codex sur l ordinateur portable et laisse l agent envoyer les commandes via SSH. Le serveur reçoit pour cela une clé SSH dédiée à l utilisateur agent, et CLAUDE.md contient la règle de préfixer toutes les commandes serveur par ssh aiagent@serveur. Cela fonctionne bien pour une maintenance occasionnelle, mais les tâches longues et les tâches cron tournent mieux directement sur le serveur.

Étape 6 : sécuriser et fixer des limites

  • Snapshot ou sauvegarde avant chaque session où quelque chose doit changer. La stratégie de sauvegarde pour serveurs montre comment l automatiser.
  • Laisser le mode de validation actif. --dangerously-skip-permissions chez Claude Code et danger-full-access chez Codex sont prévus pour des VM jetables.
  • Secrets hors de portée. L utilisateur agent ne doit pas pouvoir lire les fichiers .env, les mots de passe de base de données et les données clients. Ce qu il lit part chez le fournisseur.
  • Plafond de coûts pour chaque clé API dans la console du fournisseur.
  • Traçabilité : installer etckeeper pour que chaque modification sous /etc aille dans Git, et conserver les résumés de l agent.
  • Rien ne change en entrée. Les deux outils n ont besoin que de HTTPS sortant. Pare-feu, Fail2ban et la protection DDoS de l hébergeur restent inchangés.

Erreurs typiques et solutions

MessageCause et solution
EACCES: permission denied avec npm install -gnpm veut écrire dans un répertoire système. Définir un préfixe utilisateur : npm config set prefix ~/.npm-global, puis ajouter export PATH=~/.npm-global/bin:$PATH dans ~/.bashrc et réinstaller.
Node.js version ... is not supportedVersion trop ancienne issue des dépôts de la distribution. Refaire l étape 2 et vérifier avec node --version que la 22.x est active.
La connexion n ouvre pas de navigateurNormal sur un serveur. Ouvrir l adresse affichée sur un autre appareil et saisir le code, ou passer à une clé API.
ECONNREFUSED ou délai dépassé au démarrageHTTPS sortant bloqué. Vérifier les règles de pare-feu pour le port 443 en sortie ; sur les serveurs KernelHost, le trafic sortant est libre d emblée.
429 rate limit ou overloadedQuota de l abonnement ou de l API épuisé, ou fournisseur surchargé. Attendre un peu, prévoir une nouvelle tentative après quelques minutes pour les exécutions sans surveillance.
L agent demande à chaque commandeCompléter la liste blanche dans ~/.claude/settings.json ou approval_policy dans config.toml, mais uniquement avec des commandes en lecture.

Conclusion

Un agent IA sur le serveur s installe en une heure : utilisateur, liste blanche sudo, Node.js, outil, règles. Le vrai travail réside dans les limites, et elles sont ici volontairement étroites. Élargissez-les pas à pas quand une tâche l exige, jamais en bloc. Sur un serveur root KernelHost ou un serveur dédié, rien n est à activer pour cela : accès root, libre choix de la distribution et connexions sortantes sont la norme.

Questions fréquentes

Faut-il un abonnement pour Claude Code ou une clé API suffit-elle ?
Les deux fonctionnent. Avec un compte Claude (Pro, Max ou Team), vous vous connectez via le navigateur au premier démarrage, sur un serveur sans navigateur via un code sur un autre appareil. Pour les tâches automatisées sans humain devant, une clé API dans la variable d environnement ANTHROPIC_API_KEY est la voie la plus propre, car elle n est pas liée à une personne et peut être plafonnée par un budget.
Comment connecter Codex CLI sur un serveur sans navigateur ?
Soit par la connexion avec le compte ChatGPT, Codex affichant une adresse à ouvrir sur un ordinateur portable ou un smartphone, soit via la variable d environnement OPENAI_API_KEY avec une clé de la plateforme OpenAI. Pour les tâches cron et les scripts, la clé API est la variante la plus fiable.
Quelle version de Node.js faut-il ?
Claude Code exige au moins Node.js 18, Codex CLI au moins Node.js 22. Installez donc directement Node.js 22 LTS via le dépôt NodeSource ou avec nvm dans le répertoire personnel de l utilisateur agent. La version des dépôts Debian 12 est trop ancienne.
Pourquoi npm install -g échoue-t-il avec EACCES ?
Parce que npm veut écrire globalement dans un répertoire système sur lequel l utilisateur n a pas de droits. Définissez un préfixe utilisateur avec npm config set prefix ~/.npm-global, ajoutez ~/.npm-global/bin au PATH et réinstallez. Vous pouvez aussi utiliser nvm ou, pour Claude Code, l installateur natif qui se passe de npm.
Puis-je exécuter Claude Code dans une tâche cron ?
Oui, avec claude -p et une tâche en texte ainsi qu une liste blanche des outils autorisés. Utilisez une clé API, limitez les outils aux commandes en lecture et redirigez la sortie vers un fichier ou un e-mail. Les actions intrusives n ont pas leur place dans des exécutions sans surveillance.
Cela fonctionne-t-il aussi sur les serveurs Windows de KernelHost ?
Oui. Claude Code et Codex CLI tournent nativement sous Windows avec Node.js ou dans le sous-système Windows pour Linux. Les étapes utilisateur et liste blanche sudo correspondent là à un utilisateur Windows dédié sans droits d administrateur.

Claude Code Codex CLI ChatGPT KI-Agent Node.js Debian Ubuntu Serveradministration