SSD Nodes Learn Hosting plans →
Руководства Matt ConnorАвтор: Matt Connor

Как установить OpenCode на VPS: пошаговое руководство

Узнайте, как безопасно развернуть AI-агент OpenCode на удаленном сервере. Инструкция включает создание непривилегированного пользователя, настройку tmux и защиту API-ключей.

Что такое OpenCode и что именно вы настраиваете

OpenCode — это AI-агент для написания кода с открытым исходным кодом, работающий в терминале. Вы запускаете его внутри директории проекта, и он анализирует ваш код, предлагает изменения, редактирует файлы и выполняет команды — всё это через терминальный пользовательский интерфейс (TUI). Проект распространяется по лицензии MIT, поддерживает более 75 провайдеров моделей и, имея около 219,000 звезд на GitHub по состоянию на октябрь 2026 года, является самым популярным AI-агентом для кодинга с открытым кодом. Чтобы запустить OpenCode на VPS, установите его от имени отдельного непривилегированного пользователя, сохраните API-ключ модели в защищенном файле и запустите агент внутри tmux, чтобы сессия сохранялась при разрыве соединения. Данное руководство описывает именно этот процесс в указанном порядке.

Одно уточнение по названиям поможет избежать путаницы. Канонический репозиторий — anomalyco/opencode, поддерживаемый командой Anomaly (ранее известной как SST), проект ранее располагался по адресу sst/opencode. На GitHub также существует старый, не связанный с этим проект под названием opencode-ai/opencode, который сейчас находится в архиве, поэтому убедитесь, что читаете документацию к нужному проекту. Официальный сайт — opencode.ai.

Зачем запускать OpenCode на VPS

Сессия агента для написания кода длится долго. OpenCode может тратить много минут на рефакторинг или прогон набора тестов, и если агент запущен на вашем ноутбуке, закрытая крышка или разрыв Wi-Fi прервут сессию в процессе выполнения задачи. На VPS внутри tmux агент продолжает работу после вашего отключения, а вы можете подключиться позже, чтобы ознакомиться с результатами. Это тот же подход, что и при запуске Claude Code на VPS с использованием tmux, и это самое значительное улучшение условий работы при переносе агента с локального ноутбука.

Вторая причина — размещение. VPS находится близко к коду, который вы разворачиваете: репозиторий, инструменты сборки, тестовая база данных и часто среда staging уже находятся там или по соседству. Агент, который редактирует код и запускает тесты, работает эффективнее всего на той машине, где эти тесты действительно выполняются. А поскольку сервер находится под вашим контролем, вы можете намеренно предоставить агенту изолированную среду, что и описывается в следующем разделе.

Если вы всё ещё выбираете инструмент, в статье запуск AI-агента для написания кода на VPS приводится сравнение более широкого спектра решений, включая Aider и Goose.

Создание отдельного пользователя для OpenCode

Это честная отправная точка: агент для написания кода редактирует файлы и выполняет команды. Это его работа, и в этом же заключается риск. OpenCode будет запускать сборки, тесты и любые shell-команды, которые потребуются для выполнения задачи, а суждения модели хороши, но не идеальны. Учетная запись, от имени которой работает агент, ограничивает область доступа для вредоносной команды, поэтому не запускайте его от имени root и не используйте для этого ту же учетную запись, под которой вы администрируете сервер.

В отличие от фонового агента, OpenCode является интерактивным, поэтому его пользователю необходима полноценная оболочка (shell) и домашний каталог:

sudo useradd --create-home --shell /bin/bash opencode
sudo -iu opencode

Храните проекты, с которыми должен работать агент, в /home/opencode, клонируя их от имени этого пользователя. Не предоставляйте этой учетной записи прав sudo. Если агент выполнит деструктивную команду, он сможет повредить только то, чем владеет этот аккаунт; это тот же принцип, что и при запуске сервисов от имени непривилегированного пользователя. Также работайте внутри git-репозитория и делайте коммит перед тем, как поручить агенту задачу, поскольку неудачное изменение закоммиченной работы можно будет отменить с помощью git revert или git restore, вместо того чтобы потерять её. Изменения, которые вы не закоммитили, не защищены.

Установка OpenCode

Проект предлагает несколько способов установки, два из которых подходят для сервера. Скрипт установки — самый быстрый вариант, а запуск его от имени пользователя opencode позволяет держать все файлы внутри домашней директории этого пользователя:

curl -fsSL https://opencode.ai/install | bash

Здесь действует обычное правило curl | bash, как и везде: на сервере, который вам дорог, сначала скачайте скрипт, изучите его содержимое, а затем запускайте. После установки откройте новую оболочку (shell), чтобы изменения в переменной PATH, внесенные установщиком, вступили в силу, а затем проверьте работу бинарного файла:

opencode --version

Если вы предпочитаете пакетный менеджер и Node.js уже установлен в системе, установка через npm поместит инструмент в глобальный префикс npm:

sudo npm install -g opencode-ai

При использовании системного Node.js этот префикс обычно находится в /usr/local или /usr, чья директория bin добавлена в PATH каждого пользователя. Менеджер версий или пользовательский префикс могут разместить бинарный файл в другом месте, поэтому сначала выполните npm prefix -g, если нужно, чтобы opencode был доступен пользователю opencode.

В любом случае проверка одинакова: opencode --version выводит номер версии. Если после установки скриптом вы видите command not found, значит, текущая оболочка еще не считала обновленный PATH — выйдите из системы и войдите снова под пользователем opencode.

Обе команды устанавливают линейку OpenCode 1.x, которая продолжает выпускать релизы (1.19.3 на 16 октября 2026 года), и данное руководство описывает именно эту версию. OpenCode 2 теперь доступен как отдельная установка из https://opencode.ai/v2/install или через npm-пакет @opencode/cli, и он работает иначе: общий фоновый сервер для каждой учетной записи пользователя управляет сессиями, правами доступа и выполнением инструментов, а терминал подключается к нему. Руководство по миграции рекомендует удалить версию 1.x, установленную через пакетный менеджер, перед установкой версии 2, так как обе используют команду opencode.

Размещение API-ключа в защищенном файле

OpenCode требует ключ для используемого провайдера моделей. Этот ключ позволяет расходовать ваши средства, поэтому относитесь к нему как к паролю. Создайте файл, доступный для чтения только пользователю opencode, с правами доступа 600. Храните ключ в этом файле, а не вводите его в командах, где он сохранится в истории оболочки:

install -m 600 /dev/null ~/opencode.env
nano ~/opencode.env

Добавьте в файл переменную вашего провайдера, например ANTHROPIC_API_KEY=... или её аналог, так как OpenCode считывает стандартные переменные окружения провайдеров. Загрузите файл в оболочку перед запуском агента:

set -a; source ~/opencode.env; set +a

В OpenCode также предусмотрен интерактивный способ: команда /connect внутри TUI поможет вам добавить провайдера и сохранит учетные данные в ~/.local/share/opencode/auth.json в домашнем каталоге пользователя. Если вы используете этот метод, убедитесь в приватности файла с помощью chmod 600 ~/.local/share/opencode/auth.json. Оба способа позволяют избежать появления ключа в командной строке; выберите один и придерживайтесь его.

Запуск OpenCode внутри tmux

tmux делает настройку VPS по-настоящему полезной, так как сессия tmux продолжает работать после завершения SSH-соединения. Запустите сессию, перейдите в каталог проекта и запустите агент:

tmux new -s opencode
cd ~/my-project
opencode

Вы увидите интерфейс TUI с командной строкой внизу и названием проекта. Дайте агенту задачу на обычном языке, и он начнет читать файлы и предлагать изменения. Чтобы выйти, отсоединитесь комбинацией клавиш Ctrl-b, а затем d — агент продолжит работу, даже если вы закроете ноутбук. Позже можно вернуться к сессии командой:

tmux attach -t opencode

Сессия, история диалога и все запущенные задачи останутся в том же состоянии, в котором вы их оставили. Это сохраняется при разрывах соединения, но не при перезагрузке сервера, поэтому после перезагрузки нужно запустить новую сессию tmux тем же способом. Ничто не мешает вам открыть второе окно tmux и запустить еще один агент параллельно с первым. Сессии OpenCode остаются независимыми друг от друга, в то время как сессии Claude Code на одном сервере могут обмениваться сообщениями, что является другим способом разделения задачи на части.

Настройка модели

OpenCode не привязан к конкретному провайдеру. Он использует AI SDK и каталог Models.dev для поддержки более 75 провайдеров, поэтому один и тот же инструмент работает с Anthropic, OpenAI, Google и десятками других, включая локальные серверы. Самый быстрый способ — команда /connect внутри TUI, которая выводит список провайдеров и настраивает учетные данные. Для конфигурации, которую можно зафиксировать в системе контроля версий и воспроизвести, создайте файл opencode.json в корне проекта и укажите модель как provider/model-id:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-5-5"
}

Выбирайте модель, которую ваш провайдер все еще поддерживает: Anthropic прекратила поддержку claude-sonnet-4-20250514 15 июня 2026 года, поэтому конфигурации, в которых она указана, будут выдавать ошибку.

Локальная модель настраивается через тот же файл, так как любой сервер, совместимый с OpenAI, можно объявить провайдером. Если вы запускаете модель через Ollama на том же VPS, конфигурация указывает на локальный API, а имя модели соответствует тому, что выводит ollama list на вашей машине:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama (local)",
      "options": { "baseURL": "http://127.0.0.1:11434/v1" },
      "models": { "your-model-name": { "name": "Local coding model" } }
    }
  }
}

Стоит с первого дня взять на вооружение одну встроенную функцию. OpenCode поставляется с двумя агентами, между которыми можно переключаться клавишей Tab: Build (агент по умолчанию с полным доступом) и Plan (ограниченный агент для анализа, который не редактирует файлы вне своей директории плана без запроса). Однако Plan не является строго «только для чтения», так как он все еще может выполнять команды оболочки, а команда оболочки может изменять файлы. Начинайте новую задачу в режиме Plan, позвольте агенту прочитать код и предложить подход, и переключайтесь на Build только тогда, когда согласны с планом. Если вы хотите, чтобы первый проход был действительно «только для чтения», запретите редактирование и выполнение команд оболочки для Plan в opencode.json, так как OpenCode воспринимает deny как блокировку действия, в то время как ask лишь запрашивает ваше подтверждение:

{
  "$schema": "https://opencode.ai/config.json",
  "agent": {
    "plan": {
      "permission": { "edit": "deny", "bash": "deny" }
    }
  }
}

На сервере первый проход, который гарантированно ничего не меняет, — это дешевая страховка. Claude Code оформляет аналогичное решение в виде режимов разрешений, а не агентов, и его переход на автоматический режим по умолчанию стоит изучить, если вы используете оба инструмента, так как режим, в котором запускается сессия, определяет, насколько сильно агент может изменять систему без присмотра.

Радиус поражения

Кодирующий агент не является пассивным инструментом, поэтому четко определим, что входит в эту конфигурацию, а что нет. Она включает риск повреждения файлов: пользователь opencode владеет только своей домашней директорией, поэтому любые изменения или удаления ограничены этой областью. Она включает риск раскрытия учетных данных: ключ хранится в одном файле с правами 600 в рамках одной учетной записи. Конфигурация не ограничивает легитимные действия учетной записи, поэтому, если в директории проекта хранятся учетные данные для деплоя в продакшн, агент сможет их использовать; держите такие данные вне учетной записи агента.

В отличие от шлюзового агента, такого как OpenClaw, OpenCode 1.x — это интерактивная терминальная программа, а не демон. По умолчанию она не открывает порты для прослушивания (только флаги --port, --hostname или --mdns заставляют TUI слушать порт) и не имеет постоянно запущенных сервисов, поэтому для самого агента не нужно создавать unit-файл systemd или настраивать firewall. OpenCode 2 меняет это поведение с помощью общего фонового сервера, поэтому перепроверьте этот момент перед миграцией. Изоляция обеспечивается учетной записью пользователя и директорией проекта, поэтому первый раздел этого руководства является наиболее важным.

Сервер по-прежнему требует стандартных мер защиты, так как VPS для разработки остается публичным сервером: используйте только SSH-ключи с отключенным входом для root, как описано в укрепление SSH на VPS, настройте firewall с политикой default-deny и регулярно устанавливайте обновления. Проверяйте то, что создает агент. Читайте его diff-файлы перед отправкой изменений, так же, как вы проверяли бы pull request от нового участника, поскольку именно вы отвечаете за деплой результата.

Наконец, поддерживайте актуальность самого инструмента. OpenCode часто выпускает обновления, которые содержат исправления, важные для программы, выполняющей команды на вашем сервере. Обновление выполняется тем же способом, что и установка: перезапустите скрипт установки от имени пользователя opencode или выполните sudo npm update -g opencode-ai, если вы устанавливали через npm, затем подтвердите новую версию командой opencode --version. Оба способа сохраняют вас на ветке 1.x; переход на OpenCode 2 — это отдельная миграция. Минута обслуживания время от времени обходится дешевле, чем отладка поведения, исправленного в сборке месячной давности.

FAQ

Может ли OpenCode использовать локальную модель вместо платного API?

Да. OpenCode воспринимает любой сервер, совместимый с OpenAI, как провайдера. Поэтому модель, запущенная через Ollama на том же VPS, будет работать: укажите провайдера в opencode.json с локальным baseURL и именем модели, которое сообщает Ollama. Основная сложность заключается в аппаратных ресурсах, так как модель, пригодная для реальной работы с кодом, требует значительного объема памяти. Оцените требования модели перед её загрузкой.

Как оставить OpenCode запущенным после закрытия ноутбука?

Запустите его внутри tmux на VPS. Запустите агент в именованной сессии с помощью tmux new -s opencode, отсоединитесь комбинацией клавиш Ctrl-b, а затем d. Сессия продолжит работу на сервере после завершения вашего SSH-соединения. Вы можете вернуться к ней в любое время с помощью tmux attach -t opencode, при этом история диалога и все запущенные задачи сохранятся. Перезагрузка сервера завершает сессию, поэтому после перезагрузки необходимо запустить новую.

Безопасно ли позволять OpenCode выполнять команды на моем VPS?

Это безопасно при условии изоляции. Создайте для OpenCode отдельного непривилегированного пользователя без прав sudo. Храните проекты в git и делайте коммит перед каждой задачей, чтобы иметь возможность откатить неудачные изменения. Храните API-ключ в файле с правами доступа 600. Используйте агент Plan для предварительной проверки, прежде чем позволять агенту Build вносить изменения. Если вы хотите, чтобы этап планирования был строго доступен только для чтения, установите для правок и shell-команд значение deny. В этом случае агент сможет повредить только то, что принадлежит его учетной записи, а остальная часть сервера останется в безопасности.

В чем разница между OpenCode и Claude Code?

OpenCode — это проект с открытым исходным кодом (лицензия MIT), не привязанный к конкретному провайдеру. Он подключается к более чем 75 провайдерам моделей, включая локальные, через единый интерфейс. Claude Code — это собственный терминальный агент от Anthropic, построенный вокруг моделей Anthropic. Если вам нужен один инструмент для работы с множеством провайдеров или полностью self-hosted стек с локальной моделью, OpenCode — подходящий выбор. Оба инструмента хорошо работают на VPS внутри tmux при одинаковой настройке с непривилегированным пользователем.