VibeOps Club / Гайды
Чек-лист продакшн-деплоя для вайбкодеров: 30 проверок перед запуском
Приложение работает на localhost, агент говорит, что всё готово. Этот чек-лист описывает то, что агент обычно не делает: секреты, доступ к данным, его собственные права, бэкапы, расходы и видимость. В большинстве разделов есть ссылка на реальный инцидент, где этот шаг пропустили.
Чтобы пройти его, не нужно быть DevOps-инженером. Большинство пунктов — это настройка, вопрос агенту или пятиминутный тест. Любой раздел можно отдать агенту как задачу, а результат проверить самому.
1. Секреты и API-ключи
- Никаких секретных ключей во фронтенде. В браузер попадают только публичные ключи (anon key Supabase, publishable key Stripe). Service role, ключи OpenAI и secret key Stripe хранятся только на сервере. Moltbook
- Секреты хранятся в переменных окружения или в хранилище секретов платформы, никогда в репозитории.
.envдобавлен в.gitignore. - Включено сканирование секретов. GitHub push protection или pre-commit хук вроде gitleaks или trufflehog.
- Утёкшие ключи перевыпущены. Если ключ хоть раз попал в коммит, скриншот или чат, выпустите новый. Удалить коммит недостаточно.
- У каждого ключа одна задача и минимум прав. Отдельные ключи для каждого окружения и сервиса, только с нужными правами. PocketOS
Подробнее: где хранить API-ключи и как проверить приложение на утечки.
2. База и доступ к данным
- RLS включён на каждой таблице (Supabase), с явными политиками на select, insert, update и delete. Lovable
- Проверка от имени анонима. Вызовите API только с публичным ключом и попробуйте прочитать данные. Ответ должен быть пустым.
- Проверка от имени «чужого» пользователя. Войдите как пользователь A и запросите записи пользователя B, подменив ID в запросе.
- Оплата, квоты и роли проверяются на сервере, а не только скрываются в интерфейсе. EnrichLead
- Бакеты хранилища приватные по умолчанию. В публичные попадают только действительно публичные файлы. Tea
3. Права агента
- У агента нет production-доступов. Изменения в прод идут через CI или через вас.
- Токены, которые видит агент, узкие: по возможности только на чтение, короткоживущие, на один проект.
- Разрушительные действия подтверждает человек. Удаление таблиц и томов, force push и миграции в проде требуют явного подтверждения. Replit
- Вы смотрите диффы, которые затрагивают авторизацию, конфиги инфраструктуры и миграции, до мержа.
Подробнее: как дать AI-агенту доступ к инфраструктуре и не потерять продакшен.
4. Окружения и бэкапы
- Dev и prod разделены: разные базы, разные ключи, разные адреса. Replit
- Автоматические бэкапы включены и хранятся там, где их нельзя удалить ключами самого приложения. PocketOS
- Восстановление проверено хотя бы раз. Пока вы ни разу не восстановились из бэкапа, неизвестно, рабочий ли он.
- Миграции базы проверяются, и вы знаете, как их откатить.
5. Лимиты расходов
- На хостинге настроены лимиты или бюджетные алерты (например, Spend Management в Vercel, spend cap в Supabase). Cara
- На AI API настроены лимиты использования и уведомления о бюджете (OpenAI, Anthropic и другие). EnrichLead
- На публичных эндпоинтах есть rate limit, особенно на тех, что вызывают платные API.
- Регистрация и формы защищены от ботов, например Cloudflare Turnstile или CAPTCHA.
- Настроен срок хранения логов. Храните то, что нужно для отладки, а остальное удаляйте по истечении срока.
6. Видимость и мониторинг
- Есть список всего, что опубликовано: домены, превью-деплои, внутренние инструменты. Внутренние инструменты закрыты логином. RedAccess
- Превью-деплои защищены или хотя бы не индексируются поисковиками.
- Ошибки и доступность мониторятся, алерты приходят в канал, который вы реально читаете.
- Есть алерты на необычные расходы и всплески неудачных входов.
- Есть одностраничный runbook: как откатиться, как перевыпустить ключи, куда писать хостингу.
7. Базовые вещи, о которых легко забыть
- HTTPS везде, HTTP редиректит на HTTPS.
- Зависимости сканируются (Dependabot,
npm auditили аналог).
Как пройти этот список вместе с агентом
Не спрашивайте агента «моё приложение безопасно?». Давайте ему по одному разделу как задачу с критериями приёмки, например: «Найди все места, где секретный ключ используется в клиентском коде. Перечисли файлы и строки. Перенеси вызовы на серверный эндпоинт. Покажи дифф». А результат проверьте сами тестами выше: доступ анонима, доступ «чужого» пользователя, восстановление из бэкапа.
Реальные случаи, когда эти проверки пропустили, разобраны в статье 8 реальных инцидентов вайбкодинга.