Код от нейросети
Приложение из Google AI Studio: как выложить без Cloud Run
Коротко
Приложение из Google AI Studio можно выложить без Cloud Run: скачайте его ZIP-архивом или синхронизируйте с GitHub и опубликуйте на любом хостинге, который запускает Node.js. Главное — ключ Gemini API должен жить на сервере в переменной GEMINI_API_KEY, а не в коде страницы: всё, что попало во фронтенд, может прочитать любой посетитель. Внутри AI Studio ключ подставляется в серверную часть сам, а при запуске в другом месте его нужно задать в настройках хостинга. В Netrun для этого есть вкладка «Секреты», а проект загружается архивом или из GitHub.
- Режим Build в Google AI Studio создаёт веб-приложение с фронтендом на React по умолчанию и серверной частью на Node.js.
- Внутри AI Studio ключ Gemini API подставляется только в серверную часть приложения и не попадает в код, который видит браузер.
- Приложение из AI Studio можно скачать ZIP-архивом или связать с репозиторием GitHub, а при запуске вне AI Studio переменную GEMINI_API_KEY задают в настройках хостинга.
- Ключ, подставленный во фронтенд при сборке, например через define в vite.config, оказывается текстом в JS-файлах сайта и виден любому посетителю.
- Обычная публикация из AI Studio в Cloud Run требует проекта Google Cloud с включённой оплатой, а без неё, на начальном уровне Starter Tier, подходящие аккаунты могут опубликовать не больше двух приложений.
В Google AI Studio можно описать приложение словами и через минуту получить работающий прототип с Gemini внутри: чат-помощника, генератор картинок, обработчик документов. Внутри AI Studio всё работает, а дальше возникает вопрос, как выложить приложение на свой адрес. Кнопка публикации в AI Studio ведёт в Cloud Run, а это проект Google Cloud с оплатой по использованию; без привязанной оплаты подходящие аккаунты могут опубликовать не больше двух приложений, и такой путь подходит не всем.
Приложение из AI Studio — обычный проект на React и Node.js, и его можно опубликовать на любом хостинге, который умеет запускать Node.js. Подвох один, но серьёзный: ключ Gemini API. Пока приложение живёт в AI Studio, ключ спрятан на сервере, а при переезде его легко случайно отдать каждому посетителю. Ниже — как этого не допустить. Похожая история у проектов из Lovable и v0.
| Вариант | Плюсы | Минусы |
|---|---|---|
| Cloud Run прямо из AI Studio | Публикация в один клик, ключ сразу на сервере, адрес вида имя.ai.studio | Нужен проект Google Cloud с оплатой, счёт зависит от использования; без оплаты — до двух приложений и не для всех аккаунтов |
| Поделиться внутри AI Studio | Ничего не нужно настраивать, ключ не виден | Приложение живёт внутри AI Studio, без своего адреса и домена |
| Хостинг только для статики | Просто и часто бесплатно | Серверная часть не работает, а ключ во фронтенде виден всем |
| Netrun | ZIP или GitHub, Node.js-сервер работает, ключ во вкладке «Секреты», оплата российской картой | На бесплатном тарифе сайт засыпает без посетителей, свой домен — на Pro, обновление по git push не автоматическое |
| Свой VPS | Полный контроль над сервером | Node.js, HTTPS, автозапуск и обновления настраиваете сами |
Выгрузите код из AI Studio#
В режиме Build скачайте приложение ZIP-архивом или свяжите его с репозиторием GitHub: синхронизация работает в обе стороны, и правки из AI Studio потом удобно забирать. Архив пригодится, если хочется опубликовать проект прямо сейчас, GitHub — если вы будете дорабатывать приложение. Внутри обычно лежат файлы фронтенда на React, серверная часть на Node.js и package.json со списком зависимостей. Файл .env с ключом в архиве может и не оказаться — ключ всё равно придётся задать заново.
Найдите, где в коде живёт ключ#
Поищите в проекте GEMINI_API_KEY и API_KEY. Если ключ читается в серверном файле через process.env, всё в порядке: он останется на сервере. Если же запросы к Gemini отправляются прямо из компонентов React или ключ подставляется при сборке через define в vite.config, он окажется текстом в JS-файлах сайта, и его прочитает любой, кто откроет инструменты разработчика. Такое встречается в проектах, созданных до появления серверной части в AI Studio, и в коде, который правили вручную.
Перенесите запросы к Gemini на сервер#
Если ключ оказался во фронтенде, попросите саму AI Studio или любую другую нейросеть: перенеси все запросы к Gemini в серверную часть, ключ бери из process.env.GEMINI_API_KEY, а фронтенд пусть обращается к своему адресу вроде /api/generate. Получится небольшой сервер-посредник: браузер отправляет ему текст, сервер добавляет ключ и спрашивает Gemini. Этот же сервер может раздавать собранные файлы фронтенда, и тогда всё приложение — один проект.
Проверьте, как запускается сервер#
В package.json должна быть команда start, которая запускает сервер, а если фронтенд нужно собирать — команда build. Сервер должен слушать адрес 0.0.0.0 и порт из переменной PORT, а не фиксированный порт на localhost, иначе по ссылке приложение не откроется. Если сомневаетесь, загрузите папку на бесплатную проверку Netrun: она работает без регистрации и покажет, что платформа поняла про проект.
Впишите ключ в секреты и опубликуйте#
Загрузите архив или подключите репозиторий GitHub — Netrun определит Node.js и соберёт проект. На вкладке «Секреты» добавьте переменную GEMINI_API_KEY со своим ключом: там она хранится зашифрованной и попадает в переменные окружения сервера. После правки секретов запустите публикацию заново, чтобы сервер увидел ключ. Если ключ раньше хоть раз оказывался в публичном коде, создайте в AI Studio новый, а старый удалите.
Следите за расходом ключа#
Каждый запрос посетителя к Gemini идёт через ваш ключ, и лимиты или счёт тоже ваши. Для открытого приложения стоит добавить простые ограничения: не больше нескольких запросов в минуту с одного адреса, вход для тех, кто пользуется постоянно, разумная длина запроса. Расход ключа виден в Google AI Studio, загляните туда через день-два после публикации. Логи сервера в кабинете Netrun покажут, если кто-то шлёт запросы пачками.
Cloud Run — не единственный способ выложить приложение из Google AI Studio: это обычный проект на React и Node.js, и он работает на любом хостинге, который запускает Node.js. Единственное, что нельзя пропускать, — ключ Gemini API должен жить на сервере, а не в коде страницы. В Netrun проект загружается архивом или из GitHub, ключ хранится во вкладке «Секреты», а ссылка с HTTPS выдаётся сразу. На бесплатном тарифе сайт засыпает без посетителей и просыпается при открытии, а без пауз и со своим доменом он работает на Pro. Попробовать Netrun.
Частые вопросы
Можно ли выложить приложение из Google AI Studio без Cloud Run?
Да. Скачайте его ZIP-архивом или свяжите с GitHub и опубликуйте на любом хостинге, который запускает Node.js. Ключ Gemini API при этом задаётся в настройках хостинга переменной GEMINI_API_KEY. Cloud Run — лишь самый короткий путь из интерфейса AI Studio, а не обязательный.
Почему опасно держать ключ Gemini API во фронтенде?
Всё, что попало в код страницы, скачивается в браузер каждого посетителя, и ключ можно прочитать за минуту в инструментах разработчика. С чужим ключом кто угодно будет отправлять запросы за ваш счёт и выбирать ваши лимиты. Поэтому запросы к Gemini отправляет сервер, а браузер обращается только к нему.
Что делать, если ключ уже попал в опубликованный сайт?
Считайте его украденным. Создайте в Google AI Studio новый ключ, старый удалите, перенесите запросы к Gemini на сервер и впишите новый ключ в настройки хостинга. Пересоберите и опубликуйте сайт заново, чтобы в его файлах не осталось старого ключа.
Будет ли работать вход через Google, если приложение использует Firebase?
Да, Firebase остаётся у Google и работает с любого хостинга. Для входа через Firebase Authentication новый адрес сайта нужно добавить в список разрешённых доменов (Authorized domains) в консоли Firebase, иначе окно входа откажет. То же самое нужно сделать после подключения своего домена.
Почему приложение работает в AI Studio, а на хостинге пишет, что нет ключа?
Внутри AI Studio ключ подставляется автоматически, а в скачанный архив он не входит. На новом хостинге задайте переменную GEMINI_API_KEY в настройках проекта — в Netrun это вкладка «Секреты» — и опубликуйте проект заново. Имя переменной должно совпадать с тем, что читает код.
Где указать токены и другие секретные значения?
В проекте есть вкладка «Секреты» — там задаются значения из кода, например токен от BotFather. Мы храним их в зашифрованном виде: названия переменных вы видите, сами значения не показываем никому, включая вас.
Безопасны ли мои токены и секреты?
Да. Токены, ключи доступа и значения из кода хранятся в зашифрованном виде и не показываются в открытом виде.
Обновляется ли проект сам при изменениях в GitHub?
Нет, публикация новой версии — ваше решение: откройте проект и обновите его из GitHub или загрузите новый архив. Так случайный коммит не уезжает сразу к пользователям. Ссылка при обновлении остаётся прежней, а данные из постоянного хранилища сохраняются.