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.

Eseguire Codex CLI su un VPS

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:

  1. 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.
  2. Avvia il flusso sul server:
    codex login --device-auth
  3. 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.
  4. Verifica che abbia funzionato:
    codex login status
    Stampa la modalità di autenticazione attiva ed esce con 0 quando hai effettuato l'accesso, il che lo rende utile negli script.

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, esegui codex login sul 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.

Tratta auth.json come una password

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:

ImpostazioneValoriCosa significa su un server
--sandbox / -sread-only, workspace-write, danger-full-accessworkspace-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 / -aon-request, neveron-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

OpzioneFunziona con un VPS Linux?Punti di forzaAttenzione 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 nativaIl computer host deve restare acceso e online
App SSH + tmuxSìGratis, niente di aggiuntivo sul serverUna TUI a schermo intero su una tastiera da telefono, niente push
MaudeSì (qualsiasi Linux o macOS via SSH)Interfaccia di chat nativa, approvazioni in linea, push, anche Claude Code e altriApp 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?
Il semplice 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?
No. L'installer standalone (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?
Sì: 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?
Solo indirettamente, per ora. La documentazione di Remote di OpenAI indica come host l'app desktop di ChatGPT su macOS o Windows, e quell'app può aprire progetti SSH su un VPS. È documentata una strada di associazione via CLI (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?
Parti da 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.

Codex sul tuo server, dal telefono

Aggiungi il server, accedi con il tuo piano ChatGPT e avvia una sessione. iOS e Android.

Download Maude on the App Store Get Maude on Google Play