Для AI-агентов: markdown этой страницы — /docs-content/infra/deploy/runtimes.md индекс документации — /llms.txt
Список рантаймов
GET /v1/infra/runtimes
Возвращает список ID готовых рантаймов для передачи в POST /v1/infra/servers/:id/deploy (параметр runtime). Рантайм — необязательный параметр: если нужный стек входит в список, передайте его ID и платформа установит пакеты автоматически. Если нет — на отдельной виртуальной машине деплой без runtime полностью рабочий: установите нужное ПО через preStart в теле запроса. У galaxy-приложения runtime обязателен, а preStart не применяется. На POST /v1/infra/servers рантайм без source НЕ принимается с 2026-04-25 — см. RUNTIME_PARAM_REMOVED. В одношаговом создании galaxy-приложения runtime передаётся вместе с source; start также обязателен, кроме static, где поле необязательно и игнорируется. Каждый рантайм — это набор системных пакетов (nodejs, python, nginx, базы данных), устанавливаемых на сервер. Оценочное время установки — 2–4 минуты для базовых, до 4+ минут для комбинаций с несколькими пакетами.
Примеры
curl — личный ключ
curl -H "X-Api-Key: YOUR_API_KEY" \
https://vibecode.bitrix24.tech/v1/infra/runtimes
curl — OAuth-приложение
curl -H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
https://vibecode.bitrix24.tech/v1/infra/runtimes
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/infra/runtimes', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data: runtimes } = await res.json()
runtimes.forEach(r => console.log(`${r.id}: ${r.name} (${r.estimatedSetupTime}s)`))
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/infra/runtimes', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе |
data |
array | Массив рантаймов |
data[].id |
string | ID рантайма, передаётся как runtime при деплое (POST /v1/infra/servers/:id/deploy) |
data[].name |
string | Название для отображения пользователю |
data[].packages |
array<string> | Список пакетов, устанавливаемых на отдельной виртуальной машине (для справки) |
data[].estimatedSetupTime |
number | Оценочное время установки в секундах |
data[].supportedPlacements |
array<string> | Где рантайм доступен: ["standalone"] — только отдельная виртуальная машина, ["standalone","galaxy"] — ещё и галактика. Проверяйте это поле перед деплоем в галактику: рантайм с базой данных туда не ставится |
Пример ответа
{
"success": true,
"data": [
{
"id": "node20",
"name": "Node.js 20",
"packages": ["nodejs-20", "npm", "pm2"],
"estimatedSetupTime": 120,
"supportedPlacements": ["standalone", "galaxy"]
},
{
"id": "node20-pg",
"name": "Node.js 20 + PostgreSQL",
"packages": ["nodejs-20", "npm", "pm2", "postgresql-16"],
"estimatedSetupTime": 180,
"supportedPlacements": ["standalone"]
},
{
"id": "python311-rag",
"name": "Python 3.11 + RAG (pgvector + Redis)",
"packages": ["python3.11", "pip", "postgresql-16", "pgvector", "redis"],
"estimatedSetupTime": 240,
"supportedPlacements": ["standalone"]
}
]
}
Пример ответа при ошибке
401 — не передан API-ключ:
{
"success": false,
"error": {
"code": "MISSING_API_KEY",
"message": "API key required. Pass via X-Api-Key header."
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
| 401 | INVALID_API_KEY |
Ключ не опознан: такой строки на платформе нет |
| 429 | RATE_LIMITED |
Превышен общий лимит запросов платформы |
Полный список общих ошибок API — Ошибки.
Известные особенности
- На 2026-04-22 платформа предлагает 15 рантаймов: шесть вариантов Node.js 20 (чистый, с PostgreSQL, MySQL, Redis, комбинации, RAG-стек), пять вариантов Python 3.11 (аналогично), два варианта PHP 8.3 (чистый и с MySQL) и
staticдля SPA-статики. Актуальный снимок всегда — в ответе эндпоинта. - Команда запуска зависит от рантайма — её указывают в поле
startдеплоя, кромеstatic. Дляstaticполе необязательно и игнорируется: платформа сама запускает nginx. Для остальных рантаймов на отдельной виртуальной машине используются версионированные команды:node20*—node,python311*—python3.11,php83*—php8.3. Командыpythonна такой машине нет, аpython3остаётся системным интерпретатором Ubuntu 24.04 — это версия 3.12. Командаpython3.11работает и в галактике, поэтому такойstartподходит обеим моделям размещения. Пакетный менеджерpipрантайм привязывает к 3.11, поэтомуpip installв полеinstallставит зависимости в тот же интерпретатор, который запускает приложение. - Пакет
pm2в списке рантайма — установленный на машине инструмент, а не способ запуска приложения. Рантаймыnode20и его варианты ставятpm2вместе с Node.js, но полеstartтребует команду, которая остаётся на переднем плане и сама держит слушателя. Команда видаpm2 start server.js --name app && pm2 saveзапускает демон и завершается, а вместе с её завершением платформа останавливает и сервис приложения. Правило целиком, оба исхода такой команды и то, чем они различаются в результате деплоя, — Полный деплой, «Известные особенности». - Откуда
pipберёт пакеты. Платформа задаёт каталог пакетов по умолчанию — зеркало, доступное из нашего облака (самpypi.orgоттуда не отвечает: установка зависала бы и сообщала «нет подходящей версии» на существующей версии). Настройка машинная, поэтому её видит и авто-установкаrequirements.txt, и ваша команда в полеinstall, иpip, запущенный вручную черезexec. Ваш выбор сильнее нашего:--index-urlвrequirements.txtили в команде установки перебивает значение по умолчанию. ПеременнаяPIP_INDEX_URLиз поляenvна сборку в галактике НЕ влияет — окружение приезжает в контейнер при запуске, а зависимости ставятся раньше, на сборке образа; на отдельной виртуальной машине она работает. Если вам важна неизменность пакетов — используйте--require-hashesс зафиксированными хешами: это единственный механизм, который защищает от подмены на стороне каталога. Менеджерыpoetryиuvнашу настройку не читают — задавайте им индекс их собственными средствами. - Откуда npm и apt берут пакеты в Galaxy. Перед сборкой платформа задаёт машинные конфигурации npm и Debian, поэтому их видят авто-установка и команда
install;envдеплоя на эти шаги не влияет. Свой registry в команде npm или свои Debian sources сильнее значения по умолчанию. - RAG-рантаймы (
node20-rag,python311-rag) — готовая среда для схемы RAG (retrieval-augmented generation — ответ LLM с обогащением контекстом из внешних источников): PostgreSQL с расширением pgvector для векторных представлений и Redis для кэша. Сразу после установки можно подключать LlamaIndex / LangChain. - Nginx в
static,php83иphp83-mysql. На отдельной виртуальной машине рантайм устанавливает пакет до остановки прежнего приложения, но не запускает системныйnginx.serviceи не оставляет его впервые включённым. Дляstaticпроцесс, слушающий порт, запускает управляемыйapp.service; PHP-рецепты сохраняют собственные команды запуска. static— рантайм для одностраничных приложений и статических сайтов. Передайте архив с готовой сборкой,runtime: "static"и нужныйport(по умолчанию3000);startнеобязателен и игнорируется во всех размещениях. Остальное зависит от размещения. На отдельной виртуальной машине с обычнымsystemd: trueплатформа создаёт nginx-конфиг, раздаётextractTo(по умолчанию/opt/app) и запускает nginx под непривилегированной учётной записью; document root должен быть вложенным прикладным каталогом под/optили/srv, а все пути под/var/libи/opt/dataотвергаются. Приsystemd: falseплатформа не создаёт ни nginx-конфиг, ни unit: заранее подготовленный unit должен сам слушать выбранныйport. В Galaxy файлы всегда лежат в/opt/appвнутри контейнера,extractToи standalone-настройки игнорируются, а nginx запускается фиксированной командой контейнера. Управляемые конфигурации в обоих размещениях возвращаютindex.htmlдля клиентских маршрутов, проверяют всю цепочку пути на симлинки и не отдают скрытые файлы, включая.env. При multipart-деплое полеportпо-прежнему обязательно.- Рантаймам
php83,php83-mysqlи вариантам с MySQL (node20-mysql,node20-mysql-redis,python311-mysql) нужен"hardening": "off". После установки MySQL пускает по локальному сокету только администратора, а PHP-FPM работает отдельным системным сервисом — под непривилегированной учётной записью приложение не подключится к базе. Платформа вернёт прежний режим сама, но попытка и её проверка работоспособности займут время на каждом деплое. Передайте"hardening": "off"в теле деплоя, чтобы её пропустить. Это не нужно приложениям, которые ходят в MySQL по TCP с паролем. - Комбинированные рантаймы работают только на отдельной виртуальной машине. Суффиксы
-pg/-mysql/-redis/-ragописывают шаблон отдельной машины: там рядом с языком действительно ставится PostgreSQL / MySQL / Redis. Galaxy-приложение — один контейнер языка на общем хосте, базы данных в нём не поднимаются и переменные подключения (DATABASE_URL,PG*и т.п.) не проставляются, поэтому деплой такого рантайма в галактику отклоняется: ответ400с кодомGALAXY_RUNTIME_DB_UNSUPPORTED, полемdetails.suggestedRuntime(языковая замена — напримерnode20вместоnode20-pg) и подсказкой. Какие рантаймы куда можно ставить, машинно видно в каталоге GET /v1/infra/runtimes: у каждого элемента естьsupportedPlacements—["standalone"]или["standalone","galaxy"]. Поляnameиpackagesописывают установку на отдельной машине и не меняются. Приложению в галактике нужна база — возьмите языковой рантайм и передайте строку подключения к внешней (managed) БД черезenv, либо разверните приложение на отдельной виртуальной машине с исходным рантаймом. - Один и тот же ID рантайма может означать разные патч-версии в галактике и на отдельной виртуальной машине. В галактике рантайм собирается из официального Docker-образа (
node:20-slim,python:3.11-slim,php:8.3-cli,nginx:alpine) — версия следует тегу образа. На отдельной виртуальной машине major-версия закреплена и соответствует заявленной (Node.js 20, Python 3.11, PHP 8.3, PostgreSQL 16), патч-версия следует источнику установки. Если критична точная версия — проверяйте её внутри приложения на целевой модели хоста, а не полагайтесь только на ID рантайма. estimatedSetupTime— оценочное, не гарантированное. Зависит от нагрузки apt-зеркал, скорости сети виртуальной машины, конкретной сборки образа Ubuntu. Закладывайте 2× от указанного при автоматизации.- Если нужного стека нет в списке — используйте
preStartна отдельной виртуальной машине. Сервер — чистая Ubuntu 24.04 с рут-доступом. В полеpreStartдеплоя можно выполнить любыеapt-get install, скачать бинари, настроить окружение. Результат сохраняется между деплоями (кроме директорииextractTo, которую очищаетcleanDeploy: true). Для разовых операций —POST /exec.