Setup

Menjalankan Codex CLI di VPS

Codex berjalan baik di server Linux kecil. Sebagian besar kendalanya ada di login dan sandbox Linux. Panduan ini membahas pemasangan, login headless, menjaga sesi tetap hidup, dan cara menjangkau server dari ponsel.

Menjalankan Codex CLI di VPS

Jawaban singkat

Pasang dengan curl -fsSL https://chatgpt.com/codex/install.sh | sh (atau npm install -g @openai/codex). Lalu aktifkan login device code di pengaturan keamanan ChatGPT Anda dan jalankan codex login --device-auth di server. Jalankan Codex di dalam tmux atau daemon agar tetap hidup setelah koneksi SSH putus. Remote di aplikasi ChatGPT secara resmi hanya mendukung host macOS dan Windows. VPS Linux hanya bisa dijangkau lewat salah satunya: aplikasi desktop ChatGPT di Mac atau PC yang tetap menyala membukanya sebagai proyek SSH. Untuk menjangkau VPS langsung dari ponsel, pakai aplikasi SSH atau klien yang berkomunikasi dengan server, seperti Maude.

Server adalah tempat yang cocok untuk Codex CLI dari OpenAI. Ia tetap bekerja saat laptop ditutup, bertahan saat koneksi putus, dan jika ada eksekusi yang kacau, Anda bisa membangun ulang servernya. Ada dua hal yang sering menjebak di VPS Linux yang baru. Pertama, codex login biasa menunggu redirect browser yang tidak akan pernah sampai ke server. Kedua, sandbox-nya butuh paket yang tidak disertakan di kebanyakan image minimal. Panduan ini menyelesaikan keduanya, lalu membahas cara menjaga sesi tetap hidup dan cara menjangkaunya dari ponsel.

Persyaratan

  • Server Linux, x86-64 atau arm64. OpenAI merilis binary untuk keduanya, dan macOS juga bisa. Debian atau Ubuntu adalah jalur yang paling mudah.
  • Akun. Paket ChatGPT atau kunci API OpenAI. Halaman harga Codex dari OpenAI menyebut Codex termasuk dalam ChatGPT Free, Go, Plus, Pro, Business, Edu, dan Enterprise. Batasnya berbeda per paket, dan pemakaian CLI lokal berbagi kuota dengan chat di cloud. Pemakaian dengan kunci API ditagih dengan tarif API.
  • Memori. CLI-nya adalah binary terkompilasi dan hanya butuh sedikit memori. Build dan test run proyek Anda yang memakai RAM. 2 GB cukup untuk pekerjaan ringan dan 4 GB terasa lega. Lihat panduan memilih VPS untuk ukuran dan harga terkini.
  • User non-root. Buat sebelum memasang apa pun (adduser dev, lalu salin kunci SSH Anda). Panduan Claude Code di VPS kami menjelaskan langkah itu dan pengamanan SSH; langkahnya sama untuk Codex.

Pasang Codex

Installer standalone tidak butuh Node.js:

curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version

Jika Anda sudah mengelola tool dengan npm, perintah ini memasang CLI yang sama:

npm install -g @openai/codex

Perhatikan scope-nya: paketnya adalah @openai/codex. Paket codex tanpa scope di npm tidak ada hubungannya. Pasang sebagai user biasa, bukan dengan sudo. Kedua cara ini tercantum di README openai/codex.

Prasyarat sandbox di Linux

Di Linux, Codex menjalankan perintah shell yang dibuatnya di dalam sandbox berbasis bwrap (bubblewrap) dan seccomp. Dokumentasi sandboxing OpenAI menyarankan memasang bubblewrap terlebih dahulu:

sudo apt install bubblewrap      # Debian / Ubuntu
sudo dnf install bubblewrap      # Fedora

Tanpa bwrap, Codex beralih ke helper bawaan, dan helper itu butuh unprivileged user namespaces. Ubuntu 24.04 membatasinya lewat AppArmor. Solusi yang terdokumentasi adalah memuat profil tambahan:

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

Dokumentasinya juga memberi alternatif yang lebih kasar, sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0, yang mematikan pembatasan itu untuk seluruh mesin. Lebih baik pakai profilnya. Jika setiap perintah di sandbox gagal dengan error namespace, bagian inilah penyebabnya.

Login dengan device code

Jalankan codex login biasa di server dan perintahnya seolah macet. Penyebabnya: ia menjalankan server callback lokal di port 1455 dan menunggu browser Anda diarahkan ke localhost. Itu localhost milik server, yang tidak bisa dijangkau ponsel atau laptop Anda. Gunakan login device code sebagai gantinya. Ada satu prasyarat yang menjebak hampir semua orang:

  1. Aktifkan login device code. Lakukan ini di pengaturan keamanan ChatGPT untuk akun pribadi. Di workspace Business, Edu, atau Enterprise, admin yang mengaktifkannya di izin workspace. Sebelum aktif, alur device tidak akan berfungsi untuk akun Anda.
  2. Mulai alurnya di server:
    codex login --device-auth
  3. Selesaikan di perangkat mana pun. Codex mencetak link dan kode sekali pakai. Buka link-nya di ponsel atau laptop, masuk ke ChatGPT, lalu masukkan kodenya.
  4. Pastikan berhasil:
    codex login status
    Perintah ini mencetak mode autentikasi yang aktif dan keluar dengan kode 0 saat Anda sudah login, sehingga berguna di skrip.

Itu dari dokumentasi autentikasi OpenAI. Dokumentasinya memberi dua cadangan jika device code tidak tersedia:

  • Forward port callback-nya. Sambungkan dengan ssh -L 1455:localhost:1455 user@your-server, jalankan codex login di server, dan buka alamat yang dicetak di browser lokal Anda. Redirect-nya lalu kembali lewat tunnel.
  • Salin kredensialnya. Login di mesin yang punya browser, lalu scp ~/.codex/auth.json user@your-server:~/.codex/auth.json.

Memakai kunci API

printenv OPENAI_API_KEY | codex login --with-api-key

Mengirim kunci lewat stdin menjaganya tetap di luar riwayat shell. Anda membayar per token dengan harga API, bukan memakai kuota paket ChatGPT. Ini cocok untuk server bersama atau CI di mana Anda ingin batas tagihan yang tegas.

Perlakukan auth.json seperti kata sandi

Secara default, Codex menyimpan kredensial di ~/.codex/auth.json. Pengaturan cli_auth_credentials_store bisa memindahkannya ke keyring OS (file, keyring, auto, atau ephemeral). Siapa pun yang punya shell sebagai user Anda bisa memakai paket ChatGPT Anda. Jangan beri orang lain akses shell ke server agen.

Jaga agar tetap berjalan

Sesi codex interaktif hidup dan mati bersama terminal yang memulainya. Tutup koneksi SSH, dan sesinya berakhir. Ada tiga cara mengatasinya.

tmux, cara klasik:

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

Jika sesinya tetap berakhir, codex resume --last melanjutkan percakapan terakhir di direktori itu, dan codex resume membuka pemilih sesi. Panduan tmux, mosh, dan Tailscale kami punya konfigurasi tmux yang nyaman di ponsel.

Eksekusi non-interaktif. codex exec "…" menjalankan satu tugas tanpa TUI, dan codex exec resume --last melanjutkannya. Cocok untuk cron job dan CI, tetapi tidak ada orang yang menjawab permintaan persetujuan, jadi pengaturan sandbox di bawah ini lebih penting.

Daemon yang memegang sesi dan bertahan setelah reboot. Itulah yang dibandingkan di panduan 24/7: unit systemd, server Remote Control, dan aplikasi seperti Maude yang menjalankan prosesnya sendiri di server.

Persetujuan dan sandbox

Codex punya dua kontrol terpisah: apa yang boleh disentuh perintah (sandbox) dan kapan ia berhenti untuk bertanya (approval policy). Nilai-nilai di bawah berasal dari dokumentasi persetujuan dan keamanan OpenAI serta referensi CLI:

PengaturanNilaiArtinya di server
--sandbox / -sread-only, workspace-write, danger-full-accessworkspace-write adalah default di repo git. Perubahan tetap di dalam proyek, dan akses jaringan mati kecuali Anda mengaktifkannya.
--ask-for-approval / -aon-request, neveron-request bertanya saat sebuah aksi butuh lebih dari yang diizinkan sandbox. never tidak bertanya sama sekali. Di config.toml, approval_policy juga menerima granular; nilai lama untrusted sudah dihentikan.
--yolo(alias dari --dangerously-bypass-approvals-and-sandbox)Tanpa sandbox dan tanpa pertanyaan. OpenAI menyarankannya hanya untuk lingkungan yang sudah diamankan dari luar.

--full-auto masih muncul di panduan lama. Sekarang flag itu adalah flag kompatibilitas yang deprecated, dan referensinya menyarankan memakai --sandbox workspace-write. Agar perintah di sandbox bisa menjangkau jaringan, misalnya supaya npm install berfungsi, tambahkan ini ke ~/.codex/config.toml:

sandbox_mode = "workspace-write"
approval_policy = "on-request"

[sandbox_workspace_write]
network_access = true

Satu catatan soal container: jika "VPS" Anda sebenarnya container Docker atau LXC yang memblokir operasi namespace, dokumentasinya menyarankan --sandbox danger-full-access. Lakukan itu hanya jika container-nya sendiri adalah sandbox Anda. Kompromi-nya sama dengan mode bypass Claude, yang dibahas di menjalankan agen dengan izin penuh secara aman.

Opsi akses dari ponsel

OpsiBisa dengan VPS Linux?Unggul dalamPerlu diwaspadai
Codex Remote (aplikasi ChatGPT)Tidak secara resmi. Host harus menjalankan aplikasi desktop ChatGPT di macOS atau Windows; aplikasi itu bisa menjangkau proyek SSH di VPS Anda.Resmi, gratis dengan paket Anda, UI nativeKomputer host harus tetap menyala dan online
Aplikasi SSH + tmuxYaGratis, tidak ada tambahan di serverTUI layar penuh dengan keyboard ponsel, tanpa push
MaudeYa (Linux atau macOS apa pun lewat SSH)UI chat native, persetujuan langsung di tempat, push, juga Claude Code dan lainnyaAplikasi berbayar; Anda tetap butuh paket ChatGPT atau kunci sendiri

Sedikit catatan soal Linux headless dan Codex Remote. Referensi CLI mendokumentasikan codex remote-control start dan codex remote-control pair untuk app-server lokal. Namun panduan Remote connections masih menyebut host menjalankan aplikasi desktop di macOS atau Windows. Pengguna sudah membuka issue soal celah ini: #31183 melaporkan host Linux headless tidak bisa di-pair ulang dari klien mobile saat ini, dan #35928 menunjukkan kontradiksinya. Keduanya masih terbuka saat kami cek. Jika jalur itu berhasil untuk Anda, itulah jalur resminya. Hanya saja, jangan bangun workflow di atasnya dulu.

Jalankan dari ponsel dengan Maude

Maude adalah salah satu cara mengendalikan VPS itu dari ponsel tanpa TUI. Anda menambahkan server dengan alamat atau perintah ssh yang ditempel, dan aplikasi memasang daemon kecilnya sendiri lewat SSH. Daemon itu memasang Codex pada versi yang sudah diuji dan dikunci, diverifikasi dengan checksum, jadi Anda melewati langkah pemasangan. Anda masuk ke Codex dari ponsel dengan device code ChatGPT atau kunci API. Anda tetap harus mengaktifkan login device code di ChatGPT terlebih dahulu. Sesi tetap berjalan di server saat aplikasi ditutup, permintaan persetujuan muncul di kotak masuk dan sebagai notifikasi push dengan Izinkan/Tolak, dan server yang sama bisa menjalankan Claude Code, OpenCode, Grok Build, dan Antigravity di samping Codex. Detailnya ada di halaman agen Codex.

Pertanyaan yang sering diajukan

Kenapa codex login macet di server saya?
codex login biasa menjalankan server callback di localhost:1455 dan menunggu redirect browser, yang tidak bisa dikirim browser di perangkat lain ke VPS Anda. Gunakan codex login --device-auth setelah mengaktifkan login device code di pengaturan keamanan ChatGPT. Alternatifnya, forward port-nya dengan ssh -L 1455:localhost:1455.
Apakah saya butuh Node.js untuk menjalankan Codex?
Tidak. Installer standalone (curl -fsSL https://chatgpt.com/codex/install.sh | sh) dan binary rilisnya tidak butuh Node. Anda hanya butuh Node jika memilih jalur npm, npm install -g @openai/codex.
Bisakah saya memakai kunci API alih-alih paket ChatGPT?
Bisa: printenv OPENAI_API_KEY | codex login --with-api-key. Pemakaiannya lalu ditagih dengan tarif API OpenAI, bukan dihitung dari kuota paket ChatGPT.
Apakah Codex Remote bisa melihat VPS saya?
Untuk saat ini hanya secara tidak langsung. Dokumentasi Remote OpenAI menyebut aplikasi desktop ChatGPT di macOS atau Windows sebagai host, dan aplikasi desktop itu bisa membuka proyek SSH di VPS. Jalur pairing lewat CLI (codex remote-control) terdokumentasi, tetapi issue GitHub yang masih terbuka melaporkan masalah saat mem-pair host Linux headless, jadi cek dokumentasi terbaru sebelum mengandalkannya.
Mode sandbox mana yang sebaiknya dipakai di VPS?
Mulailah dengan workspace-write plus persetujuan on-request, dan aktifkan network_access jika build Anda perlu mengunduh paket. Simpan --yolo untuk mesin sekali pakai atau container yang isolasinya Anda percaya.

Apa yang berubah

  • — Pertama kali diterbitkan. Detail pemasangan, autentikasi, sandbox, dan Remote dicek terhadap dokumentasi OpenAI dan README openai/codex pada tanggal ini.

Codex di server Anda, dari ponsel Anda

Tambahkan server, masuk dengan paket ChatGPT Anda, dan mulai sesi. iOS dan Android.

Download Maude on the App Store Get Maude on Google Play