# Production checklist

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

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

- Сгенерирован сильный `CRANK_MASTER_KEY`.
- Сгенерирован сильный `CRANK_SESSION_SECRET`.
- Сгенерирован сильный `CRANK_PASSWORD_PEPPER`.
- Задан надежный `CRANK_BOOTSTRAP_ADMIN_PASSWORD`.
- `CRANK_BASE_URL` указывает на публичный HTTPS URL.
- 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`.
- UI открывается по публичному домену.
- Вход под bootstrap admin работает.
- Demo seed создал Frankfurter-пример, если `CRANK_DEMO_SEED=true`.
- Тест операции `frankfurter_latest_rate` проходит.
- MCP-клиент видит инструмент через агента `currency-rates`.

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

- Не храните `.env` в Git.
- Не передавайте API-ключи агентов в чатах и тикетах.
- Выдавайте отдельный ключ на каждого MCP-клиента.
- Удаляйте или отзывайте ключи, которые больше не используются.
- Используйте secrets/auth profiles для токенов внешних API.
- Не вставляйте реальные токены в статические заголовки операции.

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

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

