Налаштування
Codex CLI на VPS
Codex добре працює на невеликому Linux-сервері. Основні складнощі — із входом і з пісочницею Linux. Цей посібник охоплює встановлення, вхід без браузера, збереження сесій і доступ до сервера з телефона.
Коротка відповідь
Встановіть командою 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 сервера, до якого ваш телефон чи ноутбук не дістане. Натомість скористайтеся входом за кодом пристрою. Він має одну передумову, на якій спотикаються майже всі:
- Увімкніть вхід за кодом пристрою. Для особистого акаунта це робиться в налаштуваннях безпеки ChatGPT. У робочому просторі Business, Edu чи Enterprise його вмикає адміністратор у дозволах робочого простору. Доки його не ввімкнено, вхід через пристрій для вашого акаунта не працюватиме.
- Запустіть процес на сервері:
codex login --device-auth - Завершіть його на будь-якому пристрої. Codex виведе посилання й одноразовий код. Відкрийте посилання на телефоні чи ноутбуці, увійдіть у ChatGPT і введіть код.
- Перевірте, що все вдалося:
Команда виводить активний спосіб автентифікації й завершується з кодом 0, якщо вхід виконано, — це зручно в скриптах.codex login status
Це з документації 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-машини, де потрібна жорстка межа витрат.
За замовчуванням 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 / -s | read-only, workspace-write, danger-full-access | workspace-write — значення за замовчуванням у git-репозиторії. Правки лишаються всередині проєкту, а доступ до мережі вимкнено, доки ви його не ввімкнете. |
--ask-for-approval / -a | on-request, never | on-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?
codex remote-control) описано, але у відкритих issue на GitHub повідомляється про проблеми з пов'язуванням headless-хостів на Linux, тож перевірте актуальну документацію, перш ніж на нього покладатися.Який режим пісочниці використовувати на VPS?
workspace-write і підтверджень on-request та ввімкніть network_access, якщо збиранням треба завантажувати пакети. --yolo залиште для одноразових машин чи контейнерів, ізоляції яких ви довіряєте.Що змінилося
- — Перша публікація. Встановлення, автентифікацію, пісочницю й Remote звірено цього дня з документацією OpenAI та README openai/codex.