Einrichtung
Codex CLI auf einem VPS betreiben
Codex läuft gut auf einem kleinen Linux-Server. Die meiste Reibung gibt es beim Login und mit der Linux-Sandbox. Diese Anleitung behandelt Installation, Anmeldung ohne Browser, das Am-Leben-Halten von Sessions und wie du den Server vom Handy aus erreichst.
Kurze Antwort
Installiere mit curl -fsSL https://chatgpt.com/codex/install.sh | sh (oder npm install -g @openai/codex). Aktiviere dann den Login per Gerätecode in deinen ChatGPT-Sicherheitseinstellungen und führ codex login --device-auth auf dem Server aus. Betreib Codex in tmux oder einem Daemon, damit es deine SSH-Verbindung überlebt. Remote in der ChatGPT-App unterstützt offiziell nur macOS- und Windows-Hosts. Ein Linux-VPS ist nur über einen davon erreichbar: Die ChatGPT-Desktop-App auf einem Mac oder PC, der wach bleibt, öffnet ihn als SSH-Projekt. Um den VPS direkt vom Handy aus zu erreichen, nimm eine SSH-App oder einen Client, der mit dem Server spricht, etwa Maude.
Ein Server ist ein gutes Zuhause für OpenAIs Codex CLI. Es arbeitet weiter, wenn dein Laptop zu ist, übersteht eine abgebrochene Verbindung, und wenn ein Lauf schiefgeht, setzt du den Rechner neu auf. Zwei Dinge bringen auf einem frischen Linux-VPS viele ins Stolpern. Erstens wartet ein einfaches codex login auf eine Browser-Weiterleitung, die den Server nie erreichen kann. Zweitens braucht die Sandbox ein Paket, das die meisten minimalen Images nicht mitbringen. Diese Anleitung behebt beides und zeigt dann, wie du Sessions am Leben hältst und sie vom Handy aus erreichst.
Voraussetzungen
- Ein Linux-Server, x86-64 oder arm64. OpenAI veröffentlicht Binaries für beide, und macOS funktioniert auch. Debian oder Ubuntu ist der einfache Weg.
- Ein Konto. Entweder ein ChatGPT-Abo oder ein OpenAI-API-Schlüssel. Laut OpenAIs Preisseite für Codex ist Codex in ChatGPT Free, Go, Plus, Pro, Business, Edu und Enterprise enthalten. Die Limits unterscheiden sich je nach Abo, und die lokale Nutzung der CLI teilt sich das Kontingent mit Cloud-Chats. Nutzung per API-Schlüssel wird stattdessen zu API-Preisen abgerechnet.
- Arbeitsspeicher. Die CLI ist ein kompiliertes Binary und braucht selbst wenig Speicher. RAM verbrauchen die Builds und Testläufe deines Projekts. 2 GB reichen für leichte Arbeit, 4 GB sind bequem. Dimensionierung und aktuelle Preise stehen in der VPS-Kaufberatung.
- Ein Nicht-root-Benutzer. Leg ihn an, bevor du irgendetwas installierst (
adduser dev, dann deinen SSH-Schlüssel hinüberkopieren). Unsere Anleitung für Claude Code auf einem VPS zeigt das und die SSH-Härtung; die Schritte sind für Codex dieselben.
Codex installieren
Der eigenständige Installer braucht kein Node.js:
curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version
Verwaltest du Tools ohnehin mit npm, installiert das dieselbe CLI:
npm install -g @openai/codex
Achte auf den Scope: Das Paket heißt @openai/codex. Ein Paket codex ohne Scope auf npm hat damit nichts zu tun. Installiere als dein normaler Benutzer, nicht mit sudo. Beide Methoden stehen in der README von openai/codex.
Voraussetzung für die Linux-Sandbox
Unter Linux führt Codex die Shell-Befehle, die es erzeugt, in einer Sandbox aus, die auf bwrap (bubblewrap) und seccomp aufbaut. Laut OpenAIs Sandboxing-Doku installierst du zuerst bubblewrap:
sudo apt install bubblewrap # Debian / Ubuntu
sudo dnf install bubblewrap # Fedora
Ohne bwrap greift Codex auf einen mitgelieferten Helfer zurück, und dieser Helfer braucht unprivilegierte User-Namespaces. Ubuntu 24.04 schränkt sie per AppArmor ein. Die dokumentierte Lösung lädt ein zusätzliches Profil:
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
Die Doku nennt auch eine gröbere Alternative, sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0, die die Einschränkung für den ganzen Rechner abschaltet. Nimm lieber das Profil. Scheitert jeder Befehl in der Sandbox mit einem Namespace-Fehler, liegt es an diesem Abschnitt.
Anmeldung per Gerätecode
Führst du auf einem Server ein einfaches codex login aus, scheint es zu hängen. Der Grund: Es startet einen lokalen Callback-Server auf Port 1455 und wartet darauf, dass dein Browser auf localhost weitergeleitet wird. Das ist der localhost des Servers, den dein Handy oder Laptop nicht erreichen kann. Nimm stattdessen den Login per Gerätecode. Er hat eine Voraussetzung, über die fast alle stolpern:
- Aktiviere den Login per Gerätecode. Bei einem privaten Konto in deinen ChatGPT-Sicherheitseinstellungen. In einem Business-, Edu- oder Enterprise-Workspace aktiviert ihn ein Admin in den Workspace-Berechtigungen. Solange er aus ist, funktioniert der Geräte-Ablauf für dein Konto nicht.
- Starte den Ablauf auf dem Server:
codex login --device-auth - Schließ ihn auf einem beliebigen Gerät ab. Codex gibt einen Link und einen Einmalcode aus. Öffne den Link auf Handy oder Laptop, melde dich bei ChatGPT an und gib den Code ein.
- Prüf, ob es geklappt hat:
Das gibt den aktiven Authentifizierungsmodus aus und beendet sich mit 0, wenn du angemeldet bist – praktisch in Skripten.codex login status
So steht es in OpenAIs Authentifizierungs-Doku. Sie nennt zwei Ausweichwege, falls der Gerätecode nicht verfügbar ist:
- Den Callback-Port weiterleiten. Verbinde dich mit
ssh -L 1455:localhost:1455 user@your-server, führcodex loginauf dem Server aus und öffne die ausgegebene Adresse in deinem lokalen Browser. Die Weiterleitung läuft dann durch den Tunnel zurück. - Die Zugangsdaten kopieren. Melde dich auf einem Rechner mit Browser an und dann
scp ~/.codex/auth.json user@your-server:~/.codex/auth.json.
Stattdessen einen API-Schlüssel nutzen
printenv OPENAI_API_KEY | codex login --with-api-key
Den Schlüssel per stdin hineinzureichen hält ihn aus deiner Shell-Historie heraus. Du zahlst pro Token zu API-Preisen, statt ein ChatGPT-Abo zu belasten. Das passt zu einem geteilten oder CI-Rechner, auf dem du eine harte Abrechnungsgrenze willst.
Standardmäßig speichert Codex Zugangsdaten in ~/.codex/auth.json. Mit der Einstellung cli_auth_credentials_store lassen sie sich in den Schlüsselbund des Betriebssystems verschieben (file, keyring, auto oder ephemeral). Jeder mit einer Shell als dein Benutzer kann dein ChatGPT-Abo nutzen. Gib anderen keinen Shell-Zugang zu einem Agenten-Rechner.
Am Laufen halten
Eine interaktive codex-Session lebt und stirbt mit dem Terminal, das sie gestartet hat. Schließt du die SSH-Verbindung, endet die Session. Du hast drei Wege drumherum.
tmux, der Klassiker:
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
Endet die Session doch, holt codex resume --last die jüngste Unterhaltung in diesem Verzeichnis zurück, und codex resume öffnet eine Auswahl. Unsere Anleitung zu tmux, mosh und Tailscale hat eine handyfreundliche tmux-Konfiguration.
Nicht-interaktive Läufe. codex exec "…" führt eine Aufgabe ohne TUI aus, und codex exec resume --last setzt sie fort. Das passt zu Cron-Jobs und CI, aber dort beantwortet niemand Freigabeanfragen, die Sandbox-Einstellungen unten zählen also umso mehr.
Ein Daemon, der die Sessions besitzt und Neustarts übersteht. Genau das vergleicht die Anleitung für den 24/7-Betrieb: systemd-Units, Remote-Control-Server und Apps wie Maude, die ihren eigenen Prozess auf dem Rechner betreiben.
Freigaben und Sandbox
Codex hat zwei getrennte Stellschrauben: was Befehle anfassen dürfen (die Sandbox) und wann es anhält, um dich zu fragen (die Freigaberichtlinie). Die Werte unten stammen aus OpenAIs Doku zu Freigaben und Sicherheit und der CLI-Referenz:
| Einstellung | Werte | Was das auf einem Server bedeutet |
|---|---|---|
--sandbox / -s | read-only, workspace-write, danger-full-access | workspace-write ist in einem git-Repo der Standard. Änderungen bleiben im Projekt, und Netzwerkzugriff ist aus, solange du ihn nicht aktivierst. |
--ask-for-approval / -a | on-request, never | on-request fragt, wenn eine Aktion mehr braucht, als die Sandbox erlaubt. never fragt gar nicht. In config.toml akzeptiert approval_policy außerdem granular; der alte Wert untrusted wird nicht mehr unterstützt. |
--yolo | (Alias von --dangerously-bypass-approvals-and-sandbox) | Keine Sandbox und keine Abfragen. OpenAI sieht es nur für Umgebungen vor, die schon von außen gehärtet sind. |
--full-auto taucht in älteren Anleitungen noch auf. Es ist inzwischen ein veraltetes Kompatibilitäts-Flag, und die Referenz empfiehlt stattdessen --sandbox workspace-write. Damit Befehle in der Sandbox das Netzwerk erreichen, etwa damit npm install funktioniert, ergänze das in ~/.codex/config.toml:
sandbox_mode = "workspace-write"
approval_policy = "on-request"
[sandbox_workspace_write]
network_access = true
Eine Anmerkung zu Containern: Ist dein „VPS“ in Wahrheit ein Docker- oder LXC-Container, der Namespace-Operationen blockiert, empfiehlt die Doku --sandbox danger-full-access. Mach das nur, wenn der Container selbst deine Sandbox ist. Die Abwägungen sind dieselben wie beim bypass-Modus von Claude, behandelt in Agenten sicher mit vollen Berechtigungen betreiben.
Optionen für den Zugriff vom Handy
| Option | Funktioniert mit einem Linux-VPS? | Gut darin | Worauf du achten musst |
|---|---|---|---|
| Codex Remote (ChatGPT-App) | Offiziell nicht. Hosts müssen die ChatGPT-Desktop-App unter macOS oder Windows betreiben; diese App kann SSH-Projekte auf deinem VPS erreichen. | Offiziell, im Abo enthalten, native Oberfläche | Der Host-Computer muss wach und online bleiben |
| SSH-App + tmux | Ja | Kostenlos, nichts Zusätzliches auf dem Server | Eine Vollbild-TUI auf einer Handytastatur, kein Push |
| Maude | Ja (jedes Linux oder macOS per SSH) | Native Chat-Oberfläche, Freigaben direkt im Chat, Push, dazu Claude Code und andere | Kostenpflichtige App; du brauchst weiterhin dein eigenes ChatGPT-Abo oder deinen Schlüssel |
Ein Wort zu Headless-Linux und Codex Remote. Die CLI-Referenz dokumentiert codex remote-control start und codex remote-control pair für den lokalen App-Server. Der Leitfaden zu Remote-Verbindungen sagt dagegen weiterhin, dass Hosts die Desktop-App unter macOS oder Windows betreiben. Nutzer haben Issues zu dieser Lücke eröffnet: #31183 meldet, dass sich Headless-Linux-Hosts mit aktuellen Mobil-Clients nicht neu koppeln lassen, und #35928 weist auf den Widerspruch hin. Beide waren offen, als wir nachgesehen haben. Funktioniert dieser Weg bei dir, ist er der offizielle. Bau nur noch keinen Workflow darauf auf.
Mit Maude vom Handy aus betreiben
Maude ist ein Weg, diesen VPS ohne TUI vom Handy aus zu steuern. Du fügst den Server per Adresse oder eingefügtem ssh-Befehl hinzu, und die App richtet per SSH ihren eigenen kleinen Daemon ein. Dieser Daemon installiert Codex in einer getesteten, gepinnten Version, per Prüfsumme verifiziert, du sparst dir also den Installationsschritt. Bei Codex meldest du dich vom Handy aus mit dem ChatGPT-Gerätecode oder einem API-Schlüssel an. Den Login per Gerätecode musst du vorher trotzdem in ChatGPT aktivieren. Sessions laufen auf dem Server weiter, wenn die App geschlossen ist, Freigabeanfragen erscheinen in einer Inbox und als Push-Benachrichtigungen mit Erlauben/Ablehnen, und derselbe Server kann neben Codex auch Claude Code, OpenCode, Grok Build und Antigravity betreiben. Details stehen auf der Agenten-Seite zu Codex.
Häufige Fragen
Warum hängt codex login auf meinem Server?
codex login startet einen Callback-Server auf localhost:1455 und wartet auf eine Browser-Weiterleitung, die ein Browser auf einem anderen Gerät nicht an deinen VPS zustellen kann. Nutze codex login --device-auth, nachdem du den Login per Gerätecode in deinen ChatGPT-Sicherheitseinstellungen aktiviert hast. Alternativ leitest du den Port mit ssh -L 1455:localhost:1455 weiter.Brauche ich Node.js für Codex?
curl -fsSL https://chatgpt.com/codex/install.sh | sh) und die Release-Binaries brauchen kein Node. Node brauchst du nur, wenn du den Weg über npm wählst, npm install -g @openai/codex.Kann ich statt meines ChatGPT-Abos einen API-Schlüssel nutzen?
printenv OPENAI_API_KEY | codex login --with-api-key. Die Nutzung wird dann zu den API-Preisen von OpenAI abgerechnet, statt gegen das Kontingent eines ChatGPT-Abos zu zählen.Sieht Codex Remote meinen VPS?
codex remote-control) ist dokumentiert, aber offene GitHub-Issues melden Probleme beim Koppeln von Headless-Linux-Hosts – prüf also die aktuelle Doku, bevor du dich darauf verlässt.Welchen Sandbox-Modus sollte ich auf einem VPS nutzen?
workspace-write plus Freigaben on-request an und aktiviere network_access, wenn deine Builds Pakete herunterladen müssen. --yolo bleibt Wegwerf-Rechnern oder Containern vorbehalten, deren Isolation du vertraust.Was sich geändert hat
- — Erstveröffentlichung. Angaben zu Installation, Authentifizierung, Sandbox und Remote an diesem Tag mit OpenAIs Doku und der README von openai/codex abgeglichen.