Перейти к содержимому

Решения · Агенты для программирования

VPS для OpenHands

OpenHands: автономный агент для программирования. Дайте ему репозиторий и задачу, и он сам вносит правки, запускает, тестирует и открывает pull request, используя выбранную вами модель через API-ключ. В его собственном README сказано, что самый мощный способ запуска: на сервере в облаке, а его собственное предупреждение гласит, что агент получает полный доступ к машине, на которой работает. Оба указывают на один ответ: машина, которая не является чьим-то ноутбуком. Руководство проекта по серверу называет 2 vCPU и 4 GB вполне достаточными для одного пользователя; BD-8 за $12.90 в месяц даёт вдвое больше и стоит дешевле, чем машины с 4 GB в других местах.

Что нужно

Программы по документации, размеры с указанием источника

Программы и настройки безопасности взяты из официальной документации проекта. Если проект не публикует требований к оборудованию, у размеров указано, чьи это рекомендации.

Из README OpenHands, SELF_HOSTING.md и документации

  • «2 vCPU / 4 GB RAM вполне достаточно для одного пользователя» (руководство проекта по VM). Документация требует «современный процессор и не менее 4GB RAM».
  • Установка: Node.js 24 или новее и uv, затем npx @openhands/agent-canvas --public. Одна команда запускает сервер агента, бэкенд автоматизации и веб-приложение за ingress на 127.0.0.1:8000.
  • Задайте LOCAL_BACKEND_API_KEY до первого запуска: в публичном режиме каждый вызов API должен его содержать, а веб-приложение запрашивает его прежде всего остального. Сначала закройте файрволом всё, кроме SSH; руководство велит сделать это до того, как агент вообще запустится.
  • API-ключ от провайдера моделей: по документации OpenHands он нужен для большинства моделей. Docker необязателен и нужен только, если вы хотите изолировать каждый диалог в отдельном контейнере. GPU не нужен, если вы не размещаете модель сами.

Размеры (сначала цифра проекта, затем наша)

Подбор размера по задаче
НагрузкаvCPURAM
Один пользователь, облачные модели, агент на хосте (официально)Цифра из самого руководства. Сервер агента работает прямо на машине, поэтому песочницей служит сама машина.24 GB
Один или два пользователя, песочница Docker на каждый диалогНаша. Каждый диалог получает контейнер; установка зависимостей, сборки и наборы тестов выполняются внутри них.48 GB
Общий командный сервер агентов, несколько агентов одновременноНаша. Параллельные агенты на параллельных репозиториях, и каждый что-то компилирует.824 GB

Подходящие тарифы

Машин: 5, цены актуальные

Сначала самая дешёвая подходящая машина. Цены текущие, за месяц, из каталога.

  • BD-8$12.90/мес.

    4 vCPU · 8 GB · диск 100 GB · 32 TB

    Самый дешёвый с запасом для сборки и тестов. 4 vCPU, 8 GB, 100 GB и 32 TB трафика дешевле, чем машины с 4 GB в других местах. Вдвое больше ориентира руководства; тестовые наборы заметят ядра.

  • U2-4-40$14.90/мес.

    2 vCPU · 4 GB · диск 40 GB · Unmetered

    Ровно ориентир руководства, Unmetered, Стамбул. 2 vCPU / 4 GB / 40 GB. Один пользователь, модели у провайдера, агент на хосте. Трафик без учёта для клонирования и установки пакетов.

  • BD-24$31.90/мес.

    8 vCPU · 24 GB · диск 300 GB · 32 TB

    8 vCPU / 24 GB для командного сервера агентов. Несколько агентов одновременно, песочницы Docker, бэкенд автоматизации по расписанию.

  • C2-4-80$37.90/мес.

    2 vCPU · 4 GB · диск 80 GB · 3 TB

    Цифра из руководства, в десятках городов. 2 vCPU / 4 GB / 80 GB. Выбирайте его ради города; ведите один диалог за раз.

  • C4-8-160$75.90/мес.

    4 vCPU · 8 GB · диск 160 GB · 3 TB

    4 vCPU / 8 GB / 160 GB, в десятках городов. Комфортный размер с диском для множества рабочих копий и образов Docker.

Готового стартового шаблона для OpenHands пока нет: установка состоит из пяти шагов ниже, которые вы вводите сами, в том порядке, в каком их приводит руководство проекта. Сначала брандмауэр, затем ключ, затем агент.

Установка

Пять шагов в том порядке, в котором их даёт собственное руководство OpenHands

Руководство прямо говорит, что файрвол настраивается до первого запуска: сервер агента распоряжается всей машиной, и только файрвол и ключ отделяют его от посторонних.

  1. Сначала файрвол. ufw allow OpenSSH && ufw --force enable Никаких входящих, кроме SSH. Входной прокси (8000), сервер агента (18000), бэкенд автоматизации (18001) и статический сервер (3001) не должны быть доступны извне; руководство говорит именно это.
  2. Node.js 24 и uv. apt-get install -y curl git curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && apt-get install -y nodejs curl -LsSf https://astral.sh/uv/install.sh | sh uv запускает сервер агента; руководство устанавливает его однострочным установщиком с astral.sh.
  3. Сгенерируйте ключ, запустите в публичном режиме. export LOCAL_BACKEND_API_KEY=$(openssl rand -base64 32); echo $LOCAL_BACKEND_API_KEY npx @openhands/agent-canvas --public Прежде чем продолжить, сохраните ключ в надёжном месте; публичный режим означает, что веб-приложение будет его запрашивать. Для долгосрочной работы используйте юнит systemd из руководства в /etc/systemd/system/agent-canvas.service с Environment=LOCAL_BACKEND_API_KEY=… внутри, затем systemctl enable --now agent-canvas.
  4. Подключитесь по SSH, добавьте модель. ssh -N -L 8000:127.0.0.1:8000 root@your-server, затем http://127.0.0.1:8000, вставьте ключ, затем Settings: выберите провайдера LLM и модель и вставьте API-ключ этого провайдера. Начните диалог по репозиторию.
  5. По желанию, домен. Направьте A-запись на сервер, откройте 80 и 443, apt-get install -y nginx certbot python3-certbot-nginx и блок nginx из руководства, проксирующий на 127.0.0.1:8000 с заголовками WebSocket; certbot --nginx -d canvas.example.com --redirect получает сертификат. Если 443 должен быть открыт для всех, руководство говорит, что ключ ваша основная защита, поэтому делайте его длинным и храните в секрете.

Откровенно

Что купили бы мы сами

Руководство говорит, что 2 vCPU и 4 GB вполне достаточно для одного пользователя. Возьмите машину с 8 GB, которая стоит дешевле машин с 4 GB, и пусть агент компилирует.

Для агента-программиста одного человека

BD-8 · $12.90/мес.

4 vCPU, 8 GB и 100 GB за $12.90: сервер агента, несколько клонированных репозиториев, их деревья зависимостей и набор тестов, который выполняется у вас на глазах, и ещё остаётся память, если вы включите песочницы Docker. Модель находится в другом месте, за API-ключом, поэтому этой машине никогда не нужен GPU, а счёт, который действительно важен, выставляет провайдер модели. C2-4-80 за $37.90 в точности соответствует цифре из руководства и доступен в десятках городов, если город для вас важнее количества ядер.

Вопросы

Что спрашивают перед покупкой.

Сколько RAM нужно OpenHands?
Руководство проекта по ВМ говорит, что 2 vCPU и 4 GB RAM вполне достаточно для одного пользователя, а документация рекомендует современный процессор и минимум 4 GB. Этого хватает на сервер агента, бэкенд автоматизации и веб-приложение с облачными моделями. А то, что агент делает дальше (клонирует репозитории, устанавливает зависимости, запускает сборки и тесты), это обычная работа разработчика, и ей нужны обычные ресурсы разработчика. Поэтому самая дешёвая машина на этой странице имеет 4 ядра и 8 GB, а не точный минимум.
Зачем запускать его на сервере, а не на ноутбуке?
Две причины, и обе из самого README. В нём сказано, что самый мощный способ запускать OpenHands: на сервере в облаке, тогда агенты продолжают работать, когда ноутбук закрыт, и их можно запускать из Slack, GitHub или через webhook. И там же предупреждение: сервер агента работает прямо на машине с полным доступом к файловой системе, оболочке и сети. Машина, на которой нет ничего, кроме агента и репозиториев, с которыми он работает, и есть честный способ дать ему такой доступ.
Нужен ли ему API-ключ или можно использовать локальную модель?
В документации сказано, что OpenHands требуется API-ключ для доступа к большинству языковых моделей, и перечислены рекомендуемые облачные провайдеры. Локальная модель через Ollama или аналогичный сервер поддерживается, но в документации добавлено, что для эффективной работы агента на локальных моделях нужно мощное оборудование и модели, обученные следовать инструкциям. На практике: облачная модель и API-ключ на этой машине, а если вам нужна локальная модель, отдельный сервер моделей, размер которого подобран на странице Ollama или в линейке GPU.
Что делают --public и LOCAL_BACKEND_API_KEY?
Без --public приложение для удобства встраивает свой сеансовый ключ в веб-страницу, и README называет это небезопасным для развёртывания, доступного из интернета. С --public ключа на странице нет: каждый, кто открывает веб-приложение, сначала должен вставить LOCAL_BACKEND_API_KEY, и каждый вызов API должен его передавать. Порядок в руководстве такой: сначала файрвол, затем ключ, затем запуск; ключ генерируется командой openssl rand -base64 32.
Нужен ли мне Docker?
Для стандартной установки не нужен: в ней сервер агента работает прямо на хосте с Node 24 и uv. Docker нужен для изолированных режимов: запуск всего стека из образа проекта или отдельный контейнер для каждого диалога, чтобы несколько агентов могли работать одновременно, не разделяя файловую систему. В README отмечено, что песочница изолирует выполнение диалогов, а не всё приложение. Если она вам нужна, установите Docker и рассчитывайте на строку с 8 GB или больше.
Какие порты используются?
Всё привязано к loopback: входной прокси на 127.0.0.1:8000 направляет запросы на статический сервер на 3001, сервер агента на 18000 и бэкенд автоматизации на 18001. К 8000 вы подключаетесь через SSH-туннель или через nginx на 443, если добавите домен. Ни один из этих четырёх портов не должен быть открыт в файрволе; руководство перечисляет их по номерам как те, что не должны быть доступны извне.