Installer Claude Code et ChatGPT Codex sur un serveur Linux : pas à pas
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 avecclaude --helpoucodex --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
dnfau lieu dapt. - 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.cometapi.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-permissionschez Claude Code etdanger-full-accesschez 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
etckeeperpour que chaque modification sous/etcaille 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
| Message | Cause et solution |
EACCES: permission denied avec npm install -g | npm 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 supported | Version 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 navigateur | Normal 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émarrage | HTTPS 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 overloaded | Quota 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 commande | Complé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 ?
Comment connecter Codex CLI sur un serveur sans navigateur ?
Quelle version de Node.js faut-il ?
Pourquoi npm install -g échoue-t-il avec EACCES ?
Puis-je exécuter Claude Code dans une tâche cron ?
Cela fonctionne-t-il aussi sur les serveurs Windows de KernelHost ?
2026 KernelHost GmbH. Tous droits réservés. Ce guide est protégé par le droit d'auteur. Sa republication sur d'autres sites web, même partielle ou sous une forme modifiée, n'est pas autorisée sans notre accord écrit. Les citations accompagnées de la source et d'un lien sont expressément les bienvenues.

