Настройка

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 или ПК, который не засыпает, открывает его как 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