115 lines
4.5 KiB
Markdown
115 lines
4.5 KiB
Markdown
# Настройки окружения
|
|
|
|
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
|
|
```
|