> Полный список статей есть в [llms.txt](https://docs.f3cloud.com/llms.txt). Markdown-версия есть у каждой страницы, достаточно добавить .md к её адресу. Эта страница в Markdown: [https://docs.f3cloud.com/ru/ai/opencode-on-vps.md](https://docs.f3cloud.com/ru/ai/opencode-on-vps.md).

# OpenCode на VPS – установка ИИ-агента, бесплатные модели и работа через браузер

Установка OpenCode 2 на VPS. Бесплатные модели без ключа API, первая задача в терминале, подтверждение команд перед запуском, работа через браузер по SSH-туннелю и команда opencode pair. Проверено на Debian 12 с OpenCode 2.1.2.

**OpenCode** – это ИИ-агент для программирования с открытым кодом. Вы описываете задачу обычными словами, а он сам читает файлы проекта, пишет и правит код и запускает команды в терминале. Работать с ним можно в терминале или в браузере. На сервере OpenCode удобен тем, что меняет код прямо там, где проект работает, а подключиться к нему можно с любого компьютера. В этой статье мы установим OpenCode на VPS, дадим ему первую задачу, настроим подтверждение команд и откроем его в браузере. Все шаги мы повторили на тестовом сервере с Debian 12, версия OpenCode на момент проверки **2.1.2**.

***

## Как устроен OpenCode

Сам OpenCode не является нейросетью. Он отправляет задание модели вместе с описанием своих инструментов, а затем выполняет то, что модель решила сделать. Например, создаёт файл, вносит правку или запускает команду. Результат уходит обратно модели, и так шаг за шагом, пока задача не будет решена. Поэтому качество работы почти полностью зависит от выбранной модели.

Удобная особенность OpenCode в том, что в нём уже есть **бесплатные модели**. Ключ API и регистрация для них не нужны, агент работает сразу после установки. Эти модели бесплатны на ограниченное время, и их список периодически меняется. Учтите и то, что у части бесплатных моделей собранные данные могут использоваться для улучшения модели, об этом прямо сказано в документации OpenCode. Модель, которая выбрана по умолчанию, **MiniMax M3.1 Flash Free**, по документации данные не хранит и для обучения не использует. Для рабочих проектов можно подключить свою модель, например по ключу API от Anthropic, OpenAI или OpenRouter.

Во второй версии все сессии, настройки и выполнение команд принадлежат **фоновой службе**. Она запускается сама при первом запуске `opencode` и слушает порт только на внутреннем адресе `127.0.0.1`, поэтому из интернета к ней подключиться нельзя. Терминальный интерфейс и браузер – это просто окна, которые подключаются к этой службе. Поэтому задача, начатая в терминале, видна и в браузере.

> **По умолчанию агент ничего не спрашивает.**
>
> Мы попросили OpenCode установить nginx и выложить страницу на сайт. Агент сам выполнил `apt-get install -y nginx`, скопировал файл в `/var/www/html`, перезагрузил nginx и начал изучать его настройки, ни разу не спросив разрешения. Поэтому ставьте OpenCode на сервер, где нет чужих данных и важных сайтов, и сразу после установки включите подтверждение команд, как показано в шаге 2.

***

## Что понадобится

* **Сервер** с Debian 12 или Ubuntu 24.04 и **не меньше 2 ГБ памяти**, например тариф [**DE-RZ9-1**](https://f3cloud.com/ru/vps-ai-agents#cloud-vps). На нашем сервере фоновая служба OpenCode заняла около 340 МБ памяти, а окно в терминале ещё около 190 МБ. Если сервера ещё нет, закажите его по [инструкции](https://docs.f3cloud.com/ru/client-area/order-vps.md).
* **Подключение по SSH**, например через [Termius](https://docs.f3cloud.com/ru/vps/termius-connection.md). Команды выполняются от имени `root`.
* **Папка с проектом**, в которой будет работать агент. В примере это `/root/my-site`.

***

## Шаг 1. Установите OpenCode

Подключитесь к серверу и выполните официальную команду установки второй версии.

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

Установщик скачает программу размером около 200 МБ в папку `/root/.opencode/bin` и добавит её в `PATH`. Чтобы команда `opencode` заработала в текущем окне терминала, перезапустите оболочку.

```bash
exec $SHELL
```

<figure><img src="https://docs.f3cloud.com/img/opencode-install.png" alt="Установка OpenCode 2.1.2 официальным скриптом, сообщение о бесплатных моделях"><figcaption><p>OpenCode установлен, бесплатные модели доступны сразу</p></figcaption></figure>

> **Почему в адресе есть v2.**
>
> Старая команда `curl -fsSL https://opencode.ai/install | bash` ставит первую версию OpenCode. Обе версии используют команду `opencode` и не могут стоять рядом, поэтому установщик второй версии заменяет первую. Если у вас уже стоит первая версия, её интерфейс сам предложит обновиться командой `/update`.

***

## Шаг 2. Включите подтверждение команд

Создайте файл общих настроек OpenCode.

```bash
mkdir -p ~/.config/opencode
nano ~/.config/opencode/opencode.jsonc
```

Вставьте в него правила ниже и сохраните файл сочетанием <kbd>Ctrl</kbd> + <kbd>O</kbd>, затем <kbd>Enter</kbd>, а выйдите из редактора сочетанием <kbd>Ctrl</kbd> + <kbd>X</kbd>.

```json
{
  "$schema": "https://opencode.ai/config.json",
  "permissions": [
    { "action": "shell", "resource": "*", "effect": "ask" },
    { "action": "external_directory", "resource": "*", "effect": "ask" }
  ]
}
```

* Первое правило заставляет агента спрашивать перед **каждой командой** в терминале.
* Второе правило заставляет спрашивать перед работой с файлами **за пределами папки проекта**. Во второй версии OpenCode такой доступ по умолчанию разрешён.

Чтобы служба применила настройки, выполните команду ниже.

```bash
opencode reload
```

Теперь перед каждой командой агент показывает окно **Permission required**.

<figure><img src="https://docs.f3cloud.com/img/opencode-permission.png" alt="OpenCode спрашивает разрешение перед выполнением команды df -h, кнопки Allow once, Always allow и Reject"><figcaption><p>Агент ждёт разрешения перед запуском команды</p></figcaption></figure>

* **Allow once** – выполнить только эту команду.
* **Always allow** – разрешить и запомнить для этого проекта. Например, после разрешения `git status --short` агент перестанет спрашивать про все команды `git status`.
* **Reject** – запретить. Агент остановит задачу, и вы сможете уточнить, что нужно сделать.

Выбор делается стрелками, подтверждение клавишей <kbd>Enter</kbd>.

***

## Шаг 3. Дайте агенту первую задачу

Перейдите в папку проекта и запустите OpenCode.

```bash
cd /root/my-site
opencode
```

Внизу экрана появится строка для задания. Опишите задачу своими словами и нажмите <kbd>Enter</kbd>. Мы попросили создать страницу-визитку кофейни и проверить, что файл на месте. С бесплатной моделью агент справился за 38 секунд.

<figure><img src="https://docs.f3cloud.com/img/opencode-tui-task.png" alt="OpenCode в терминале создал index.html и проверил его командой ls -la, ниже отчёт о сделанном"><figcaption><p>Агент создал страницу, проверил её и рассказал, что сделал</p></figcaption></figure>

Пригодятся несколько клавиш и команд.

* <kbd>Esc</kbd> прерывает текущую задачу.
* <kbd>Ctrl</kbd> + <kbd>P</kbd> открывает список команд.
* Команда `/models` открывает выбор модели. Бесплатные модели помечены словом **Free**.
* <kbd>Ctrl</kbd> + <kbd>C</kbd> закрывает OpenCode. При выходе он показывает команду вида `opencode -s ses_…`, которой можно вернуться к этой же сессии.

<figure><img src="https://docs.f3cloud.com/img/opencode-models.png" alt="Окно выбора модели в OpenCode со списком бесплатных моделей"><figcaption><p>Бесплатные модели в окне /models</p></figcaption></figure>

Чтобы подключить свою модель по ключу API, введите в строке задания команду `/connect` и выберите поставщика.

Задачу можно дать и без интерфейса, одной командой. Это удобно для скриптов.

```bash
opencode run "Сколько строк в файле index.html?"
```

***

## Шаг 4. Откройте OpenCode в браузере

В браузере работать с агентом удобнее, чем в терминале, особенно с длинными ответами и правками кода. Служба OpenCode закрыта от интернета, поэтому подключаться к ней нужно через SSH-туннель.

1. На сервере выполните команду ниже. Она выдаст одноразовую ссылку вида `http://127.0.0.1:49374/auth/connect/…`. Ссылка работает один раз и только 5 минут.

   ```bash
   opencode pair
   ```

2. На своём компьютере откройте новое окно терминала и создайте туннель. Номер порта возьмите из ссылки, на нашем сервере это был `49374`.

   ```bash
   ssh -L 49374:127.0.0.1:49374 root@IP-адрес-сервера
   ```

3. Не закрывая это окно, откройте ссылку из первого шага в браузере на компьютере.

Откроется тот же OpenCode, что и в терминале, со всеми сессиями.

<figure><img src="https://docs.f3cloud.com/img/opencode-web.png" alt="Веб-интерфейс OpenCode в браузере, агент добавил на страницу таблицу напитков с ценами"><figcaption><p>OpenCode в браузере через SSH-туннель</p></figcaption></figure>

> **Не открывайте службу в интернет.**
>
> У OpenCode есть способы подключиться без туннеля, например команда `opencode service set hostname 0.0.0.0` или `opencode pair --remote`. Про второй способ справка OpenCode прямо пишет, что служба становится доступна из интернета. На VPS это значит, что служба, которая выполняет команды на вашем сервере, будет открыта всему миру. Пользуйтесь SSH-туннелем.

Если сервер перезагрузился, служба OpenCode сама не запустится. Запустите её командой `opencode service start` или просто откройте `opencode` в терминале.

***

## Полезные команды

```bash
opencode                  # открыть OpenCode в текущей папке
opencode -c               # продолжить последнюю сессию
opencode run "задача"     # выполнить задачу без интерфейса
opencode models           # список доступных моделей
opencode pair             # одноразовая ссылка для браузера
opencode service status   # адрес фоновой службы
opencode service start    # запустить службу
opencode reload           # перечитать настройки
opencode upgrade          # обновить OpenCode
opencode uninstall        # удалить OpenCode, сессии и настройки останутся
```

***

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

<details>

<summary>opencode: command not found</summary>

Текущее окно терминала ещё не знает о новой команде. Выполните `exec $SHELL` или переподключитесь к серверу по SSH.

</details>

<details>

<summary>Ссылка из opencode pair не открывается</summary>

1. Проверьте, что окно с SSH-туннелем открыто и в команде `ssh -L` указан тот же порт, что и в ссылке.
2. Ссылка работает один раз и только 5 минут. Выполните `opencode pair` ещё раз и откройте новую ссылку.
3. Если порт на вашем компьютере занят, пробросьте другой, например `ssh -L 8080:127.0.0.1:49374 root@IP-адрес-сервера`, и замените в ссылке `49374` на `8080`.

</details>

<details>

<summary>Агент выполняет команды, не спрашивая разрешения</summary>

Так OpenCode работает по умолчанию. Создайте файл `~/.config/opencode/opencode.jsonc` с правилами из шага 2 и выполните `opencode reload`.

</details>

<details>

<summary>Бесплатная модель пропала из списка</summary>

Бесплатные модели доступны ограниченное время, и OpenCode периодически меняет их набор. Откройте `/models` и выберите другую модель с пометкой **Free** или подключите свою по ключу API командой `/connect`.

</details>

***

## Наши ресурсы

**Telegram-канал:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)\
**Официальный сайт:** [https://f3cloud.com](https://f3cloud.com/ru)
