Перейти к основному содержимому

Справочник по конфигурации

Бэкенд-сервисы Planeon (api, worker, gateway) полностью настраиваются через переменные окружения, все они читаются в единую структуру Config при запуске. Руководства по установке — Docker Compose, VM/systemd и Kubernetes/Helm — показывают, как они собираются в рабочий planeon.env / values.yaml — начните оттуда для первой установки. Используйте эту страницу, когда вам нужна полная картина того, что делает каждая переменная.

Эта страница исчерпывающая: она описывает каждую переменную, которую читают сервисы api, worker, gateway и web, а также переменные встроенных контейнеров PostgreSQL и guacd, используемых в руководстве по Docker Compose. Ваш кластер Proxmox VE здесь не настраивается — вы подключаете его из веб-консоли после первого входа.

Общие

ПеременнаяПо умолчаниюОбязательнаСекретОписание
APP_ENVdevelopmentНетНетМетка окружения; только информационная.
LOG_LEVELinfoНетНетПодробность логов: debug / info / warn / error.

API

ПеременнаяПо умолчаниюОбязательнаСекретОписание
API_ADDR127.0.0.1:8080НетНетАдрес, на котором слушает API; в контейнере укажите 0.0.0.0:8080.
API_SHUTDOWN_TIMEOUT10sНетНетДедлайн graceful-остановки для выполняющихся HTTP-запросов.
OPENAPI_PATHapi/openapi/openapi.yamlНетНетПуть к файлу OpenAPI, который отдаётся по GET /openapi.yaml. Поставляемые контейнерные образы переопределяют это значение зашитым в образ путём (руководство по Compose задаёт /usr/local/share/proxmox-vdi-admin/openapi.yaml) — оставьте как есть.
API_CORS_ALLOWED_ORIGINS(пусто)Да, если веб-консоль обслуживается с другого originНетСписок источников браузера через запятую, которым разрешено вызывать API.
METRICS_ADDR0.0.0.0:9090НетНетСлужебный листенер для GET /metrics, /healthz, /readyz; явно пустое значение отключает его. Общая форма настройки для процессов api и worker — см. Наблюдаемость.

OIDC / аутентификация

ПеременнаяПо умолчаниюОбязательнаСекретОписание
AUTH_OIDC_ISSUER_URL(пусто)ДаНетURL issuer вашего провайдера идентификации; защищённые маршруты API возвращают 503, пока не заданы и это значение, и audience.
AUTH_OIDC_AUDIENCE(пусто)ДаНетClient ID / audience OIDC, по которому Planeon проверяет токены.
AUTH_OIDC_GROUPS_CLAIMgroupsНетНетClaim токена, читаемый для членства в группах; поддерживает dot-path для вложенных claim'ов (например, realm_access.roles).
AUTH_OIDC_ROLES_CLAIMrolesНетНетClaim токена, читаемый для членства в ролях.
AUTH_BOOTSTRAP_ADMIN_EMAILS(пусто)Рекомендуется для первого входаНетАдрес(а) электронной почты, которым автоматически выдаётся роль platform_admin при первом входе.
AUTH_BOOTSTRAP_ADMIN_SUBJECTS(пусто)НетНетТот же bootstrap-механизм, что и выше, но по OIDC subject вместо email.
AUTH_BOOTSTRAP_OIDC_GROUP_BINDINGS(пусто)НетНетСписок bootstrap OIDC-привязок групп через запятую в формате <значение claim>=<ключ локальной группы>.

Веб-консоль (браузер)

Эти значения NEXT_PUBLIC_* настраивают браузерный OIDC-клиент веб-консоли и её endpoint API. Их читает сервис web; в поставляемом образе planeon/web они передаются при старте контейнера (если консоль игнорирует изменение, сверьтесь с release notes образа).

ПеременнаяПо умолчаниюОбязательнаСекретОписание
NEXT_PUBLIC_API_BASE_URLhttp://localhost:8080Да для продакшенаНетПубличный базовый URL API, к которому обращается браузер; укажите внешний origin вашего API.
NEXT_PUBLIC_OIDC_AUTHORITY(пусто)ДаНетURL issuer/authority OIDC для браузера; вместе с client ID определяет, настроен ли вход в консоль. Должен совпадать с AUTH_OIDC_ISSUER_URL у api.
NEXT_PUBLIC_OIDC_CLIENT_ID(пусто)ДаНетOIDC client ID приложения веб-консоли.
NEXT_PUBLIC_OIDC_SCOPEopenid profile email groupsНетНетScope'ы, запрашиваемые при входе; добавьте offline_access, если полагаетесь на тихое обновление токена.
NEXT_PUBLIC_OIDC_LOGOUT_URL(пусто)НетНетЯвный URL завершения сессии. Оставьте пустым, чтобы использовать стандартный end_session_endpoint провайдера из OIDC discovery.

База данных

ПеременнаяПо умолчаниюОбязательнаСекретОписание
DATABASE_URLpostgres://proxmox:proxmox@127.0.0.1:5432/proxmox_vdi_admin?sslmode=disableДаДаСтрока подключения к PostgreSQL; любой процесс не запускается, если это не задано.
DATABASE_MAX_CONNS10НетНетМаксимальный размер пула соединений pgx на процесс.

Встроенный контейнер PostgreSQL

Если вы запускаете встроенный контейнер postgres (как в руководстве по Docker Compose), эти переменные задают его начальную базу и суперпользователя. Их читает образ postgres, а не Planeon — держите их в синхронизации с учётными данными в DATABASE_URL. С внешним управляемым PostgreSQL эти переменные не задаются.

ПеременнаяПо умолчаниюОбязательнаСекретОписание
POSTGRES_DBplaneonДа, для встроенного контейнераНетИмя базы, создаваемой при первом старте; должно совпадать с базой в DATABASE_URL.
POSTGRES_USERplaneonДа, для встроенного контейнераНетРоль-суперпользователь, создаваемая при первом старте; должна совпадать с пользователем в DATABASE_URL.
POSTGRES_PASSWORD(пусто)Да, для встроенного контейнераДаПароль для POSTGRES_USER; должен совпадать с паролем в DATABASE_URL.

Redis

ПеременнаяПо умолчаниюОбязательнаСекретОписание
REDIS_ADDR127.0.0.1:6379ДаНетhost:port Redis; любой процесс не запускается, если это не задано.
REDIS_PASSWORD(пусто)НетДаПароль аутентификации Redis, если ваш инстанс Redis его требует.
REDIS_DB0НетНетНомер логической базы данных Redis.

Секреты в состоянии покоя

ПеременнаяПо умолчаниюОбязательнаСекретОписание
SECRETS_MASTER_KEY(пусто)Да для продакшенаДаМастер-ключ AES-конверта, шифрующий хранимые учётные данные (токены Proxmox, учётные данные domain join, токены подключения Guacamole); gateway отказывается запускаться без него, а api/worker отказываются запускаться, как только появляются какие-либо зашифрованные данные.
SECRETS_MASTER_KEY_PREVIOUS(пусто)НетДаУходящий мастер-ключ, задаётся только на время окна ротации ключа.

Gateway и guacd

ПеременнаяПо умолчаниюОбязательнаСекретОписание
GATEWAY_ADDR0.0.0.0:8081НетНетСобственный адрес прослушивания gateway.
GUACD_ADDRESSguacd:4822НетНетhost:port guacd.
GATEWAY_PUBLIC_WS_URL(пусто)Да для доступа к рабочим столам в браузереНетПубличный wss:// URL туннеля gateway, возвращаемый браузеру в ответе с токеном подключения.
GUACD_LOG_LEVELinfoНетНетУровень логирования встроенного контейнера guacd: trace, debug, info, warning или error. Это собственная настройка демона guacd, отличная от backend-переменной LOG_LEVEL. В Docker Compose это переменная интерполяции Compose — задавайте её в окружении shell или файле .env рядом с compose.yaml, а не в planeon.env.

Worker и reconciliation

ПеременнаяПо умолчаниюОбязательнаСекретОписание
WORKER_POLL_INTERVAL1mНетНетИнтервал опроса очереди заданий.
POOL_RECONCILE_INTERVAL30sНетНетКак часто выполняется reconciliation пулов.
POOL_RECONCILE_BATCH_SIZE50НетНетМаксимум пулов, обрабатываемых за один цикл.
GUEST_AGENT_WAIT_TIMEOUT10mНетНетКак долго провижининг ждёт ответа guest-агента, прежде чем провалить этот шаг.
WINDOWS_READY_WAIT_TIMEOUT30mНетНетКак долго провижининг ждёт завершения Sysprep/OOBE в Windows, прежде чем провалить этот шаг.
WORKER_LEASE_DURATION5mНетНетКак долго арендованное задание может выполняться без heartbeat, прежде чем другой worker заберёт его себе.
WORKER_SHUTDOWN_TIMEOUT30sНетНетДедлайн graceful-завершения выполняющегося задания при остановке; превышайте это значение в собственном таймауте остановки вашего супервизора процессов (stop_grace_period в Compose, TimeoutStopSec в systemd).
AUDIT_RETENTION_MONTHS0НетНетСколько последних месяцев событий аудита хранится; 0 хранит всё.
AUDIT_MAINTENANCE_INTERVAL24hНетНетКак часто worker создаёт будущие партиции аудита и удаляет истёкшие.

Лицензирование

ПеременнаяПо умолчаниюОбязательнаСекретОписание
LICENSE_REPORT_URL(пусто)НетНетЭндпоинт отчётов активации у поставщика; пустое значение полностью отключает отчёты активации (редакция Free в любом случае никогда не отправляет отчётов).
LICENSE_REPORT_INTERVAL24hНетНетПериодичность отчётов активации (с джиттером).
LICENSE_WATERMARK_INTERVAL1hНетНетКак часто worker сохраняет монотонную водяную метку истечения лицензии.
LICENSE_MANIFEST_PATH(пусто → <исполняемый файл>.manifest)НетНетПуть к подписанному манифесту сборки, используемому для обнаружения вмешательства.

О том, что регулируют эти переменные, см. Лицензирование.