# Настройки окружения Crank настраивается через переменные окружения. Один и тот же набор переменных используется при запуске из исходников и при запуске готовых Docker-образов. ## PostgreSQL Обязательные параметры: - `POSTGRES_HOST` - `POSTGRES_PORT` - `POSTGRES_DB` - `POSTGRES_USER` - `POSTGRES_PASSWORD` Параметры пула соединений: - `POSTGRES_MAX_CONNECTIONS`, по умолчанию `20`; - `POSTGRES_MIN_CONNECTIONS`, по умолчанию `2`; - `POSTGRES_ACQUIRE_TIMEOUT_MS`, по умолчанию `5000`; - `POSTGRES_IDLE_TIMEOUT_MS`, по умолчанию `600000`; - `POSTGRES_MAX_LIFETIME_MS`, по умолчанию `1800000`. Если используется PgBouncer, укажите его адрес в `POSTGRES_HOST` и порт в `POSTGRES_PORT`. ## HTTP-сервисы - `CRANK_ADMIN_BIND` - адрес `admin-api`, например `0.0.0.0:3001`. - `CRANK_MCP_BIND` - адрес `mcp-server`, например `0.0.0.0:3002`. - `CRANK_PUBLISH_BIND` - адрес публикации портов в Docker Compose. - `CRANK_BASE_URL` - публичный URL веб-интерфейса. Для сервера за reverse proxy обычно подходит: ```env CRANK_PUBLISH_BIND=127.0.0.1 ``` Если reverse proxy работает на другом host: ```env CRANK_PUBLISH_BIND=0.0.0.0 ``` ## Авторизация администратора - `CRANK_SESSION_SECRET` - ключ подписи браузерных сессий. - `CRANK_PASSWORD_PEPPER` - дополнительный секрет для хэширования паролей. - `CRANK_SESSION_TTL_HOURS` - срок жизни сессии в часах. - `CRANK_BOOTSTRAP_ADMIN_EMAIL` - email первого пользователя. - `CRANK_BOOTSTRAP_ADMIN_PASSWORD` - пароль первого пользователя. - `CRANK_BOOTSTRAP_ADMIN_DISPLAY_NAME` - отображаемое имя первого пользователя. Первый пользователь создается или обновляется при старте `admin-api`. ## Шифрование секретов - `CRANK_MASTER_KEY` - ключ шифрования сохраненных секретов. Этот ключ нужен `admin-api` и `mcp-server`. Если изменить ключ без миграции данных, ранее сохраненные секреты нельзя будет расшифровать. ## Демо-данные - `CRANK_DEMO_SEED=true` создает пример Frankfurter при старте. - `CRANK_DEMO_SEED=false` отключает demo seed. Demo seed идемпотентный: повторный старт не создает дубликаты. В стандартном примере создаются upstream `Frankfurter`, операция `frankfurter_latest_rate`, агент `currency-rates` и пример API-ключа. ## MCP - `CRANK_MCP_REFRESH_MS` - как часто `mcp-server` обновляет опубликованный каталог инструментов. - `CRANK_MCP_RATE_LIMIT_RPS` - лимит запросов в секунду. - `CRANK_MCP_RATE_LIMIT_BURST` - допустимый короткий всплеск запросов. ## Admin API - `CRANK_ADMIN_RATE_LIMIT_RPS` - лимит запросов в секунду. - `CRANK_ADMIN_RATE_LIMIT_BURST` - допустимый короткий всплеск запросов. ## Runtime limits - `CRANK_RUNTIME_MAX_CONCURRENT_UNARY` - `CRANK_RUNTIME_MAX_CONCURRENT_WINDOW` - `CRANK_RUNTIME_MAX_CONCURRENT_SESSIONS` - `CRANK_RUNTIME_MAX_CONCURRENT_JOBS` Эти настройки ограничивают параллельное выполнение операций и служебных задач. ## Кэш По умолчанию Crank работает без внешнего кэша: ```env CRANK_CACHE_BACKEND=memory ``` Для Valkey или Redis: ```env CRANK_CACHE_BACKEND=valkey CRANK_CACHE_URL=redis://valkey:6379/0 CRANK_CACHE_DEFAULT_TTL_MS=60000 ``` Внешний кэш используется для служебного краткоживущего состояния: rate limiting, replay guard и опубликованные каталоги MCP-инструментов. ## Логи - `CRANK_LOG_LEVEL` - уровень логирования, например `info`, `debug`, `warn`. Пример: ```env CRANK_LOG_LEVEL=info ```