Как задеплоить код, сгенерированный нейросетью

Нейросеть уверенно пишет код: за пару минут вы получаете сайт, бота или сервис, который запускается на вашем компьютере. Затык начинается там, где AI отделывается одной строкой «осталось задеплоить»: сервер, домен, переменные окружения, HTTPS. Если вы не писали этот код руками, копаться в логах и настройках Linux не хочется — и не нужно. Рассказываем по шагам, как довести сгенерированный код до живой ссылки и не наступить на типичные грабли AI-кода.

Что именно отдаёт нейросеть и чего в этом коде нет

Когда вы просите «напиши мне бота или сайт на Python», модель выдаёт рабочий, но неполный проект. Логика на месте, а дальше начинаются пропуски, которые мешают запуску:

  • Единая структура. Код часто разбросан по сообщениям в чате кусками — файл тут, функция там;
  • Список зависимостей. requirements.txt или package.json обычно отсутствует, и сервер не знает, что устанавливать;
  • Секреты в переменных окружения. Модель вставляет ключ прямо в код «для примера»;
  • Порт из окружения. Вместо этого стоит жёстко зашитый 3000 или 8000;
  • Постоянное хранилище. Если проект что-то сохраняет, надо решить, куда писать данные.

Это нормально: нейросеть решает задачу «написать логику», а не «развернуть продакшен». Всё, что ниже, — ваша часть, и она занимает куда меньше времени, чем кажется.

Шаг 1. Соберите проект в одну папку

Попросите нейросеть собрать всё в один проект с понятной структурой и одной командой запуска: «собери весь код в один проект, добавь список зависимостей и команду старта». Заодно пусть перечислит библиотеки:

fastapi==0.115.0
uvicorn==0.32.0
httpx==0.27.2

Проверьте, что каждый import из файлов попал в список, а версии зафиксированы. Для Node.js вместо этого будет package.json с блоком dependencies и полем scripts.start. Без этого списка платформа не поймёт, какие библиотеки собирать.

Шаг 2. Вынесите ключи и токены из кода

Нейросети обожают вставлять ключи прямо в код «как пример»:

API_KEY = "sk-0123456789..."
client = Client(api_key=API_KEY)

Так делать нельзя: код вы будете показывать, кому-то отдавать или заливать в Git — и ключ утечёт вместе с ним. Правильный вариант — читать значения из переменных окружения:

import os
API_KEY = os.environ["API_KEY"]
client = Client(api_key=API_KEY)

Попросите нейросеть: «вынеси все ключи и токены в переменные окружения и добавь .env в .gitignore». На платформе эти значения задаются отдельно, в разделе секретов, поэтому ни в архиве, ни в репозитории секретов не останется.

Шаг 3. Порт — только из переменной окружения

Это самая частая причина «локально работает, на сервере — нет». Сгенерированный код часто слушает жёстко зашитый порт:

app.run(host="0.0.0.0", port=3000)

Спросите у модели: «сделай так, чтобы порт читался из переменной PORT». Получится примерно так:

import os
PORT = int(os.environ.get("PORT", 8000))
app.run(host="0.0.0.0", port=PORT)

Тогда платформа сама подставит нужный порт, а приложение станет доступно по ссылке — без ручной настройки сети, reverse-proxy и сертификатов.

Шаг 4. Проверьте код перед деплоем

У AI-кода есть повторяющиеся болячки. Пройдитесь по ним вместе с той же нейросетью — фраза «проверь код на проблемы перед деплоем на сервер» заставляет модель честно найти свои же пропуски:

  • Зашитые пути. Код читает ./data.json или абсолютный путь с вашего компьютера — на сервере таких файлов нет;
  • Локальная база. SQLite-файл рядом с кодом стирается при каждом деплое: данные нужны в постоянном томе;
  • Заглушки. Остались TODO, pass или fake_data = True вместо реального вызова;
  • Версии библиотек. Голое имя пакета без версии ломает сборку при обновлении зависимостей.

Полезно просто запустить проект в чистом окружении — на другом компьютере или в свежем виртуальном окружении, где нет ваших старых библиотек.

Шаг 5. Загрузите проект и получите ссылку

Дальше — Dockbox. Загрузите проект ZIP-архивом или подключите Git-репозиторий, если нейросеть уже запушила код туда. Язык и тип проекта платформа определит сама — Python, Node.js, Go и другие: выбирать версию и способ сборки вручную не нужно.

  • Введите секреты. Панель попросит значения переменных, которые вы вынесли из кода: API_KEY, BOT_TOKEN и так далее;
  • Дождитесь сборки. Логи видны в реальном времени, а ошибки описаны прямым текстом, а не стек-трейсом;
  • Откройте ссылку. Проект поднимается в Docker-контейнере и открывается по HTTPS-адресу. Если процесс упадёт, платформа перезапустит его сама.

Сколько это стоит и как работают контейнеры

Свой VPS, systemd и nginx не нужны: контейнеры работают постоянно, без «засыпания» при простое и без лимита по времени — ссылка отвечает в момент открытия.

Starter — 990 ₽/мес. 1 vCPU, 2 GB RAM, 20 GB SSD, один проект. Первый месяц бесплатный — этого хватает, чтобы довести AI-код до рабочего вида ещё до первого платежа.

Pro — 2 490 ₽/мес. 2 vCPU, 4 GB RAM, до пяти проектов — если проектов несколько или приложению нужен запас на сборку.

Team — 4 990 ₽/мес — для команд, которым нужен запас ресурсов.

Отдельного счёта за сборки и трафик нет, цены — в рублях, тариф действует месяц и сам не списывается. Свой Dockerfile поддерживается, но не обязателен. Актуальные тарифы — на dockbox.host.

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

Можно ли задеплоить код, который написали ChatGPT или Claude?

Да. Платформе всё равно, кто автор — человек или нейросеть. Важно, чтобы проект собирался в одну папку, запускался одной командой, читал порт из переменной окружения и не тащил секреты в файлах.

Код работает локально, а после деплоя — нет. Почему?

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

Нужно ли разбираться в коде, чтобы его задеплоить?

Глубоко — нет. Достаточно собрать проект в одну папку, вынести секреты и порт в переменные окружения. Остальное — сборка, запуск, логи и автоперезапуск — работа платформы.

Безопасно ли загружать сгенерированный код, в котором остались ключи?

Ключи не должны лежать в коде вообще. Вынесите их в переменные окружения — тогда секретов не будет ни в архиве, ни в Git-репозитории, а на платформе они задаются отдельно и хранятся зашифрованными.

Что делать, если сборка упала с ошибкой?

Откройте логи — причина написана прямым текстом. Типичные ошибки: не установилась библиотека из списка зависимостей, не задана переменная окружения или проект не смог запуститься из-за неверной команды старта. Часто проще всего скопировать последнюю строку лога обратно в нейросеть и попросить исправить.