Налаштування

Codex CLI на VPS

Codex добре працює на невеликому Linux-сервері. Основні складнощі — із входом і з пісочницею Linux. Цей посібник охоплює встановлення, вхід без браузера, збереження сесій і доступ до сервера з телефона.

Codex CLI на VPS

Коротка відповідь

Встановіть командою curl -fsSL https://chatgpt.com/codex/install.sh | sh (або npm install -g @openai/codex). Потім увімкніть вхід за кодом пристрою в налаштуваннях безпеки ChatGPT і виконайте на сервері codex login --device-auth. Запускайте Codex усередині tmux або демона, щоб він пережив SSH-підключення. Remote у застосунку ChatGPT офіційно підтримує лише хости з macOS і Windows. До Linux VPS можна дістатися лише через такий хост: настільний застосунок ChatGPT на Mac чи ПК, який не засинає, відкриває VPS як SSH-проєкт. Щоб дістатися до VPS із телефона напряму, використовуйте SSH-застосунок або клієнт, що спілкується із сервером, як-от Maude.

Сервер — добрий дім для Codex CLI від OpenAI. Він працює далі при закритому ноутбуці, переживає обрив зв'язку, а якщо прогін пішов не так, машину можна перезібрати. На свіжому Linux VPS людей збивають із пантелику дві речі. По-перше, звичайний codex login чекає перенаправлення з браузера, яке ніколи не дійде до сервера. По-друге, пісочниці потрібен пакет, якого немає в більшості мінімальних образів. Цей посібник розв'язує обидві проблеми, а потім розповідає, як зберігати сесії та як дістатися до них із телефона.

Вимоги

  • Linux-сервер, x86-64 або arm64. OpenAI публікує бінарники для обох архітектур, macOS теж підходить. Найпростіше з Debian або Ubuntu.
  • Акаунт. Тариф ChatGPT або ключ OpenAI API. На сторінці цін Codex OpenAI сказано, що Codex входить у ChatGPT Free, Go, Plus, Pro, Business, Edu та Enterprise. Ліміти залежать від тарифу, а локальне використання CLI ділить квоту з хмарними чатами. Використання за ключем API оплачується за тарифами API.
  • Пам'ять. CLI — скомпільований бінарник, і сам він майже не потребує пам'яті. RAM витрачають збирання й тести вашого проєкту. Для легкої роботи вистачить 2 ГБ, комфортно — 4 ГБ. Про вибір розміру й актуальні ціни — у посібнику покупця VPS.
  • Користувач без root. Створіть його до встановлення будь-чого (adduser dev, потім скопіюйте SSH-ключ). Наш посібник із Claude Code на VPS описує це й посилення SSH; для Codex кроки ті самі.

Встановлення Codex

Окремому встановлювачу Node.js не потрібен:

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

Якщо ви й так керуєте інструментами через npm, ця команда ставить той самий CLI:

npm install -g @openai/codex

Зважайте на scope: пакет називається @openai/codex. Пакет codex без scope в npm до нього стосунку не має. Встановлюйте від звичайного користувача, а не через sudo. Обидва способи перелічено в README openai/codex.

Що потрібно пісочниці в Linux

У Linux Codex виконує згенеровані команди оболонки всередині пісочниці на основі bwrap (bubblewrap) і seccomp. Документація OpenAI щодо пісочниці радить спершу встановити bubblewrap:

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

Без bwrap Codex перемикається на вбудований помічник, а тому потрібні непривілейовані простори імен користувачів. Ubuntu 24.04 обмежує їх через AppArmor. Документоване рішення завантажує додатковий профіль:

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

Документація дає й грубішу альтернативу — sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0, що знімає обмеження для всієї машини. Краще використовуйте профіль. Якщо кожна команда в пісочниці падає з помилкою простору імен, причина — у цьому розділі.

Вхід за кодом пристрою

Запустіть на сервері звичайний codex login — і він ніби зависне. Причина: він запускає локальний callback-сервер на порту 1455 і чекає, поки ваш браузер перенаправлять на localhost. Але це localhost сервера, до якого ваш телефон чи ноутбук не дістане. Натомість скористайтеся входом за кодом пристрою. Він має одну передумову, на якій спотикаються майже всі:

  1. Увімкніть вхід за кодом пристрою. Для особистого акаунта це робиться в налаштуваннях безпеки ChatGPT. У робочому просторі Business, Edu чи Enterprise його вмикає адміністратор у дозволах робочого простору. Доки його не ввімкнено, вхід через пристрій для вашого акаунта не працюватиме.
  2. Запустіть процес на сервері:
    codex login --device-auth
  3. Завершіть його на будь-якому пристрої. Codex виведе посилання й одноразовий код. Відкрийте посилання на телефоні чи ноутбуці, увійдіть у ChatGPT і введіть код.
  4. Перевірте, що все вдалося:
    codex login status
    Команда виводить активний спосіб автентифікації й завершується з кодом 0, якщо вхід виконано, — це зручно в скриптах.

Це з документації OpenAI щодо автентифікації. Там само описано два запасні варіанти на випадок, якщо код пристрою недоступний:

  • Прокиньте порт callback. Підключіться через ssh -L 1455:localhost:1455 user@your-server, виконайте codex login на сервері й відкрийте виведену адресу в локальному браузері. Перенаправлення тоді повернеться через тунель.
  • Скопіюйте облікові дані. Увійдіть на машині з браузером, потім scp ~/.codex/auth.json user@your-server:~/.codex/auth.json.

Ключ API замість тарифу

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

Передавання ключа через stdin не дає йому потрапити в історію оболонки. Ви платите за токени за цінами API, а не витрачаєте тариф ChatGPT. Це підходить для спільної чи CI-машини, де потрібна жорстка межа витрат.

Ставтеся до auth.json як до пароля

За замовчуванням Codex кешує облікові дані в ~/.codex/auth.json. Налаштування cli_auth_credentials_store може перенести їх до системної в'язки ключів (file, keyring, auto або ephemeral). Будь-хто з оболонкою від вашого користувача може користуватися вашим тарифом ChatGPT. Не давайте іншим доступу до оболонки на машині з агентом.

Підтримуйте роботу

Інтерактивна сесія codex живе й помирає разом із терміналом, який її запустив. Закрийте SSH-підключення — і сесія закінчиться. Оминути це можна трьома способами.

tmux, класика:

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

Якщо сесія все ж закінчилася, codex resume --last підхопить останню розмову в цій теці, а codex resume відкриє список для вибору. У нашому посібнику з tmux, mosh і Tailscale є конфігурація tmux, зручна для телефона.

Неінтерактивні запуски. codex exec "…" виконує одну задачу без TUI, а codex exec resume --last її продовжує. Це підходить для cron і CI, але відповідати на запити підтвердження там нікому, тож налаштування пісочниці нижче важливіші.

Демон, що володіє сесіями й переживає перезавантаження. Саме це порівнює посібник із роботи 24/7: юніти systemd, сервери Remote Control і застосунки на кшталт Maude, що запускають на машині власний процес.

Підтвердження й пісочниця

У Codex є два окремі налаштування: що можуть зачіпати команди (пісочниця) і коли він зупиняється, щоб запитати вас (політика підтверджень). Значення нижче взято з документації OpenAI щодо підтверджень і безпеки та довідника CLI:

НалаштуванняЗначенняЩо це означає на сервері
--sandbox / -sread-only, workspace-write, danger-full-accessworkspace-write — значення за замовчуванням у git-репозиторії. Правки лишаються всередині проєкту, а доступ до мережі вимкнено, доки ви його не ввімкнете.
--ask-for-approval / -aon-request, neveron-request питає, коли дії потрібно більше, ніж дозволяє пісочниця. never не питає взагалі. У config.toml параметр approval_policy приймає також granular; старе значення untrusted більше не підтримується.
--yolo(псевдонім --dangerously-bypass-approvals-and-sandbox)Без пісочниці й без запитів. OpenAI лишає його для середовищ, які вже захищено ззовні.

--full-auto досі трапляється в старих посібниках. Тепер це застарілий прапорець сумісності, і довідник радить натомість --sandbox workspace-write. Щоб команди в пісочниці могли виходити в мережу, наприклад щоб працював npm install, додайте це до ~/.codex/config.toml:

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

[sandbox_workspace_write]
network_access = true

Зауваження щодо контейнерів: якщо ваш «VPS» насправді контейнер Docker чи LXC, який блокує операції з просторами імен, документація пропонує --sandbox danger-full-access. Робіть так, лише якщо пісочницею слугує сам контейнер. Компроміси ті самі, що й із режимом bypass у Claude; їх розібрано у статті про безпечний запуск агентів із повними правами.

Варіанти доступу з телефона

ВаріантПрацює з Linux VPS?Чим добрийНа що зважати
Codex Remote (застосунок ChatGPT)Офіційно ні. На хостах має працювати настільний застосунок ChatGPT на macOS або Windows; цей застосунок може діставатися до SSH-проєктів на вашому VPS.Офіційно, безкоштовно в межах тарифу, нативний інтерфейсХост-комп'ютер має не засинати й лишатися в мережі
SSH-застосунок + tmuxТакБезкоштовно, нічого зайвого на серверіПовноекранний TUI на клавіатурі телефона, без пушів
MaudeТак (будь-який Linux або macOS по SSH)Нативний чат, підтвердження просто в списку, пуші, а також Claude Code та іншіПлатний застосунок; власний тариф ChatGPT чи ключ і далі потрібен

Кілька слів про headless-Linux і Codex Remote. Довідник CLI описує codex remote-control start і codex remote-control pair для локального app-server. Але посібник із віддалених підключень досі каже, що на хостах працює настільний застосунок на macOS або Windows. Користувачі відкрили issue щодо цієї розбіжності: у #31183 повідомляється, що headless-хости на Linux не вдається знову пов'язати з поточних мобільних клієнтів, а #35928 вказує на суперечність. Коли ми перевіряли, обидва були відкриті. Якщо цей шлях у вас працює, він офіційний. Просто поки не будуйте на ньому робочий процес.

Керування з телефона через Maude

Maude — один зі способів керувати цим VPS з телефона без TUI. Ви додаєте сервер за адресою або вставленням команди ssh, і застосунок розгортає по SSH власний невеликий демон. Цей демон встановлює Codex у перевіреній зафіксованій версії зі звіркою контрольної суми, тож крок встановлення ви пропускаєте. У Codex ви входите з телефона — за кодом пристрою ChatGPT або з ключем API. Вхід за кодом пристрою в ChatGPT однаково треба спершу ввімкнути. Сесії працюють на сервері далі, коли застосунок закрито, запити на підтвердження з'являються у вхідних і в push-сповіщеннях із «Дозволити/Відхилити», а на тому самому сервері поруч із Codex можуть працювати Claude Code, OpenCode, Grok Build та Antigravity. Подробиці — на сторінці агента Codex.

Часті запитання

Чому codex login зависає на моєму сервері?
Звичайний codex login запускає callback-сервер на localhost:1455 і чекає перенаправлення з браузера, яке браузер на іншому пристрої не може доставити на ваш VPS. Скористайтеся codex login --device-auth, попередньо ввімкнувши вхід за кодом пристрою в налаштуваннях безпеки ChatGPT. Інший варіант — прокинути порт через ssh -L 1455:localhost:1455.
Чи потрібен Node.js, щоб запускати Codex?
Ні. Окремому встановлювачу (curl -fsSL https://chatgpt.com/codex/install.sh | sh) і бінарникам із релізів Node не потрібен. Node знадобиться, лише якщо ви оберете шлях через npm, npm install -g @openai/codex.
Чи можна використовувати ключ API замість тарифу ChatGPT?
Так: printenv OPENAI_API_KEY | codex login --with-api-key. Тоді використання оплачується за тарифами OpenAI API, а не зараховується до квоти тарифу ChatGPT.
Чи бачить Codex Remote мій VPS?
Поки лише опосередковано. У документації OpenAI щодо Remote хостом вказано настільний застосунок ChatGPT на macOS або Windows, а цей застосунок може відкривати SSH-проєкти на VPS. Шлях пов'язування через CLI (codex remote-control) описано, але у відкритих issue на GitHub повідомляється про проблеми з пов'язуванням headless-хостів на Linux, тож перевірте актуальну документацію, перш ніж на нього покладатися.
Який режим пісочниці використовувати на VPS?
Почніть із workspace-write і підтверджень on-request та ввімкніть network_access, якщо збиранням треба завантажувати пакети. --yolo залиште для одноразових машин чи контейнерів, ізоляції яких ви довіряєте.

Що змінилося

  • — Перша публікація. Встановлення, автентифікацію, пісочницю й Remote звірено цього дня з документацією OpenAI та README openai/codex.

Codex на вашому сервері — з телефона

Додайте сервер, увійдіть зі своїм тарифом ChatGPT і почніть сесію. iOS та Android.

Download Maude on the App Store Get Maude on Google Play