Установка Claude Code и ChatGPT Codex на Linux-сервер: пошаговое руководство

Опубликовано Обновлено 12 мин. чтения

От свежей установки Debian или Ubuntu до работающего ИИ-агента: пользователь и белый список sudo, Node.js 22, установка Claude Code, Codex CLI и Gemini CLI и вход в них, файлы правил, cron-задания, первые задачи и типичные ошибки.

Это руководство проведёт вас от свежеустановленного сервера Debian или Ubuntu до работающего ИИ-агента, который анализирует логи, проверяет конфигурации и выполняет задачи обслуживания. Мы настроим Claude Code (Anthropic) и Codex CLI (OpenAI, инструмент командной строки от создателей ChatGPT), оба под отдельным пользователем с ограниченными правами, а также покажем Gemini CLI (Google) как третий вариант. Все команды опробованы на KVM root-сервере KernelHost с Debian 13 и Ubuntu 24.04. Что такое сервер под управлением ИИ в принципе и какие архитектуры бывают, рассказано в статье Сервер под управлением ИИ: безопасное подключение ИИ-агентов.

Актуально на сентябрь 2026 года. Инструменты быстро развиваются; если сомневаетесь, проверяйте флаги с помощью claude --help, codex --help или gemini --help.

Предварительные требования

  • Root-сервер с Debian 12 или 13 либо Ubuntu 22.04 или 24.04 и root-доступом по SSH. На AlmaLinux и Rocky Linux шаги те же, только команды управления пакетами называются dnf, а не apt.
  • Базовая защита уже настроена: вход по SSH по ключу, файрвол, автоматические обновления безопасности. Всё это описано в чек-листе для новых root-серверов.
  • Учётная запись Anthropic (Claude Pro, Max или Team) или API-ключ, учётная запись ChatGPT (Plus, Pro или Team) или API-ключ OpenAI. Если вы хотите настроить только один инструмент, достаточно чего-то одного.
  • Исходящий HTTPS к api.anthropic.com и api.openai.com. На серверах KernelHost он открыт изначально, а строгий собственный файрвол должен его разрешать.

Какого сервера достаточно для ИИ-агента?

ИИ-агенту не нужно на сервере ни особое оборудование, ни GPU, потому что языковая модель работает у провайдера. На сервере работают только инструмент командной строки и Node.js, которые во время сессии обычно занимают вместе несколько сотен мегабайт оперативной памяти. Для сервера, на котором больше почти ничего не запущено, достаточно 2 vCPU и 4 ГБ ОЗУ. Если на сервере параллельно работают сайты, базы данных или игровые серверы, заложите для агента запас около 1 ГБ оперативной памяти. KVM root-сервер KernelHost готов к работе примерно за 30 секунд, оплачивается по модели PrePaid без минимального срока и поэтому подходит и как тестовая система, на которой можно сначала опробовать агента.

Шаг 1: создать отдельного пользователя и ограничить sudo

Агент никогда не работает от root. Он получает собственную учётную запись, а через белый список sudo ровно те команды, которые ему нужны. Начните с нескольких команд на чтение и расширяйте список, когда задача действительно этого требует.

sudo adduser --disabled-password --gecos "KI-Agent" aiagent
sudo tee /etc/sudoers.d/aiagent >/dev/null <<'EOF'
aiagent ALL=(root) NOPASSWD: /usr/bin/journalctl *, /usr/bin/systemctl status *, /usr/bin/systemctl restart nginx, /usr/bin/apt-get update, /usr/bin/apt-get upgrade -y, /usr/bin/tail *, /usr/bin/df *, /usr/bin/ss *
EOF
sudo chmod 440 /etc/sudoers.d/aiagent
sudo visudo -cf /etc/sudoers.d/aiagent

Последняя строка проверяет синтаксис. Ошибка в файле sudoers может заблокировать sudo для всех, поэтому эта проверка обязательна всегда. --disabled-password гарантирует, что никто не сможет войти как aiagent по паролю; в эту учётную запись вы позже переключаетесь командой sudo -iu aiagent. Как в целом устроены пользователи с правами sudo, объясняет статья Создание пользователя sudo в Linux.

Точечные права на запись вместо редактора через sudo

Если агент должен менять файлы в /etc, не разрешайте ему nano через sudo (так можно было бы редактировать любой файл, включая /etc/sudoers), а работайте с группой и точечными правами на запись, например setfacl -m u:aiagent:rw /etc/nginx/sites-available/meine-seite.conf. Для начала вполне достаточно, чтобы агент предлагал изменения, а вы их вносили.

То же касается команд с подстановочными символами в белом списке. /usr/bin/tail * позволяет агенту читать любой файл, к которому есть доступ у root, в том числе файлы с учётными данными. Если вы этого не хотите, пропишите разрешённые пути явно, например /usr/bin/tail -n 200 /var/log/nginx/error.log.

Шаг 2: установить Node.js 22

Оба инструмента работают на Node.js. Claude Code требует версию не ниже 18, Codex CLI не ниже 22, поэтому устанавливаем 22 LTS. Репозитории Debian 12 содержат слишком старую версию; NodeSource предоставляет актуальную:

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
node --version
npm --version

Альтернатива без прав root: nvm

Если вы не хотите запускать скрипты из интернета с правами root, используйте nvm в домашнем каталоге пользователя агента; тогда всё делается полностью без прав root. Команду установки nvm возьмите из README проекта, после этого достаточно трёх строк:

nvm install 22
nvm alias default 22
node --version

Подробности и другие способы описаны в руководстве по Node.js на Debian.

Шаг 3: установить Claude Code и войти

Дальше работаем в учётной записи агента:

sudo -iu aiagent
curl -fsSL https://claude.ai/install.sh | bash
claude --version

Нативный установщик размещает Claude Code в ~/.local/bin и сам поддерживает себя в актуальном состоянии. Альтернативный путь ведёт через npm: npm install -g @anthropic-ai/claude-code; если команда завершается ошибкой EACCES, поможет раздел об устранении ошибок ниже.

Вход на сервере без браузера

При первом запуске claude инструмент просит выполнить вход. Если у вас учётная запись Claude, он обычно открывает браузер; на сервере без браузера он показывает адрес и код, который вы подтверждаете на ноутбуке или смартфоне. После этого вход действует для этого пользователя на этом сервере, пока вы не выйдете из системы.

API-ключ для скриптов и cron-заданий

Для скриптов и cron-заданий API-ключ подходит лучше:

echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
chmod 600 ~/.bashrc
source ~/.bashrc
claude -p "Ответь только словом OK" 

Так ключ хранится только в домашнем каталоге пользователя агента, а этот каталог другие пользователи прочитать не могут. Создайте ключ в консоли Anthropic с месячным лимитом расходов, тогда сессия, вышедшая из-под контроля, не обойдётся дорого. Сам ключ никогда не указывайте в задаче для агента и никогда не записывайте в файл, который он должен выводить.

Шаг 4: настроить Claude Code для сервера

Файл правил CLAUDE.md

При запуске Claude Code читает файл CLAUDE.md в текущем каталоге. В нём записаны правила, которые действуют в каждой сессии. Создайте в домашнем каталоге агента рабочий каталог с этим файлом:

mkdir -p ~/server && cd ~/server
cat > CLAUDE.md <<'EOF'
# Правила для этого сервера
- Это производственный сервер (Debian 13, nginx, PHP-FPM, MariaDB).
- Команды на чтение (journalctl, systemctl status, tail, df, ss) разрешены в любое время.
- Перед каждой командой на запись кратко объяснять, что она меняет, и ждать одобрения.
- Никогда не удалять пакеты, никогда не удалять файлы в /var/lib, никогда не создавать и не удалять пользователей.
- Никогда не повторять в выводе пароли, ключи и данные клиентов.
- В конце каждой задачи давать итог в трёх предложениях.
EOF

Файл растёт вместе с работой. Каждый раз, когда агент делает что-то не так, как вы хотите, вносите исправление в файл в виде нового правила. Через несколько недель он довольно точно отражает то, как ведётся работа на вашем сервере.

Белый список в settings.json

К этому добавляется белый список инструментов, чтобы Claude Code выполнял команды на чтение без лишних вопросов, а на всё остальное запрашивал разрешение. Файл ~/.claude/settings.json действует на уровне пользователя:

mkdir -p ~/.claude
cat > ~/.claude/settings.json <<'EOF'
{
  "permissions": {
    "allow": [
      "Bash(sudo journalctl:*)",
      "Bash(sudo systemctl status:*)",
      "Bash(sudo tail:*)",
      "Bash(df:*)",
      "Bash(free:*)",
      "Bash(ss:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo rm:*)",
      "Bash(dd:*)",
      "Bash(mkfs:*)"
    ]
  }
}
EOF

Список запретов служит дополнительной страховочной сеткой, а не стеной: одну и ту же команду можно записать множеством способов. Настоящую границу задаёт белый список sudo из шага 1, ведь то, что запрещено пользователю, запрещено и агенту.

Первая задача в интерактивном режиме

Теперь первая задача, в интерактивном режиме:

cd ~/server && claude
> Составь сводку ошибок из journalctl за последние 24 часа и назови три самые частые причины.

Без присмотра через cron-задание

А вот та же задача без присмотра, например как ежедневное cron-задание в 7 утра, результат которого приходит по электронной почте:

0 7 * * * cd /home/aiagent/server && /home/aiagent/.local/bin/claude -p "Составь сводку ошибок и предупреждений из journalctl за последние 24 часа. Укажи службу, время и вероятную причину." --allowedTools "Bash(sudo journalctl:*)" 2>&1 | mail -s "Ежедневный отчёт по серверу" admin@example.com

Флаг -p запускает Claude Code без интерактивной сессии, а --allowedTools ограничивает инструменты ровно тем, что нужно для этого запуска. Действиям, которые что-то изменяют, не место в запусках без присмотра. Как в целом настраиваются cron-задания, описано в статье Настройка cron-задания в Linux.

Шаг 5: установить Codex CLI (ChatGPT) и войти

Установка и вход

Codex CLI от OpenAI делает модели, на которых работает ChatGPT, доступными в командной строке. Установка в той же учётной записи:

npm install -g @openai/codex
codex --version

Вход выполняется с учётной записью ChatGPT (Plus, Pro или Team): запустите codex, выберите «Sign in with ChatGPT» и откройте показанный адрес на устройстве с браузером. Для скриптов вместо этого задайте API-ключ с платформы OpenAI:

echo 'export OPENAI_API_KEY="sk-..."' >> ~/.bashrc
source ~/.bashrc

Песочница и режим одобрения в config.toml

У Codex есть собственная песочница и режим одобрения. И то и другое задаётся в ~/.codex/config.toml; для производственного сервера разумна такая комбинация:

mkdir -p ~/.codex
cat > ~/.codex/config.toml <<'EOF'
approval_policy = "on-request"
sandbox_mode = "workspace-write"
EOF

workspace-write разрешает запись только в текущем рабочем каталоге, а on-request заставляет агента спрашивать разрешения на всё, что выходит за эти рамки. Уровень danger-full-access снимает оба ограничения, и ему не место на производственной системе.

Правила в AGENTS.md

Правила, как в CLAUDE.md, Codex читает из файла AGENTS.md в рабочем каталоге; можно использовать то же содержимое:

cp ~/server/CLAUDE.md ~/server/AGENTS.md
cd ~/server && codex "Проверь, работают ли все включённые службы systemd, и перечисли те, что завершились сбоем, с последним сообщением об ошибке."

Для запусков без присмотра есть codex exec "Aufgabe", аналог claude -p.

Шаг 6: Gemini CLI как третий вариант

Gemini CLI, инструмент командной строки от Google, устроен по тому же принципу. Он тоже работает на Node.js и устанавливается в той же учётной записи:

npm install -g @google/gemini-cli
gemini --version

При первом запуске gemini вы входите с учётной записью Google, а для скриптов задаёте API-ключ в переменной окружения GEMINI_API_KEY. Правила Gemini CLI читает из файла GEMINI.md в рабочем каталоге, и здесь тоже можно взять содержимое CLAUDE.md. Запуски без присмотра выполняются командой gemini -p "Aufgabe". Какой из трёх инструментов выбрать, зависит прежде всего от того, какая учётная запись у вас уже есть: на сервере все три работают одинаково, и несколько из них можно использовать параллельно.

Альтернатива: агент работает на вашем компьютере и действует через SSH

Если вы не хотите ничего устанавливать на сервер, запустите Claude Code или Codex на ноутбуке и позвольте агенту отправлять команды через SSH. Для этого пользователь агента получает на сервере собственный SSH-ключ, а в CLAUDE.md записывается правило предварять все серверные команды префиксом ssh aiagent@server. Для нерегулярного обслуживания это хорошо работает, но длительные задачи и cron-задания лучше выполнять прямо на сервере. Как в деталях выглядит подключение по SSH с отдельным ключом, алиасом хоста и одобрениями и по какому регламенту агент затем выполняет развёртывание на производственных системах, показывает отчёт из практики Подключить ИИ к серверу.

Шаг 7: защитить и задать границы

  • Снимок или резервная копия перед каждой сессией, в которой что-то будет меняться. Как настроить это автоматически, показывает статья Стратегия резервного копирования для серверов.
  • Режим одобрения не отключать. --dangerously-skip-permissions в Claude Code и danger-full-access в Codex предназначены для одноразовых виртуальных машин.
  • Секреты вне досягаемости. Пользователь агента не должен иметь возможности читать файлы .env, пароли баз данных и данные клиентов. Всё, что он читает, уходит провайдеру.
  • Лимит расходов задайте для каждого API-ключа в консоли провайдера.
  • Прослеживаемость: установите etckeeper, чтобы каждое изменение в /etc попадало в Git, и сохраняйте итоговые сводки агента.
  • Для входящего трафика ничего не меняется. Обоим инструментам нужен только исходящий HTTPS. Файрвол, Fail2ban и защита от DDoS у хостера остаются без изменений.

Первые задачи: пять полезных поручений

Лучше всего для начала подходят задачи, в которых много чтения и нет риска. Они быстро показывают, насколько тщательно работает агент, и сразу приносят пользу:

  • Отчёт по логам: «Составь сводку ошибок и предупреждений за последние 24 часа, сгруппируй их по службам и укажи вероятную причину».
  • Проверка служб: «Перечисли все службы systemd, завершившиеся сбоем, с последним сообщением об ошибке и объясни, что нужно сделать в каждом случае. Ничего не меняй».
  • Место на диске: «Покажи, какие каталоги занимают больше всего места, и предложи, что можно безопасно удалить». Подробнее об этом в статье Переполненный диск в Linux.
  • Обновления: «Для каких пакетов есть ожидающие установки обновления безопасности и какие службы нужно будет после этого перезапустить?»
  • Веб-сервер: «Проверь конфигурацию nginx на ошибки и устаревшие настройки и объясни каждую находку».

Только когда результаты такого анализа верны, имеет смысл поручать агенту задачи, связанные с изменениями, причём сначала на тестовой системе.

Типичные ошибки и решения

СообщениеПричина и решение
EACCES: permission denied при npm install -gnpm пытается писать в системный каталог. Задайте пользовательский префикс: npm config set prefix ~/.npm-global, затем добавьте export PATH=~/.npm-global/bin:$PATH в ~/.bashrc и установите заново.
Node.js version ... is not supportedСлишком старая версия из репозиториев дистрибутива. Повторите шаг 2 и проверьте командой node --version, что активна версия 22.x.
claude: command not foundНативный установщик размещает программу в ~/.local/bin, а этого каталога ещё нет в PATH. Добавьте export PATH=$HOME/.local/bin:$PATH в ~/.bashrc и перезапустите оболочку.
Вход не открывает браузерНа сервере это ожидаемо. Откройте показанный адрес на другом устройстве и введите код или перейдите на API-ключ.
ECONNREFUSED или тайм-аут при запускеИсходящий HTTPS заблокирован. Проверьте правила файрвола для исходящих соединений на порт 443; на серверах KernelHost исходящий трафик изначально открыт.
429 rate limit или overloadedИсчерпана квота подписки или API либо провайдер перегружен. Немного подождите, а для запусков без присмотра предусмотрите повторную попытку через несколько минут.
Агент переспрашивает при каждой командеДополните белый список в ~/.claude/settings.json или approval_policy в config.toml, но только командами на чтение.
Cron-задание присылает пустые письмаВ cron нет переменных окружения оболочки. Задайте API-ключ в crontab или в файле окружения, который считывает задание, и указывайте полный путь к программе.

Обновление инструментов

Claude Code, установленный нативным установщиком, обновляется сам. Инструменты, установленные через npm, обновляются до последней версии одной командой:

npm update -g @openai/codex @google/gemini-cli
codex --version
gemini --version

Новые версии иногда меняют флаги или настройки по умолчанию. После обновления кратко просмотрите список изменений, прежде чем позволить запускам без присмотра работать дальше, и проверьте, нет ли в следующем ежедневном отчёте чего-то необычного.

Итог

ИИ-агент на сервере настраивается за час: пользователь, белый список sudo, Node.js, инструмент, правила. Основная работа связана с границами, и здесь они намеренно заданы узкими. Расширяйте их шаг за шагом, когда этого требует задача, и никогда не делайте этого огульно. На root-сервере KernelHost или выделенном сервере для этого ничего не нужно дополнительно активировать: root-доступ, свободный выбор дистрибутива и исходящие соединения входят в стандарт.

Как агент затем выполняет развёртывание на производственных системах, с резервной копией, путём отката и одобрениями, описывает отчёт из практики Подключить ИИ к серверу.

Коротко о главном

  • Claude Code, Codex CLI и Gemini CLI работают на любом Linux-сервере с Node.js 22, GPU не нужен.
  • Агент получает отдельного пользователя с белым списком sudo и никогда не работает от root.
  • Правила записываются в CLAUDE.md, AGENTS.md или GEMINI.md, команды на чтение попадают в белый список, а всё остальное требует одобрения.
  • Для cron-заданий и скриптов правильнее всего использовать API-ключ с лимитом расходов, а запуски без присмотра ограничивать чтением.
  • Резервная копия перед каждой сессией, секреты вне досягаемости, режим одобрения включён.
  • На серверах KernelHost root-доступ, свободный выбор дистрибутива и исходящие соединения доступны изначально.

Частые вопросы

Нужна ли для Claude Code подписка или достаточно API-ключа?
Подходит и то и другое. С учётной записью Claude (Pro, Max или Team) вы при первом запуске входите через браузер, а на сервере без браузера с помощью кода на другом устройстве. Для автоматизированных задач без человека за клавиатурой правильнее использовать API-ключ в переменной окружения ANTHROPIC_API_KEY, потому что он не привязан к конкретному человеку и его расходы можно ограничить бюджетом.
Как войти в Codex CLI на сервере без браузера?
Либо через вход с учётной записью ChatGPT, при котором Codex показывает адрес, а вы открываете его на ноутбуке или смартфоне, либо через переменную окружения OPENAI_API_KEY с ключом с платформы OpenAI. Для cron-заданий и скриптов API-ключ надёжнее.
Какая версия Node.js нужна?
Claude Code требует Node.js версии не ниже 18, Codex CLI не ниже 22. Поэтому сразу устанавливайте Node.js 22 LTS из репозитория NodeSource или через nvm в домашнем каталоге пользователя агента. Версия из репозиториев Debian 12 слишком старая. После установки проверьте командой node --version, какая версия активна: если команда всё ещё показывает более старую мажорную версию, значит, версия из дистрибутива стоит в PATH раньше.
Почему npm install -g завершается ошибкой EACCES?
Потому что при глобальной установке npm пытается писать в системный каталог, на который у пользователя нет прав. Задайте пользовательский префикс командой npm config set prefix ~/.npm-global, добавьте ~/.npm-global/bin в PATH и установите заново. Как альтернатива подойдёт nvm или, для Claude Code, нативный установщик, которому npm не нужен.
Можно ли запускать Claude Code в cron-задании?
Да, с помощью claude -p, задачи в виде текста и белого списка разрешённых инструментов. Используйте для этого API-ключ, ограничьте инструменты командами на чтение и перенаправьте вывод в файл или электронное письмо. Действиям, вмешивающимся в систему, не место в запусках без присмотра.
Работает ли это и на серверах Windows от KernelHost?
Да. Claude Code и Codex CLI работают в Windows нативно с Node.js или в подсистеме Windows для Linux. Шагам с пользователем и белым списком sudo там соответствует отдельный пользователь Windows без прав администратора. Windows Server предоставляется в KernelHost по модели Bring Your Own License, а правила об одобрениях, резервных копиях и секретах действуют там так же, как в Linux.
Можно ли использовать Claude Code, Codex CLI и Gemini CLI на одном сервере параллельно?
Да. Все три инструмента работают рядом в одной учётной записи и пользуются одними и теми же правами. Каждый читает собственный файл правил в рабочем каталоге: Claude Code читает CLAUDE.md, Codex CLI читает AGENTS.md, а Gemini CLI читает GEMINI.md. Проще всего вести содержимое в одном месте и копировать его во все три файла. Какой инструмент использовать, обычно зависит от того, какая учётная запись у вас уже есть.
Сколько оперативной памяти нужно ИИ-агенту на сервере?
Немного, потому что языковая модель работает у провайдера. Инструмент командной строки и Node.js во время сессии обычно занимают лишь несколько сотен мегабайт. Для сервера, на котором больше почти ничего не запущено, достаточно 2 vCPU и 4 ГБ ОЗУ. Если параллельно работают сайты, базы данных или игровые серверы, заложите для агента запас около 1 ГБ. GPU не нужен.
Как обновлять Claude Code, Codex CLI и Gemini CLI?
Claude Code, установленный нативным установщиком, обновляется сам. Codex CLI и Gemini CLI вы обновляете до последней версии командой npm update -g @openai/codex @google/gemini-cli, а затем проверяете версии командами codex --version и gemini --version. После обновления прочитайте список изменений, прежде чем запуски без присмотра продолжат работу, потому что флаги могут измениться.
Как настроить Gemini CLI на сервере?
Выполните npm install -g @google/gemini-cli в учётной записи пользователя агента, затем запустите gemini и войдите с учётной записью Google или, для скриптов, задайте API-ключ в переменной окружения GEMINI_API_KEY. Правила Gemini CLI читает из файла GEMINI.md в рабочем каталоге, а запуски без присмотра выполняются командой gemini -p с задачей в виде текста.
Почему ИИ-агенту нельзя работать от root?
Потому что агент, неправильно понявший указание, с правами root в худшем случае повредит весь сервер, например ошибочной командой удаления. С отдельным пользователем и белым списком sudo он может выполнять только те команды, которые вы явно разрешили. Тем самым возможный ущерб ограничен этими командами, а по логам в любой момент видно, что сделал агент.

Claude Code Codex CLI Gemini CLI ChatGPT ИИ-агент Node.js Debian Ubuntu Администрирование серверов