Что такое Black Hole-серверы
Black Hole («чёрная дыра») — серверная концепция платформы VibeCode, при которой сервер приложения не имеет публичного IP и не виден из интернета. Вместо того чтобы принимать входящие соединения, он сам поднимает туннель изнутри и получает уникальный публичный адрес вида https://app-xxxxxxxx.vibecode.bitrix24.tech/.
Такая архитектура решает сразу несколько задач:
- Изоляция от ошибок конфигурации. Даже если разработчик или ИИ-агент настроит что-то неверно, внешней атакуемой поверхности нет.
- Быстрый деплой по ключу. Агент создаёт сервер и разворачивает приложение командой «задеплой на сервер» — без ручной настройки SSH, nginx или файервола.
- Масштабируемость. Компания может безопасно держать сотни небольших приложений, не опасаясь, что одно «нагородит» лишнего.
Внутри сервера — полноценное окружение: PostgreSQL, Node.js, Python и другие рантаймы в зависимости от потребностей приложения.
На схеме показана упрощённая модель сети: приложение на Black Hole-сервере само устанавливает исходящий туннель к платформе VibeCode, через который пользователь получает доступ по уникальному адресу, а Битрикс24 доставляет события без поллинга.
flowchart LR
USER[Пользователь] -->|app-xxxxxxxx.vibecode...| PLATFORM[Платформа VibeCode]
PLATFORM <-->|туннель| BH[Black Hole-сервер]
BH -->|REST / Vibe API| B24[Битрикс24]
B24 -->|события без поллинга| PLATFORM
PLATFORM -->|доставка событий| BH
Деплой за 2–3 минуты: 9 шагов
Деплой приложения на Black Hole-сервер занимает 2–3 минуты против 30–40 минут при ручной настройке по SSH. Весь процесс запускается по ключу: достаточно сказать агенту «задеплой на сервер».
Платформа выполняет девять шагов автоматически:
| № | Шаг | Что происходит |
|---|---|---|
| 1 | stop |
Останавливает текущую версию приложения |
| 2 | clean |
Удаляет старые файлы (cleanDeploy=true по умолчанию) |
| 3 | download |
Скачивает исходники из репозитория депонирования |
| 4 | runtime |
Подготавливает окружение (Python / Node.js и др.) |
| 5 | install |
Устанавливает зависимости |
| 6 | env |
Применяет переменные окружения |
| 7 | systemd |
Регистрирует сервис |
| 8 | start |
Запускает приложение |
| 9 | healthcheck |
Проверяет готовность сервера |
Важно про healthcheck
По умолчанию healthcheck стучится на корень (/) и ожидает HTTP 200. Если приложение отвечает 200 не на корне — укажите параметр healthPath (например, /health). Без этого деплой завершится ошибкой DEPLOY_FAILED.
Режимы работы сервера
Режим сна
Если приложением не пользуются, сервер переходит в режим сна и тарифицируется по ночному тарифу — фактически только за занимаемое место. При обращении по ссылке сервер просыпается, поднимает туннель и становится доступен (занимает пару минут). При пробуждении агент сервера обновляется автоматически.
Это делает Black Hole-серверы экономичными даже для внутренних инструментов, которые используют нерегулярно.
OPEN-режим
Если администратор разрешил, сервер можно перевести в OPEN-режим — тогда открывается прямой SSH-доступ, появляется возможность настроить собственный nginx, HTTPS и домен. Из OPEN-режима можно вернуться обратно в режим «чёрной дыры». На момент публикации переключение в OPEN временно отключено.
Тарификация
Серверы тарифицируются поминутно по дневному и ночному тарифу. По данным на момент публикации: выключенный сервер обходится приблизительно в 200–300 ₽/мес за место, микро-сервер — от 600 ₽/мес. Актуальные цифры уточняйте в личном кабинете платформы, поскольку тарифы могут меняться.
Галактики (Galaxy): уплотнение приложений
Галактика — это хост, на котором размещается сразу много Black Hole-серверов. Раньше каждое приложение требовало отдельной виртуальной машины. Теперь десятки лёгких приложений уплотняются на один общий хост автоматически.
Ключевые характеристики:
- Экономия: ~25 приложений на одном хосте ≈ стоимость одного сервера, а не двадцати пяти.
- Автоматическое размещение: деплой выполняется как обычно, платформа сама определяет, в какую галактику положить приложение.
- Галактики обычно не спят — в отличие от одиночных серверов, они держат десятки приложений в постоянной готовности.
- Прозрачность: в API галактики видны через
/v1/meс атрибутамиkind=GALAXYиkind=GALAXY_APP.
Как включить галактики
- Настройки портала → тумблер «Галактики».
- Создать галактику вручную.
- Рекомендуется выбирать СРЕДНИЙ сервер (больше оперативной памяти для уплотнения).
- Режим
bothпозволяет использовать галактики и обычные серверы одновременно.
Концепция продолжает развиваться в сторону большего уплотнения и автоматического апгрейда — функциональность находится в стадии тестирования.
Депонирование исходников: откат в один клик
При каждом успешном деплое платформа автоматически сохраняет исходники — никаких дополнительных действий не требуется. Это решает несколько типичных проблем:
- Откат к любой прошлой версии — в один клик из реестра «Исходники приложений».
- Смена устройства или агента — новый разработчик или ИИ-агент открывает сохранённую версию без потерь.
- Передача без боли — если сессия ИИ-агента прервалась или сменился исполнитель, код никуда не пропал.
История версий включает последние снимки, ежедневные и еженедельные срезы. «Опубликованные» версии хранятся бессрочно. Если код между деплоями не изменился, лишняя версия не создаётся — платформа сравнивает содержимое.
События портала без поллинга
Классическая проблема интеграций: чтобы узнать о новом событии в Битрикс24 (создана задача, изменилась сделка), приходилось опрашивать event.get по таймеру. Black Hole-серверы решают это иначе.
Платформа сама: 1. Регистрирует обработчик на стороне Битрикс24. 2. Доставляет каждое событие в приложение через туннель. 3. Повторяет доставку при сбое. 4. Будит спящий сервер, если событие пришло в период сна.
Публичный адрес для приёма вебхуков при этом не нужен — туннель заменяет его. Приложение получает событие обычным POST application/x-www-form-urlencoded на указанный appPath. Для защиты от подделки следует сверять auth[application_token] и отвечать кодом 2xx.
Требования:
- Сервер должен работать на OAuth-приложении (с application_token).
- event.bind доступен только на коммерческом тарифе портала.
Подробнее о вебхуках и подписках на события смотрите в материале Вебхуки смарт-процессов в Битрикс24.
Безопасность: ключи и защита данных
Black Hole-серверы изолируют приложения на сетевом уровне, но безопасность деплоя зависит ещё и от управления ключами. Платформа VibeCode предоставляет несколько механизмов защиты.
Режим доступа ключа
У каждого ключа есть переключатель «Режим доступа»:
| Режим | Когда использовать |
|---|---|
| Чтение и запись | Полноценные приложения с изменением данных CRM |
| Только чтение | ИИ-агенты для аналитики, внешние интеграции |
Если ИИ-агент работает с CRM только для анализа — выдавайте read-only ключ. Даже если модель решит «оптимизировать» данные и попытается удалить сделки, запрос будет заблокирован на стороне VibeCode с ошибкой WRITE_BLOCKED_READONLY_KEY.
Скомпрометированный read-only ключ не позволит ничего сломать. Это особенно актуально, поскольку изменения полей CRM не логируются на пользовательском уровне, и откат из резервной копии означает потерю свежих данных.
Дополнительные меры
- 2FA на портале — запрашивается один раз при входе с нового устройства.
- Журнал обращений по ключам — видно, кто и когда использовал ключ.
- Хранение ключей в
env— никогда не передавайте ключи в коде приложения напрямую. - Все данные и модели — в РФ.
- Companion-бот уведомляет владельца ключа об изменениях политики доступа (кто и когда изменил).
Ошибки деплоя и как их избежать
| Ошибка | Причина | Решение |
|---|---|---|
DEPLOY_FAILED |
Healthcheck не получил HTTP 200 | Укажите параметр healthPath (напр. /health) |
TRIAL_PORTAL_LIMIT |
Превышен лимит серверов на триал-портале (1/1) | Перейдите на платный тариф |
NOT_OAUTH_APP |
Подписка на события требует OAuth-приложения | Используйте ключ авторизации vibe_app_... |
BIND_FAILED |
Ошибка привязки обработчика событий | Проверьте тариф портала (нужен коммерческий) |
EVENT_BOUND_ELSEWHERE |
Событие уже привязано к другому обработчику | Удалите существующую подписку |
SERVER_NOT_READY |
Сервер ещё не готов (readiness = running + CONNECTED) | Дождитесь полного старта туннеля |
Приложение по умолчанию слушает порт 3000. Готовность сервера определяется состоянием running + CONNECTED (туннель поднят). Если деплой выполняется в автоматическом режиме, может понадобиться параметр stream=false.
Когда использовать Black Hole, а когда Галактики
Выбор между отдельным Black Hole-сервером и размещением в Галактике зависит от характеристик приложения:
Отдельный Black Hole-сервер подходит, если: - Приложение требует предсказуемых ресурсов (RAM, CPU). - Нужен OPEN-режим с SSH и собственным доменом. - Приложение работает постоянно и нагружено.
Галактика подходит, если: - Приложений много (десятки), и большинство используют редко. - Нужна максимальная экономия на хостинге. - Приложения лёгкие (небольшие дашборды, утилиты, боты). - Хочется единой управляемой среды без администрирования каждой VM.
Для крупных внедрений Битрикс24 — например, при автоматизации согласования договоров или построении сложных воронок с несколькими вспомогательными приложениями — Галактики позволяют держать весь инструментарий без значительных затрат на инфраструктуру.
АС Проект поможет с внедрением VibeCode
АС Проект — Платиновый партнёр Битрикс24. Мы помогаем ИТ-командам и интеграторам настраивать инфраструктуру VibeCode, разворачивать приложения на Black Hole-серверах и Галактиках, а также встраивать ИИ-инструменты в рабочие процессы на Битрикс24. Если вы планируете внедрить вайбкодинг в своей компании — свяжитесь с нами.