Установка
Параметры запуска
Все параметры Holkas Web задаются переменными окружения при старте: режим работы, пароль первого администратора, пути к данным, адрес и порт, политика хранения операций. Из интерфейса они не меняются.
Holkas настраивается при запуске и только при запуске. Параметры читаются из переменных окружения; вложенные ключи разделяются двойным подчёркиванием: HolkasWeb__Retention__Days. В Docker они передаются через -e или секцию environment, в Windows — через $env: перед запуском.
Ничего из перечисленного нельзя изменить в интерфейсе: политика запуска принадлежит тому, кто разворачивает систему, а не тому, кто ею пользуется.
Основные
| Переменная | Назначение | По умолчанию в Docker |
|---|---|---|
HolkasWeb__Mode | Режим работы: Standalone, Local или Team (см. ниже) | Standalone |
HolkasWeb__BootstrapAdminPassword | Пароль пользователя admin, который создаётся при первом старте, если в базе ещё нет пользователей. После этого переменная не читается | не задан |
HolkasWeb__DataPath | Каталог данных: файлы операций, журналы, ключи Data Protection, ключи подписи токенов | /data |
HolkasWeb__StatePath | Файл базы состояния SQLite: подключения, пользователи, история операций | /data/holkasweb.db |
ASPNETCORE_URLS | Адреса и порты, на которых Holkas принимает HTTP | http://+:8080 |
Пароль администратора не встроен в образ. Если переменная не задана при первом старте, войти будет некем — задайте её и перезапустите; для уже созданного admin она ничего не меняет, пароль меняется в интерфейсе.
В сборке для Windows значений по умолчанию из образа нет: без HolkasWeb__Mode приложение стартует в режиме Local, данные ложатся в holkas-data в каталоге запуска, адрес — http://localhost:5000. Поэтому в сценарии запуска все четыре переменные заданы явно.
Режимы работы
Standalone— для личной установки и небольшой команды. Пользователи и права хранятся в базе состояния Holkas, вход по логину и паролю, токены для CLI и агентов выдаются в интерфейсе.Local— авторизация выключена, любой открывший страницу считается администратором. Только для разработки на своей машине; в сети не запускать. Имя единственного пользователя, под которым пишется история, задаётHolkasWeb__LocalUserName(по умолчаниюlocal).Team— вход через корпоративный Keycloak, Holkas сам выдаёт OAuth-токены для MCP-агентов. Требует обратного прокси с TLS и настройки Keycloak; параметры — в разделе ниже.
Политика хранения
Завершённая операция навсегда остаётся в журнале: кто, когда, откуда куда, чем кончилось. Срок жизни получает только её груз — план, файл журнала, входные и выходные файлы. Чистка проходит при старте и затем по таймеру, пока система работает; карточка «Обслуживание» в интерфейсе показывает, что подлежит удалению, и позволяет запустить проход вручную даже при выключенной политике.
| Переменная | Назначение | По умолчанию |
|---|---|---|
HolkasWeb__Retention__Enabled | Включает автоматическую чистку. false — хранить всё (разбор инцидента, аудит) | true |
HolkasWeb__Retention__Days | Сколько дней после завершения операции живут её план, журнал и файлы | 30 |
HolkasWeb__Retention__AlwaysKeepLast | Столько последних завершённых операций сохраняют груз независимо от возраста | 20 |
HolkasWeb__Retention__OrphanUploadHours | Через сколько часов удаляются загруженные файлы, не ставшие входом ни одной операции | 24 |
HolkasWeb__Retention__SweepIntervalHours | Период между проходами чистки | 24 |
Значения за пределами разумного приводятся к границам молча: срок хранения — от 1 до 3650 дней, интервал — от 1 часа до 30 дней.
Режим Team
Читаются только при HolkasWeb__Mode=Team. Holkas выступает и клиентом Keycloak (вход людей), и собственным сервером авторизации для двери MCP.
| Переменная | Назначение | По умолчанию |
|---|---|---|
TeamAuth__Issuer | Публичный адрес этого экземпляра Holkas, как его видят браузеры и агенты: https://holkas.example.org. Обязателен | — |
TeamAuth__KeycloakAuthority | Адрес realm Keycloak, которому делегируется вход: https://auth.example.org/realms/team. Обязателен | — |
TeamAuth__KeycloakClientId | Клиент Keycloak, от имени которого Holkas выполняет вход (Authorization Code + PKCE, редирект на {Issuer}/signin-oidc). Клиенту нужен маппер групп в claim groups. Обязателен | — |
TeamAuth__KeycloakClientSecret | Секрет клиента, если он конфиденциальный | не задан — публичный клиент |
TeamAuth__GroupPrefix | В Holkas попадают только группы Keycloak с этим префиксом; пользователь без таких групп не пропускается | holkas_ |
TeamAuth__AdminGroup | Группа, участники которой — администраторы Holkas | holkas_admins |
TeamAuth__Scopes__0 | Области, которые Holkas выдаёт MCP-агентам | mcp |
TeamAuth__RequireHttpsMetadata | false разрешает Keycloak по обычному HTTP — только для стенда за прокси | true |
TeamAuth__KeysDirectory | Где лежат сертификаты подписи и шифрования токенов; без них перезапуск обесценил бы выданные токены | keys внутри HolkasWeb__DataPath |
Журналирование
Уровень журнала приложения задаётся стандартными ключами .NET: Logging__LogLevel__Default (Information по умолчанию), Logging__LogLevel__Microsoft.AspNetCore (Warning). Подробный журнал отдельной операции включается не здесь, а галочкой «Подробный лог» при её запуске.