Преминете към основното съдържание

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

Бекендът се конфигурира единствено чрез променливи на средата RMM_* (entrosity-axis.backend/internal/config). При невалидни стойности той спира още при стартиране и извежда списък с всички открити проблеми.

  • Вложените секции (S3, SMTP, RETENTION) приемат една или две долни черти: RMM_S3_ENDPOINT = RMM_S3__ENDPOINT.
  • В продукционна среда compose извежда няколко променливи от тези в началото на deploy/.env (вижте Инсталиране).
  • При разработка make dev-backend и make migrate зареждат deploy/.env.
  • Entrosity Edge и Sphere имат свои сървъри и настройки: EDGE_* (включително EDGE_MASTER_KEY и ключовете за изданията на конектора) в Работа с Entrosity Edge, SPHERE_* в Работа с Entrosity Sphere.

Имена, TLS и HTTP​

ПроменливаПо подразбиранеЗначение
PLATFORM_DOMAIN, RMM_DOMAIN, PLATFORM_OLD_DOMAINS, RMM_FILES_DOMAIN, ACME_EMAILнямаИмена на сайтовете в Caddy и ACME акаунт (само за compose; вижте Настройки само за compose).
RMM_ENVdevdev, test или prod. При prod: JSON журнали, защитени бисквитки, а примерните тайни за разработка се отхвърлят.
RMM_PUBLIC_URLhttp://localhost:8080Публичният адрес на Axis, включително пътя: URL адресът, който се подава на новите агенти и конектори, и издателят (issuer) на токените за потока от събития (compose: https://$PLATFORM_DOMAIN/axis).
RMM_PORTAL_URL= публичния URLURL адресът на Axis в браузъра, включително пътя: https://$PLATFORM_DOMAIN/axis в compose. Връзките в имейлите за аларми започват с него. При разработка http://localhost:5175/axis (сървърът за разработка на Hub, който препраща /axis).
RMM_HTTP_ADDR:8080Слушател на API.
RMM_METRICS_ADDR:9091Вътрешен слушател за /metrics и /debug/pprof. Никога не го излагайте публично; празна стойност го изключва.
RMM_CORS_ORIGINShttp://localhost:5173Разрешени произходи (origins) на браузъра, разделени със запетая, без заместващи символи (compose: https://$PLATFORM_DOMAIN). Не е нужна, когато порталът е на същия произход.
RMM_TRUSTED_PROXIESнямаCIDR диапазони, на които е разрешено да задават X-Forwarded-For (compose: 172.30.0.0/24).
RMM_API_RATE_PER_SECOND, RMM_API_RATE_BURST20, 60Ограничение на честотата на заявките към API на портала за всеки клиентски IP адрес. Не важи за агентите и конекторите.
RMM_ENROLL_RATE_PER_MINUTE60Регистрирания на агенти и конектори за IP адрес. Увеличете го при масово поетапно пускане зад един NAT адрес.
RMM_LOG_LEVELinfodebug, info, warn или error.
RMM_NODE_URLhttp://<hostname>:<port of RMM_HTTP_ADDR>Адресът, на който другите реплики на бекенда достигат тази директно (не през Caddy) за сесии на отдалечен работен плот, при които агентът и наблюдаващият са на различни реплики. Стойността по подразбиране работи в compose стека; задайте я, когато репликите не могат да разрешат имената на хостовете една на друга. Поддържа се https:// (сертификатите се проверяват спрямо системните коренни сертификати).

База данни​

ПроменливаПо подразбиранеЗначение
RMM_DATABASE_URLняма (задължителна)URL за връзка. В продукционна среда връзката е като rmm_app.
RMM_DATABASE_ROLErmm_appРолята, към която пулът превключва след свързване (SET ROLE), така че защитата на ниво ред (row-level security) да важи дори при свързване като собственик. Празна, когато входният акаунт вече е ролята на приложението.
RMM_DATABASE_MAX_CONNS20Размер на пула за всеки бекенд. Поддържайте броя реплики × тази стойност под max_connections (200) минус 20.
RMM_DATABASE_STATEMENT_TIMEOUT30sГорна граница за изпълнението на всяка заявка.
RMM_APP_DATABASE_PASSWORDнямаИзползва се от migrate up: активира входа rmm_app с тази парола.
POSTGRES_PASSWORDнямаПарола на собственика (rmm): за миграции и резервни копия (compose).

Тайни​

ПроменливаЗначение
RMM_JWT_SECRETПодписва едноминутните токени за потока от събития (POST /auth/sse-token). Поне 32 байта (сурови или base64). Токените за достъп на потребителите идват от Entrosity Hub.
RMM_JWT_SECRET_OLDПредишната JWT тайна по време на ротация (Ротация на ключове).
RMM_MASTER_KEYAES-256 ключ (точно 32 байта, base64) за съхраняваните криптирани тайни: пароли за AD, push токени, имейли в опашката.
RMM_MASTER_KEY_OLDПредишният главен ключ по време на ротация (само за декриптиране).
RMM_RELEASE_SIGNING_KEYEd25519 ключ (base64 seed или частен ключ), който подписва изданията на агента и конектора. make release-keygen отпечатва двойка ключове.
RMM_RELEASE_TOKENBearer токен за автоматизацията на изданията (поне 32 знака). Празна стойност го изключва.

Влизане чрез Entrosity Hub​

Потребителите влизат през Entrosity Hub; Axis няма собствени пароли или сесии. Axis приема само продуктовите токени на Hub (EdDSA, аудитория rmm), проверени с публичните ключове на Hub, и пази копие на потребителите, организациите (своите тенанти) и ролите от Hub, които изтегля от вътрешния API на Hub (Архитектура). Първите три променливи са задължителни: без тях бекендът не стартира.

ПроменливаПо подразбиранеЗначение
RMM_PLATFORM_URLняма (задължителна)Публичният произход на Hub (compose: https://$PLATFORM_DOMAIN, например https://hub.entrosity.com): издателят на неговите токени и мястото, където браузърите влизат. Трябва да съвпада с PLATFORM_PUBLIC_URL на Hub. При разработка http://localhost:5175.
RMM_PLATFORM_INTERNAL_URLняма (задължителна)Вътрешният слушател на Hub (compose: http://platform:8081; при разработка http://localhost:8091), достъпван директно, никога през Caddy: ключове за подписване (/internal/v1/jwks.json) и моментни снимки на достъпа.
RMM_PLATFORM_TOKENняма (задължителна)Bearer токенът на Axis за вътрешния API на Hub (поне 32 знака; записът за rmm в PLATFORM_PRODUCT_TOKENS на Hub, в compose PLATFORM_PRODUCT_TOKEN_RMM).
RMM_PLATFORM_SYNC_INTERVAL30sКолко често всяка реплика изтегля моментната снимка на достъпа (поне 1s).
RMM_MATRIX_INTERNAL_URLпразно (без стена с екрани)Вътрешният API на Entrosity Matrix за стената с екрани (зали и правата на учителите), напр. http://matrix:8086 в мрежата на compose. Compose го задава, когато е зададен MATRIX_AXIS_TOKEN.
RMM_MATRIX_AXIS_TOKENпразноТокен (bearer) там: същата стойност като MATRIX_AXIS_TOKEN на Matrix (поне 32 знака; задължителен с RMM_MATRIX_INTERNAL_URL).
RMM_VERTEX_INTERNAL_URLпразно (без Vertex)Вътрешното API на Entrosity Vertex, напр. http://vertex:8088: Axis препраща там заявките за тайни и частите с резултати на конекторите за задачи на Vertex (Работа с Entrosity Vertex).
RMM_VERTEX_AXIS_TOKENпразноТокен (bearer) и в двете посоки между Axis и Vertex: същата стойност като VERTEX_AXIS_TOKEN на Vertex (поне 32 знака; задължителен с RMM_VERTEX_INTERNAL_URL).
RMM_INTERNAL_ADDR:8089Вътрешният слушател на Axis за Vertex (конекторите на тенанта и задачите на Vertex). Работи само докато Vertex е настроен и тогава е задължителен. Никога не го публикувайте.

Ключовете за подписване се извличат при стартиране и на всеки 10 минути, а също и (най-много веднъж в минута), когато токен посочва непознат ключ. Ако Hub е недостъпен, Axis запазва ключовете, които вече има; докато няма нито един, всеки токен се отхвърля.

Обектно хранилище​

ПроменливаПо подразбиранеЗначение
RMM_S3_ENDPOINTнямаКрайната точка (endpoint), която бекендът използва (compose: http://minio:9000).
RMM_S3_PUBLIC_ENDPOINT= крайната точкаКрайната точка в предварително подписаните URL адреси, които агентите и браузърите използват (compose: https://$RMM_FILES_DOMAIN).
RMM_S3_BUCKETrmm-packagesИме на кофата (bucket).
RMM_S3_ACCESS_KEY, RMM_S3_SECRET_KEYнямаИдентификационни данни.
RMM_S3_USE_SSLfalseTLS към крайната точка.

Без обектно хранилище качването на пакети и изданията не са достъпни (storage_unavailable).

Поща​

ПроменливаПо подразбиранеЗначение
RMM_SMTP_HOSTнямаSMTP сървър.
RMM_SMTP_PORT25Порт.
RMM_SMTP_USER, RMM_SMTP_PASSнямаИдентификационни данни.
RMM_SMTP_FROMrmm@localhostАдрес на подателя.

Axis изпраща само имейли за аларми и обобщения; поканите и нулирането на пароли са отговорност на Hub. Имейлите се поставят в опашка в базата данни и се изпращат от фонова задача, така че прекъсване на пощата ги забавя, но нищо не се губи. Докато са в опашката, съдържанието им е криптирано с главния ключ.

Агенти, пакети и срок на съхранение​

ПроменливаПо подразбиранеЗначение
RMM_MIN_AGENT_VERSIONнямаАгентите и конекторите, по-стари от тази версия, получават най-новото издание веднага, независимо от процента на пускане.
RMM_AGENT_MSI_URLнямаФиксиран URL адрес на MSI файла на агента за инсталиране чрез AD, само когато не се използва обектно хранилище (разработка). Тогава хешът на инсталираните по този начин пакети не се проверява.
RMM_WINGET_SOURCE_URLпубличният източник на wingetИзточник на индекса за търсенето в winget в съветника за пакети; off за офлайн инсталации.
RMM_RETENTION_SNAPSHOT_DAYS30Сурови моментни снимки на инвентаризацията.
RMM_RETENTION_METRICS_DAYS90Метрики на устройствата (месечните дялове се изтриват).
RMM_RETENTION_JOB_DAYS90Приключили задачи, изпълнения на скриптове и сесии на отдалечен работен плот (тенантите могат да зададат 7–730).
RMM_RETENTION_AUDIT_DAYS365Одитен журнал (тенантите могат да зададат 30–3650).
RMM_RETENTION_ADSYNC_RUN_DAYS90История на изпълненията на синхронизацията с AD.
RMM_RETENTION_ALERT_DAYS180Разрешени аларми.
RMM_RETENTION_DELETED_PACKAGE_DAYS7Файлове на изтрити пакети.

Почистването по срок на съхранение се изпълнява ежедневно на партиди от 10 000 реда. Записите за влизане в устройствата винаги се изтриват 7 дни след изхода; този срок не може да се конфигурира.

winget​

Индексът на winget се опреснява приблизително веднъж дневно (проверява се на всеки 6 часа и при стартиране, ако е остарял). Устройствата без winget инсталират App Installer от файловете под releases/winget/ в кофата (.msixbundle заедно със зависимостите му .appx); качете ги веднъж.

Сървър на Entrosity Hub (PLATFORM_*)​

Настройки на platform-server — услугата на Entrosity Hub (порталът за влизане във всички продукти на Entrosity). В продукционна среда compose задава повечето от тях от стойностите в следващия раздел.

ПроменливаПо подразбиранеЗначение
PLATFORM_ENVdevdev, test или prod. Продукционната среда отхвърля примерните тайни за разработка и изисква публичен URL с https.
PLATFORM_PUBLIC_URLhttp://localhost:5175Произходът на Hub (например https://hub.entrosity.com): издател на неговите токени (RMM_PLATFORM_URL трябва да съвпада), основа на връзките в изпратените имейли и произходът, който CSRF защитата му приема.
PLATFORM_HTTP_ADDR:8090Публичен API (/api/platform/v1), зад Caddy. Compose: :8080.
PLATFORM_INTERNAL_ADDR:8091Вътрешен API за продуктите (ключове за подписване, моментни снимки на достъпа). Никога не се маршрутизира от Caddy; трябва да се различава от HTTP адреса. Compose: :8081.
PLATFORM_METRICS_ADDR:9092Метрики за Prometheus (platform_*).
PLATFORM_DATABASE_URLняма (задължителна)URL за връзка с базата данни platform. Услугата се свързва като platform_app; migrate up — като собственика.
PLATFORM_DATABASE_ROLEplatform_appРолята, към която пулът превключва след свързване.
PLATFORM_DATABASE_MAX_CONNS, PLATFORM_DATABASE_STATEMENT_TIMEOUT10, 30sРазмер на пула и граница за изпълнение на заявка.
PLATFORM_APP_DATABASE_PASSWORDнямаИзползва се от migrate up: активира входа platform_app с тази парола.
PLATFORM_JWT_SIGNING_KEYняма (задължителна)Ed25519 ключ, който подписва всеки токен на Hub: base64 на 32-байтов seed (openssl rand -base64 32) или 64-байтов частен ключ. Публичната му половина се публикува като JWKS.
PLATFORM_JWT_SIGNING_KEY_OLDнямаПредишният ключ за подписване по време на ротация: продължава да проверява и остава в JWKS.
PLATFORM_MASTER_KEY, PLATFORM_MASTER_KEY_OLDняма (задължителна), нямаAES-256 ключове (32 байта, base64) за TOTP seed стойностите и имейлите в опашката; rotate-master-key криптира отново с новия.
PLATFORM_PRODUCT_TOKENSнямаBearer токени на продуктите за вътрешния API, във формат product:token, разделени със запетаи (например rmm:<32+ characters>).
PLATFORM_CORS_ORIGINS, PLATFORM_TRUSTED_PROXIESнямаРазрешени произходи на браузъра; проксита, чийто X-Forwarded-For е доверен.
PLATFORM_API_RATE_PER_SECOND, PLATFORM_API_RATE_BURST20, 60Общо ограничение на API за IP адрес.
PLATFORM_AUTH_RATE_PER_MINUTE, PLATFORM_EMAIL_RATE_PER_MINUTE10, 5Опити в минута за влизане и за другите публични крайни точки за автентикация (покани, нулиране на парола), за клиентски IP адрес и за имейл адрес; допълнителните се отхвърлят с rate_limited (429). Поне 1.
PLATFORM_SMTP_HOST, _PORT, _USER, _PASS, _FROMняма, 25, няма, няма, platform@localhostПощенски сървър за поканите и нулирането на пароли.
PLATFORM_LOG_LEVELinfodebug, info, warn или error.

Настройки само за compose​

ПроменливаПо подразбиранеЗначение
RMM_VERSIONlatestЕтикет (tag) на образа. Задава се от upgrade.sh и deploy.sh.
WEB_HTTP_PORT, WEB_HTTPS_PORT80, 443Къде се публикуват портове 80 и 443 на Caddy; 127.0.0.1:8080 и 127.0.0.1:8443 зад съществуващ nginx (TLS).
RMM_BACKEND_IMAGE, RMM_WEB_IMAGEghcr.io/entrosity/axis-backend, …/entrosity-webИмена на образите.
RMM_BACKEND_MEMORY2gОграничение на паметта на контейнера на бекенда.
RMM_BACKEND_GOMEMLIMIT1400MiBЦелеви размер на Go heap; поддържайте го около 70 % от ограничението.
PG_SHARED_BUFFERS, PG_EFFECTIVE_CACHE_SIZE1GB, 3GBОколо 25 % и 75 % от RAM паметта.
PG_WORK_MEM, PG_MAINTENANCE_WORK_MEM, PG_MAX_CONNECTIONS16MB, 256MB, 200Настройка на PostgreSQL.
PG_ARCHIVE_MODE, PG_ARCHIVE_COMMANDoff, /bin/trueАрхивиране на WAL за възстановяване към момент във времето (point-in-time recovery).
MINIO_ROOT_USER, MINIO_ROOT_PASSWORDнямаИдентификационни данни за MinIO (подават се и на бекенда като S3 ключове).
RMM_BACKUP_DIR, RMM_BACKUP_KEEP_DAYS./backups, 14Местоположение и срок на съхранение на резервните копия.
RMM_BACKUP_S3_ENDPOINT, _BUCKET, _ACCESS_KEY, _SECRET_KEYнямаКопие на резервните копия извън площадката.
GRAFANA_ADMIN_PASSWORDнямаАдминистратор на Grafana (compose за наблюдение).
PLATFORM_DOMAINняма (задължителна)Името на хоста на Hub, Axis (/axis) и документацията (/docs), например hub.entrosity.com; DNS трябва да сочи към хоста. Задава PLATFORM_PUBLIC_URL, PLATFORM_CORS_ORIGINS, както и RMM_PLATFORM_URL (https://$PLATFORM_DOMAIN), RMM_PUBLIC_URL и RMM_PORTAL_URL (https://$PLATFORM_DOMAIN/axis) и RMM_CORS_ORIGINS на бекенда.
RMM_DOMAINняма (задължителна)Името на хоста на Axis отпреди Hub (например manage.entrosity.com). Обслужва само API на агентите, конекторите и скриптовете, които го използват (/api/*, /manage/api/*); браузърите се пренасочват към https://$PLATFORM_DOMAIN/axis.
PLATFORM_OLD_DOMAINSнямаПо-ранни имена на хоста на Hub, разделени с интервал (например portal.entrosity.com), задавани от скрипта за преместване. Те обслужват API на Axis под /axis/api и /manage/api за устройствата, регистрирани там, и пренасочват всичко останало към същия път на PLATFORM_DOMAIN.
PLATFORM_APP_DATABASE_PASSWORD, PLATFORM_JWT_SIGNING_KEY, PLATFORM_MASTER_KEY (и _OLD)няма (задължителни, освен _OLD)Подават се на Hub, както е описано по-горе.
PLATFORM_PRODUCT_TOKEN_RMMняма (задължителна)Токенът на Axis за вътрешния API на Hub: превръща се в PLATFORM_PRODUCT_TOKENS=rmm:<token> и в RMM_PLATFORM_TOKEN на бекенда.
PLATFORM_SMTP_FROMRMM_SMTP_FROMПодател на имейлите на Hub (Hub използва сървъра от RMM_SMTP_*).
PLATFORM_BACKEND_IMAGE, PLATFORM_MEMORYghcr.io/entrosity/hub-backend, 512mИме на образа и ограничение на паметта на Hub.