Configurazione
Eseguire Codex CLI su un VPS
Codex gira bene su un piccolo server Linux. Gran parte dell'attrito sta nell'accesso e nella sandbox di Linux. Questa guida copre installazione, accesso headless, come tenere vive le sessioni e come raggiungere il server dal telefono.
In breve
Installa con curl -fsSL https://chatgpt.com/codex/install.sh | sh (o npm install -g @openai/codex). Poi attiva l'accesso con codice dispositivo nelle impostazioni di sicurezza di ChatGPT ed esegui codex login --device-auth sul server. Esegui Codex dentro tmux o un daemon così sopravvive alla tua connessione SSH. Remote nell'app ChatGPT supporta ufficialmente solo host macOS e Windows. Un VPS Linux si raggiunge solo passando per uno di questi: l'app desktop di ChatGPT, su un Mac o un PC che resta acceso, lo apre come progetto SSH. Per raggiungere il VPS direttamente dal telefono, usa un'app SSH o un client che parla con il server, come Maude.
Un server è un'ottima casa per Codex CLI di OpenAI. Continua a lavorare a portatile chiuso, sopravvive a una connessione caduta, e se un'esecuzione va storta puoi ricostruire la macchina. Due cose fanno inciampare su un VPS Linux appena creato. Primo, il semplice codex login aspetta un redirect del browser che non potrà mai raggiungere il server. Secondo, la sandbox richiede un pacchetto che la maggior parte delle immagini minimali non include. Questa guida risolve entrambe, poi spiega come tenere vive le sessioni e come raggiungerle dal telefono.
Requisiti
- Un server Linux, x86-64 o arm64. OpenAI pubblica binari per entrambi, e funziona anche macOS. Debian o Ubuntu sono la strada più semplice.
- Un account. Un piano ChatGPT o una chiave API OpenAI. La pagina dei prezzi di Codex di OpenAI dice che Codex è incluso in ChatGPT Free, Go, Plus, Pro, Business, Edu ed Enterprise. I limiti variano in base al piano, e l'uso locale della CLI condivide la quota con le chat cloud. L'uso con chiave API viene invece fatturato alle tariffe API.
- Memoria. La CLI è un binario compilato e di per sé usa poca memoria. A usare la RAM sono build e test del tuo progetto. 2 GB bastano per lavori leggeri e 4 GB sono comodi. Vedi la guida all'acquisto di un VPS per dimensionamento e prezzi attuali.
- Un utente non root. Creane uno prima di installare qualsiasi cosa (
adduser dev, poi copia la tua chiave SSH). La nostra guida a Claude Code su VPS spiega questo passaggio e l'hardening di SSH; i passaggi sono gli stessi per Codex.
Installare Codex
L'installer standalone non richiede Node.js:
curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version
Se gestisci già i tuoi strumenti con npm, questo installa la stessa CLI:
npm install -g @openai/codex
Attenzione allo scope: il pacchetto è @openai/codex. Un pacchetto codex senza scope su npm non c'entra nulla. Installa con il tuo utente normale, non con sudo. Entrambi i metodi sono indicati nel README di openai/codex.
Il prerequisito della sandbox Linux
Su Linux, Codex esegue i comandi shell che genera dentro una sandbox basata su bwrap (bubblewrap) e seccomp. La documentazione sulla sandbox di OpenAI dice di installare prima bubblewrap:
sudo apt install bubblewrap # Debian / Ubuntu
sudo dnf install bubblewrap # Fedora
Senza bwrap, Codex ripiega su un helper incluso, che però ha bisogno degli user namespace non privilegiati. Ubuntu 24.04 li limita tramite AppArmor. La soluzione documentata carica un profilo aggiuntivo:
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 documentazione propone anche un'alternativa più drastica, sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0, che disattiva la restrizione per tutta la macchina. Preferisci il profilo. Se vedi fallire ogni comando in sandbox con un errore sui namespace, il motivo è questo.
Accedere con codice dispositivo
Esegui il semplice codex login su un server e sembra bloccarsi. Ecco perché: avvia un server di callback locale sulla porta 1455 e aspetta che il browser venga reindirizzato su localhost. È il localhost del server, che il tuo telefono o portatile non possono raggiungere. Usa invece l'accesso con codice dispositivo. Ha un prerequisito che coglie di sorpresa quasi tutti:
- Attiva l'accesso con codice dispositivo. Fallo nelle impostazioni di sicurezza di ChatGPT per un account personale. In un workspace Business, Edu o Enterprise lo abilita un amministratore nei permessi del workspace. Finché non è attivo, il flusso con dispositivo non funziona per il tuo account.
- Avvia il flusso sul server:
codex login --device-auth - Completalo su qualsiasi dispositivo. Codex stampa un link e un codice monouso. Apri il link sul telefono o sul portatile, accedi a ChatGPT e inserisci il codice.
- Verifica che abbia funzionato:
Stampa la modalità di autenticazione attiva ed esce con 0 quando hai effettuato l'accesso, il che lo rende utile negli script.codex login status
Viene tutto dalla documentazione sull'autenticazione di OpenAI, che indica due alternative per quando il codice dispositivo non è disponibile:
- Inoltra la porta del callback. Collegati con
ssh -L 1455:localhost:1455 user@your-server, eseguicodex loginsul server e apri l'indirizzo stampato nel browser locale. Il redirect torna indietro attraverso il tunnel. - Copia la credenziale. Accedi su una macchina con browser, poi
scp ~/.codex/auth.json user@your-server:~/.codex/auth.json.
Usare invece una chiave API
printenv OPENAI_API_KEY | codex login --with-api-key
Passare la chiave tramite stdin la tiene fuori dalla cronologia della shell. Paghi a token alle tariffe API invece di attingere a un piano ChatGPT. È adatto a una macchina condivisa o di CI dove vuoi un confine di fatturazione netto.
Di default Codex memorizza le credenziali in ~/.codex/auth.json. L'impostazione cli_auth_credentials_store può spostarle nel portachiavi del sistema (file, keyring, auto o ephemeral). Chiunque abbia una shell con il tuo utente può usare il tuo piano ChatGPT. Non dare accesso shell ad altri su una macchina per agenti.
Tenerlo in esecuzione
Una sessione interattiva di codex vive e muore con il terminale che l'ha avviata. Chiudi la connessione SSH e la sessione termina. Hai tre modi per evitarlo.
tmux, il classico:
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
Se la sessione termina comunque, codex resume --last riprende la conversazione più recente in quella cartella, e codex resume apre un selettore. La nostra guida a tmux, mosh e Tailscale ha una configurazione di tmux adatta al telefono.
Esecuzioni non interattive. codex exec "…" esegue un'attività senza la TUI, e codex exec resume --last la prosegue. È adatto a cron job e CI, ma non c'è nessuno a rispondere alle richieste di approvazione, quindi le impostazioni della sandbox qui sotto contano di più.
Un daemon che possiede le sessioni e sopravvive ai riavvii. È ciò che confronta la guida 24/7: unit systemd, server Remote Control e app come Maude che eseguono un proprio processo sulla macchina.
Approvazioni e sandbox
Codex ha due controlli separati: cosa possono toccare i comandi (la sandbox) e quando si ferma a chiederti (la policy di approvazione). I valori qui sotto vengono dalla documentazione su approvazioni e sicurezza di OpenAI e dal riferimento della CLI:
| Impostazione | Valori | Cosa significa su un server |
|---|---|---|
--sandbox / -s | read-only, workspace-write, danger-full-access | workspace-write è il predefinito in un repo git. Le modifiche restano dentro il progetto, e l'accesso alla rete è disattivato se non lo abiliti. |
--ask-for-approval / -a | on-request, never | on-request chiede quando un'azione richiede più di quanto consenta la sandbox. never non chiede mai. In config.toml, approval_policy accetta anche granular; il vecchio valore untrusted non è più supportato. |
--yolo | (alias di --dangerously-bypass-approvals-and-sandbox) | Niente sandbox e niente richieste. OpenAI lo riserva ad ambienti già protetti dall'esterno. |
--full-auto compare ancora nelle guide più vecchie. Ora è un flag di compatibilità deprecato, e il riferimento dice di usare invece --sandbox workspace-write. Per permettere ai comandi in sandbox di raggiungere la rete, per esempio perché npm install funzioni, aggiungi questo a ~/.codex/config.toml:
sandbox_mode = "workspace-write"
approval_policy = "on-request"
[sandbox_workspace_write]
network_access = true
Una nota sui container: se il tuo «VPS» è in realtà un container Docker o LXC che blocca le operazioni sui namespace, la documentazione suggerisce --sandbox danger-full-access. Fallo solo se è il container stesso a farti da sandbox. I compromessi sono gli stessi della modalità bypass di Claude, trattati in eseguire agenti con tutti i permessi, in sicurezza.
Opzioni di accesso dal telefono
| Opzione | Funziona con un VPS Linux? | Punti di forza | Attenzione a |
|---|---|---|---|
| Codex Remote (app ChatGPT) | Non ufficialmente. Gli host devono eseguire l'app desktop di ChatGPT su macOS o Windows; quell'app può raggiungere progetti SSH sul tuo VPS. | Ufficiale, incluso nel tuo piano, interfaccia nativa | Il computer host deve restare acceso e online |
| App SSH + tmux | Sì | Gratis, niente di aggiuntivo sul server | Una TUI a schermo intero su una tastiera da telefono, niente push |
| Maude | Sì (qualsiasi Linux o macOS via SSH) | Interfaccia di chat nativa, approvazioni in linea, push, anche Claude Code e altri | App a pagamento; ti serve comunque il tuo piano ChatGPT o la tua chiave |
Una parola su Linux headless e Codex Remote. Il riferimento della CLI documenta codex remote-control start e codex remote-control pair per l'app-server locale. La guida alle connessioni remote, però, dice ancora che gli host eseguono l'app desktop su macOS o Windows. Alcuni utenti hanno aperto issue su questa discrepanza: #31183 segnala che gli host Linux headless non si possono riassociare dai client mobili attuali, e #35928 evidenzia la contraddizione. Entrambe erano aperte quando abbiamo controllato. Se quella strada funziona per te, è quella ufficiale. Solo, non costruirci sopra un flusso di lavoro per ora.
Gestiscilo dal telefono con Maude
Maude è un modo per gestire quel VPS dal telefono senza la TUI. Aggiungi il server tramite indirizzo o un comando ssh incollato, e l'app distribuisce via SSH un proprio piccolo daemon. Quel daemon installa Codex in una versione testata e fissata, verificata tramite checksum, così salti il passaggio di installazione. Accedi a Codex dal telefono con il codice dispositivo ChatGPT o con una chiave API. Devi comunque attivare prima l'accesso con codice dispositivo in ChatGPT. Le sessioni continuano a girare sul server quando l'app è chiusa, le richieste di approvazione compaiono in un'inbox e come notifiche push con Consenti/Nega, e lo stesso server può eseguire Claude Code, OpenCode, Grok Build e Antigravity accanto a Codex. I dettagli sono nella pagina dell'agente Codex.
Domande frequenti
Perché codex login si blocca sul mio server?
codex login avvia un server di callback su localhost:1455 e aspetta un redirect del browser, che un browser su un altro dispositivo non può consegnare al tuo VPS. Usa codex login --device-auth dopo aver abilitato l'accesso con codice dispositivo nelle impostazioni di sicurezza di ChatGPT. In alternativa, inoltra la porta con ssh -L 1455:localhost:1455.Mi serve Node.js per eseguire Codex?
curl -fsSL https://chatgpt.com/codex/install.sh | sh) e i binari delle release non richiedono Node. Node ti serve solo se scegli la strada npm, npm install -g @openai/codex.Posso usare una chiave API invece del mio piano ChatGPT?
printenv OPENAI_API_KEY | codex login --with-api-key. L'utilizzo viene allora fatturato alle tariffe dell'API OpenAI invece di essere scalato dalla quota di un piano ChatGPT.Codex Remote vede il mio VPS?
codex remote-control), ma alcune issue aperte su GitHub segnalano problemi di associazione con host Linux headless, quindi controlla la documentazione attuale prima di contarci.Quale modalità sandbox dovrei usare su un VPS?
workspace-write più approvazioni on-request, e abilita network_access se le tue build devono scaricare pacchetti. Tieni --yolo per macchine usa e getta o container del cui isolamento ti fidi.Cosa è cambiato
- — Prima pubblicazione. Dettagli su installazione, autenticazione, sandbox e Remote verificati in questa data sulla documentazione di OpenAI e sul README di openai/codex.