Files
crank/docs/production-checklist.md
T

4.5 KiB
Raw Blame History

Production checklist

Этот список помогает подготовить Crank к постоянной работе на сервере.

Перед запуском

  • Сгенерирован сильный CRANK_MASTER_KEY длиной не менее 32 bytes.
  • Зафиксирована процедура хранения и восстановления CRANK_MASTER_KEY вне product backup set; есть защищённый opaque backup_ref для rotation.
  • Сгенерирован сильный CRANK_SESSION_SECRET.
  • Сгенерирован сильный CRANK_PASSWORD_PEPPER.
  • Подготовлена локальная процедура crank-migrate admin-auth bootstrap-create; static startup-пароль администратора не используется в production.
  • Подготовлены защищённые local files для crank-migrate admin-auth recover: новый Admin password, текущий CRANK_PASSWORD_PEPPER и current master key.
  • CRANK_BASE_URL указывает на публичный HTTPS URL.
  • CRANK_ENVIRONMENT=production.
  • Если используется внешний приёмник критических ошибок, задан корректный CRANK_SENTRY_DSN; иначе значение оставлено пустым.
  • PostgreSQL доступен с host, где запускаются контейнеры.
  • Для PostgreSQL настроены бэкапы.
  • Reverse proxy проксирует /, /api/admin/ и /mcp/.
  • Для /mcp/ отключено proxy buffering.
  • Порты опубликованы только там, где нужно: 127.0.0.1 или 0.0.0.0.

После запуска

  • curl /health для admin-api возвращает ok.
  • curl /health для mcp-server возвращает ok.
  • curl /ready для admin-api и mcp-server возвращает ready.
  • UI открывается по публичному домену.
  • Создан первый admin через одноразовый bootstrap token, повтор token отклоняется, обычный login работает.
  • Demo seed создал Frankfurter-пример, если CRANK_DEMO_SEED=true.
  • Тест операции frankfurter_latest_rate проходит.
  • MCP-клиент видит инструмент через агента currency-rates.
  • admin-api и mcp-server используют один active master-key identity; запуск с неверным CRANK_MASTER_KEY проверен как fail-closed на staging.
  • Каждая непустая строка stdout admin-api и mcp-server является корректным JSON и содержит service, environment и event.
  • При включённом канале контрольная критическая ошибка появляется у приёмника без исходного текста ошибки, request, user, payload и секретов.

Безопасность

  • Не храните .env в Git.
  • Не передавайте API-ключи агентов в чатах и тикетах.
  • Выдавайте отдельный ключ на каждого MCP-клиента.
  • Удаляйте или отзывайте ключи, которые больше не используются.
  • Используйте secrets/auth profiles для токенов внешних API.
  • Не вставляйте реальные токены в статические заголовки операции.
  • Не меняйте CRANK_MASTER_KEY напрямую. Для смены ключа выполняйте crank-migrate master-key preflight → rotate → verify → promote, затем перезапускайте secret-using процессы с target key.

Эксплуатация

  • Включите мониторинг контейнеров.
  • Следите за свободным местом на диске.
  • Проверяйте размер PostgreSQL и директории artifact storage.
  • Храните полные комплекты PostgreSQL + artifact storage отдельно от application host.
  • Регулярно выполняйте контрольное восстановление через scripts/restore-community.sh на чистом стенде.
  • Перед обновлением фиксируйте текущие image tags.
  • После обновления проверяйте UI, Admin API и MCP endpoint.