Installation
Faire tourner Codex CLI sur un VPS
Codex tourne bien sur un petit serveur Linux. L'essentiel des frictions se situe à la connexion et dans la sandbox Linux. Ce guide couvre l'installation, la connexion headless, la persistance des sessions et les façons de joindre le serveur depuis un téléphone.
En bref
Installez-le avec curl -fsSL https://chatgpt.com/codex/install.sh | sh (ou npm install -g @openai/codex). Activez ensuite la connexion par code d'appareil dans vos paramètres de sécurité ChatGPT et lancez codex login --device-auth sur le serveur. Faites tourner Codex dans tmux ou un daemon pour qu'il survive à votre connexion SSH. Remote dans l'app ChatGPT ne prend officiellement en charge que des hôtes macOS et Windows. Un VPS Linux n'est joignable que par leur intermédiaire : l'app de bureau ChatGPT, sur un Mac ou un PC qui reste éveillé, l'ouvre comme projet SSH. Pour joindre le VPS directement depuis un téléphone, utilisez une app SSH ou un client qui dialogue avec le serveur, comme Maude.
Un serveur est un bon foyer pour Codex CLI d'OpenAI. Il continue de travailler portable fermé, survit à une connexion perdue, et si une exécution tourne mal, vous pouvez reconstruire la machine. Deux choses font trébucher sur un VPS Linux neuf. D'abord, un simple codex login attend une redirection du navigateur qui ne peut jamais atteindre le serveur. Ensuite, la sandbox exige un paquet que la plupart des images minimales n'embarquent pas. Ce guide règle les deux, puis traite de la persistance des sessions et des façons de les joindre depuis un téléphone.
Prérequis
- Un serveur Linux, x86-64 ou arm64. OpenAI publie des binaires pour les deux, et macOS fonctionne aussi. Debian ou Ubuntu est la voie la plus simple.
- Un compte. Soit un forfait ChatGPT, soit une clé API OpenAI. La page des tarifs de Codex d'OpenAI indique que Codex est inclus dans ChatGPT Free, Go, Plus, Pro, Business, Edu et Enterprise. Les limites varient selon le forfait, et l'usage local de la CLI partage le quota avec les chats cloud. L'usage par clé API est facturé aux tarifs de l'API à la place.
- Mémoire. La CLI est un binaire compilé qui consomme peu de mémoire en lui-même. Ce sont les builds et les tests de votre projet qui utilisent la RAM. 2 Go suffisent pour un travail léger et 4 Go sont confortables. Voir le guide d'achat de VPS pour le dimensionnement et les prix actuels.
- Un utilisateur non root. Créez-en un avant d'installer quoi que ce soit (
adduser dev, puis copiez votre clé SSH). Notre guide Claude Code sur VPS détaille cette étape et le durcissement de SSH ; les étapes sont les mêmes pour Codex.
Installer Codex
L'installeur autonome n'a pas besoin de Node.js :
curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version
Si vous gérez déjà vos outils avec npm, ceci installe la même CLI :
npm install -g @openai/codex
Attention au scope : le paquet est @openai/codex. Un paquet codex sans scope sur npm n'a rien à voir. Installez avec votre utilisateur normal, pas avec sudo. Les deux méthodes figurent dans le README d'openai/codex.
Le prérequis de la sandbox Linux
Sous Linux, Codex exécute les commandes shell qu'il génère dans une sandbox construite sur bwrap (bubblewrap) et seccomp. La documentation sur la sandbox d'OpenAI recommande d'installer bubblewrap d'abord :
sudo apt install bubblewrap # Debian / Ubuntu
sudo dnf install bubblewrap # Fedora
Sans bwrap, Codex se rabat sur un utilitaire intégré, qui a besoin des espaces de noms utilisateur non privilégiés. Ubuntu 24.04 les restreint via AppArmor. Le correctif documenté charge un profil supplémentaire :
sudo apt install apparmor-profiles apparmor-utils
sudo install -m 0644 /usr/share/apparmor/extra-profiles/bwrap-userns-restrict /etc/apparmor.d/bwrap-userns-restrict
sudo apparmor_parser -r /etc/apparmor.d/bwrap-userns-restrict
La documentation donne aussi une alternative plus brutale, sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0, qui lève la restriction pour toute la machine. Préférez le profil. Si toutes les commandes en sandbox échouent avec une erreur d'espace de noms, c'est à cause de ce qui précède.
Se connecter par code d'appareil
Lancez un simple codex login sur un serveur et il semble bloqué. Voici pourquoi : il démarre un serveur de callback local sur le port 1455 et attend que votre navigateur soit redirigé vers localhost. C'est le localhost du serveur, que votre téléphone ou votre portable ne peut pas joindre. Utilisez plutôt la connexion par code d'appareil. Elle a un prérequis qui piège presque tout le monde :
- Activez la connexion par code d'appareil. Faites-le dans les paramètres de sécurité de ChatGPT pour un compte personnel. Sur un espace de travail Business, Edu ou Enterprise, c'est un administrateur qui l'active dans les autorisations de l'espace de travail. Tant que ce n'est pas fait, le parcours par appareil ne fonctionnera pas pour votre compte.
- Lancez le parcours sur le serveur :
codex login --device-auth - Terminez-le sur n'importe quel appareil. Codex affiche un lien et un code à usage unique. Ouvrez le lien sur votre téléphone ou votre portable, connectez-vous à ChatGPT et saisissez le code.
- Vérifiez que ça a marché :
Cette commande affiche le mode d'authentification actif et se termine avec le code 0 quand vous êtes connecté, ce qui la rend utile dans les scripts.codex login status
Tout cela vient de la documentation d'authentification d'OpenAI. Elle donne deux solutions de repli si le code d'appareil n'est pas disponible :
- Rediriger le port de callback. Connectez-vous avec
ssh -L 1455:localhost:1455 user@your-server, lancezcodex loginsur le serveur et ouvrez l'adresse affichée dans votre navigateur local. La redirection revient alors par le tunnel. - Copier l'identifiant. Connectez-vous sur une machine dotée d'un navigateur, puis
scp ~/.codex/auth.json user@your-server:~/.codex/auth.json.
Utiliser une clé API à la place
printenv OPENAI_API_KEY | codex login --with-api-key
Passer la clé par stdin la garde hors de l'historique de votre shell. Vous payez au token aux tarifs de l'API au lieu de puiser dans un forfait ChatGPT. Cela convient à une machine partagée ou de CI où vous voulez une limite de facturation nette.
Par défaut, Codex met les identifiants en cache dans ~/.codex/auth.json. Le réglage cli_auth_credentials_store peut les déplacer vers le trousseau du système (file, keyring, auto ou ephemeral). Quiconque a un shell avec votre utilisateur peut utiliser votre forfait ChatGPT. Ne donnez pas d'accès shell à d'autres personnes sur une machine d'agents.
Le garder en marche
Une session codex interactive vit et meurt avec le terminal qui l'a lancée. Fermez la connexion SSH et la session se termine. Vous avez trois moyens de contourner cela.
tmux, le classique :
sudo apt install tmux
tmux new -A -s codex # create or re-attach
cd ~/src/my-app && codex
# detach: Ctrl-b then d; later: tmux attach -t codex
Si la session se termine malgré tout, codex resume --last reprend la conversation la plus récente de ce dossier, et codex resume ouvre un sélecteur. Notre guide tmux, mosh et Tailscale propose une configuration tmux adaptée au téléphone.
Les exécutions non interactives. codex exec "…" exécute une tâche sans la TUI, et codex exec resume --last la poursuit. Cela convient aux tâches cron et à la CI, mais personne n'est là pour répondre aux demandes de validation, donc les réglages de sandbox ci-dessous comptent d'autant plus.
Un daemon qui possède les sessions et survit aux redémarrages. C'est ce que compare le guide 24 h/24 : unités systemd, serveurs Remote Control, et apps comme Maude qui font tourner leur propre processus sur la machine.
Validations et sandbox
Codex a deux réglages distincts : ce que les commandes peuvent toucher (la sandbox) et quand il s'arrête pour vous demander (la politique de validation). Les valeurs ci-dessous proviennent de la documentation sur les validations et la sécurité d'OpenAI et de la référence de la CLI :
| Réglage | Valeurs | Ce que cela signifie sur un serveur |
|---|---|---|
--sandbox / -s | read-only, workspace-write, danger-full-access | workspace-write est la valeur par défaut dans un dépôt git. Les modifications restent dans le projet, et l'accès réseau est coupé sauf si vous l'activez. |
--ask-for-approval / -a | on-request, never | on-request demande quand une action exige plus que ce que permet la sandbox. never ne demande jamais. Dans config.toml, approval_policy accepte aussi granular ; l'ancienne valeur untrusted n'est plus prise en charge. |
--yolo | (alias de --dangerously-bypass-approvals-and-sandbox) | Ni sandbox ni demandes. OpenAI le réserve aux environnements déjà durcis de l'extérieur. |
--full-auto apparaît encore dans d'anciens guides. C'est désormais un flag de compatibilité obsolète, et la référence recommande d'utiliser --sandbox workspace-write à la place. Pour permettre aux commandes en sandbox d'accéder au réseau, par exemple pour que npm install fonctionne, ajoutez ceci à ~/.codex/config.toml :
sandbox_mode = "workspace-write"
approval_policy = "on-request"
[sandbox_workspace_write]
network_access = true
Une remarque sur les conteneurs : si votre « VPS » est en réalité un conteneur Docker ou LXC qui bloque les opérations sur les espaces de noms, la documentation suggère --sandbox danger-full-access. Ne le faites que si le conteneur lui-même tient lieu de sandbox. Les compromis sont les mêmes qu'avec le mode bypass de Claude, traités dans faire tourner des agents avec toutes les autorisations, en sécurité.
Les options d'accès depuis le téléphone
| Option | Fonctionne avec un VPS Linux ? | Points forts | Points d'attention |
|---|---|---|---|
| Codex Remote (app ChatGPT) | Pas officiellement. Les hôtes doivent faire tourner l'app de bureau ChatGPT sous macOS ou Windows ; cette app peut joindre des projets SSH sur votre VPS. | Officiel, inclus dans votre forfait, interface native | L'ordinateur hôte doit rester éveillé et en ligne |
| App SSH + tmux | Oui | Gratuit, rien de plus sur le serveur | Une TUI plein écran sur un clavier de téléphone, pas de push |
| Maude | Oui (n'importe quel Linux ou macOS via SSH) | Interface de chat native, validations intégrées, push, plus Claude Code et d'autres | App payante ; il vous faut toujours votre propre forfait ChatGPT ou votre clé |
Un mot sur Linux headless et Codex Remote. La référence de la CLI documente codex remote-control start et codex remote-control pair pour l'app-server local. Le guide des connexions à distance, lui, indique toujours que les hôtes font tourner l'app de bureau sous macOS ou Windows. Des utilisateurs ont ouvert des issues sur cet écart : #31183 signale que les hôtes Linux headless ne peuvent pas être réassociés depuis les clients mobiles actuels, et #35928 pointe la contradiction. Les deux étaient ouvertes lors de notre vérification. Si cette voie fonctionne pour vous, c'est la voie officielle. Évitez simplement d'y bâtir un flux de travail pour l'instant.
Le piloter depuis votre téléphone avec Maude
Maude est une façon de piloter ce VPS depuis un téléphone sans la TUI. Vous ajoutez le serveur par son adresse ou une commande ssh collée, et l'app déploie son propre petit daemon via SSH. Ce daemon installe Codex dans une version testée et figée, vérifiée par somme de contrôle, donc vous sautez l'étape d'installation. Vous vous connectez à Codex depuis le téléphone avec le code d'appareil ChatGPT ou une clé API. Il faut toujours activer d'abord la connexion par code d'appareil dans ChatGPT. Les sessions continuent sur le serveur quand l'app est fermée, les demandes de validation apparaissent dans une boîte de réception et en notifications push avec Autoriser/Refuser, et le même serveur peut faire tourner Claude Code, OpenCode, Grok Build et Antigravity à côté de Codex. Les détails sont sur la page de l'agent Codex.
Questions fréquentes
Pourquoi codex login reste-t-il bloqué sur mon serveur ?
codex login démarre un serveur de callback sur localhost:1455 et attend une redirection du navigateur, qu'un navigateur sur un autre appareil ne peut pas faire parvenir à votre VPS. Utilisez codex login --device-auth après avoir activé la connexion par code d'appareil dans vos paramètres de sécurité ChatGPT. Sinon, redirigez le port avec ssh -L 1455:localhost:1455.Ai-je besoin de Node.js pour faire tourner Codex ?
curl -fsSL https://chatgpt.com/codex/install.sh | sh) et les binaires des releases n'ont pas besoin de Node. Il ne vous faut Node que si vous choisissez la voie npm, npm install -g @openai/codex.Puis-je utiliser une clé API au lieu de mon forfait ChatGPT ?
printenv OPENAI_API_KEY | codex login --with-api-key. L'usage est alors facturé aux tarifs de l'API OpenAI au lieu d'être décompté du quota d'un forfait ChatGPT.Codex Remote voit-il mon VPS ?
codex remote-control) est documentée, mais des issues GitHub ouvertes signalent des problèmes d'association avec les hôtes Linux headless : consultez la documentation actuelle avant de compter dessus.Quel mode de sandbox utiliser sur un VPS ?
workspace-write plus des validations on-request, et activez network_access si vos builds doivent télécharger des paquets. Réservez --yolo aux machines jetables ou aux conteneurs dont vous jugez l'isolation fiable.Ce qui a changé
- — Première publication. Détails d'installation, d'authentification, de sandbox et de Remote vérifiés à cette date dans la documentation d'OpenAI et le README d'openai/codex.