Holkas
GitHub · релизы

Установка

Параметры запуска

Все параметры 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 принимает HTTPhttp://+: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Группа, участники которой — администраторы Holkasholkas_admins
TeamAuth__Scopes__0Области, которые Holkas выдаёт MCP-агентамmcp
TeamAuth__RequireHttpsMetadatafalse разрешает Keycloak по обычному HTTP — только для стенда за проксиtrue
TeamAuth__KeysDirectoryГде лежат сертификаты подписи и шифрования токенов; без них перезапуск обесценил бы выданные токеныkeys внутри HolkasWeb__DataPath

Журналирование

Уровень журнала приложения задаётся стандартными ключами .NET: Logging__LogLevel__Default (Information по умолчанию), Logging__LogLevel__Microsoft.AspNetCore (Warning). Подробный журнал отдельной операции включается не здесь, а галочкой «Подробный лог» при её запуске.