Справочник на конфигурацията
Бекендът се конфигурира единствено чрез променливи на средата 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_ENV | dev | dev, test или prod. При prod: JSON журнали, защитени бисквитки, а примерните тайни за разработка се отхвърлят. |
RMM_PUBLIC_URL | http://localhost:8080 | Публичният адрес на Axis, включително пътя: URL адресът, който се подава на новите агенти и конектори, и издателят (issuer) на токените за потока от събития (compose: https://$PLATFORM_DOMAIN/axis). |
RMM_PORTAL_URL | = публичния URL | URL адресът на 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_ORIGINS | http://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_BURST | 20, 60 | Ограничение на честотата на заявките към API на портала за всеки клиентски IP адрес. Не важи за агентите и конекторите. |
RMM_ENROLL_RATE_PER_MINUTE | 60 | Регистрирания на агенти и конектори за IP адрес. Увеличете го при масово поетапно пускане зад един NAT адрес. |
RMM_LOG_LEVEL | info | debug, info, warn или error. |
RMM_NODE_URL | http://<hostname>:<port of RMM_HTTP_ADDR> | Адресът, на който другите реплики на бекенда достигат тази директно (не през Caddy) за сесии на отдалечен работен плот, при които агентът и наблюдаващият са на различни реплики. Стойността по подразбиране работи в compose стека; задайте я, когато репликите не могат да разрешат имената на хостовете една на друга. Поддържа се https:// (сертификатите се проверяват спрямо системните коренни сертификати). |
База данни
| Променлива | По подразбиране | Значение |
|---|---|---|
RMM_DATABASE_URL | няма (задължителна) | URL за връзка. В продукционна среда връзката е като rmm_app. |
RMM_DATABASE_ROLE | rmm_app | Ролята, към която пулът превключва след свързване (SET ROLE), така че защитата на ниво ред (row-level security) да важи дори при свързване като собственик. Празна, когато входният акаунт вече е ролята на приложението. |
RMM_DATABASE_MAX_CONNS | 20 | Размер на пула за всеки бекенд. Поддържайте броя реплики × тази стойност под max_connections (200) минус 20. |
RMM_DATABASE_STATEMENT_TIMEOUT | 30s | Горна граница за изпълнението на всяка заявка. |
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_KEY | AES-256 ключ (точно 32 байта, base64) за съхраняваните криптирани тайни: пароли за AD, push токени, имейли в опашката. |
RMM_MASTER_KEY_OLD | Предишният главен ключ по време на ротация (само за декриптиране). |
RMM_RELEASE_SIGNING_KEY | Ed25519 ключ (base64 seed или частен ключ), който подписва изданията на агента и конектора. make release-keygen отпечатва двойка ключове. |
RMM_RELEASE_TOKEN | Bearer токен за автоматизацията на изданията (поне 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_INTERVAL | 30s | Колко често всяка реплика изтегля моментната снимка на достъпа (поне 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_BUCKET | rmm-packages | Име на кофата (bucket). |
RMM_S3_ACCESS_KEY, RMM_S3_SECRET_KEY | няма | Идентификационни данни. |
RMM_S3_USE_SSL | false | TLS към крайната точка. |
Без обектно хранилище качването на пакети и изданията не са достъпни
(storage_unavailable).
Поща
| Променлива | По подразбиране | Значение |
|---|---|---|
RMM_SMTP_HOST | няма | SMTP сървър. |
RMM_SMTP_PORT | 25 | Порт. |
RMM_SMTP_USER, RMM_SMTP_PASS | няма | Идентификационни данни. |
RMM_SMTP_FROM | rmm@localhost | Адрес на подателя. |
Axis изпраща само имейли за аларми и обобщения; поканите и нулирането на пароли са отговорност на Hub. Имейлите се поставят в опашка в базата данни и се изпращат от фонова задача, така че прекъсване на пощата ги забавя, но нищо не се губи. Докато са в опашката, съдържанието им е криптирано с главния ключ.
Агенти, пакети и срок на съхранение
| Променлива | По подразбиране | Значение |
|---|---|---|
RMM_MIN_AGENT_VERSION | няма | Агентите и конекторите, по-стари от тази версия, получават най-новото издание веднага, независимо от процента на пускане. |
RMM_AGENT_MSI_URL | няма | Фиксиран URL адрес на MSI файла на агента за инсталиране чрез AD, само когато не се използва обектно хранилище (разработка). Тогава хешът на инсталираните по този начин пакети не се проверява. |
RMM_WINGET_SOURCE_URL | публичният източник на winget | Източник на индекса за търсенето в winget в съветника за пакети; off за офлайн инсталации. |
RMM_RETENTION_SNAPSHOT_DAYS | 30 | Сурови моментни снимки на инвентаризацията. |
RMM_RETENTION_METRICS_DAYS | 90 | Метрики на устройствата (месечните дялове се изтриват). |
RMM_RETENTION_JOB_DAYS | 90 | Приключили задачи, изпълнения на скриптове и сесии на отдалечен работен плот (тенантите могат да зададат 7–730). |
RMM_RETENTION_AUDIT_DAYS | 365 | Одитен журнал (тенантите могат да зададат 30–3650). |
RMM_RETENTION_ADSYNC_RUN_DAYS | 90 | История на изпълненията на синхронизацията с AD. |
RMM_RETENTION_ALERT_DAYS | 180 | Разрешени аларми. |
RMM_RETENTION_DELETED_PACKAGE_DAYS | 7 | Файлове на изтрити пакети. |
Почистването по срок на съхранение се изпълнява ежедневно на партиди от 10 000 реда. Записите за влизане в устройствата винаги се изтриват 7 дни след изхода; този срок не може да се конфигурира.
winget
Индексът на winget се опреснява приблизително веднъж дневно (проверява се на
всеки 6 часа и при стартиране, ако е остарял). Устройствата без winget
инсталират App Installer от файловете под releases/winget/ в кофата
(.msixbundle заедно със зависимостите му .appx); качете ги веднъж.
Сървър на Entrosity Hub (PLATFORM_*)
Настройки на platform-server — услугата на Entrosity Hub (порталът за
влизане във всички продукти на Entrosity). В продукционна среда compose
задава повечето от тях от стойностите в следващия раздел.
| Променлива | По подразбиране | Значение |
|---|---|---|
PLATFORM_ENV | dev | dev, test или prod. Продукционната среда отхвърля примерните тайни за разработка и изисква публичен URL с https. |
PLATFORM_PUBLIC_URL | http://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_ROLE | platform_app | Ролята, към която пулът превключва след свързване. |
PLATFORM_DATABASE_MAX_CONNS, PLATFORM_DATABASE_STATEMENT_TIMEOUT | 10, 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_BURST | 20, 60 | Общо ограничение на API за IP адрес. |
PLATFORM_AUTH_RATE_PER_MINUTE, PLATFORM_EMAIL_RATE_PER_MINUTE | 10, 5 | Опити в минута за влизане и за другите публични крайни точки за автентикация (покани, нулиране на парола), за клиентски IP адрес и за имейл адрес; допълнителните се отхвърлят с rate_limited (429). Поне 1. |
PLATFORM_SMTP_HOST, _PORT, _USER, _PASS, _FROM | няма, 25, няма, няма, platform@localhost | Пощенски сървър за поканите и нулирането на пароли. |
PLATFORM_LOG_LEVEL | info | debug, info, warn или error. |
Настройки само за compose
| Променлива | По подразбиране | Значение |
|---|---|---|
RMM_VERSION | latest | Етикет (tag) на образа. Задава се от upgrade.sh и deploy.sh. |
WEB_HTTP_PORT, WEB_HTTPS_PORT | 80, 443 | Къде се публикуват портове 80 и 443 на Caddy; 127.0.0.1:8080 и 127.0.0.1:8443 зад съществуващ nginx (TLS). |
RMM_BACKEND_IMAGE, RMM_WEB_IMAGE | ghcr.io/entrosity/axis-backend, …/entrosity-web | Имена на образите. |
RMM_BACKEND_MEMORY | 2g | Ограничение на паметта на контейнера на бекенда. |
RMM_BACKEND_GOMEMLIMIT | 1400MiB | Целеви размер на Go heap; поддържайте го около 70 % от ограничението. |
PG_SHARED_BUFFERS, PG_EFFECTIVE_CACHE_SIZE | 1GB, 3GB | Около 25 % и 75 % от RAM паметта. |
PG_WORK_MEM, PG_MAINTENANCE_WORK_MEM, PG_MAX_CONNECTIONS | 16MB, 256MB, 200 | Настройка на PostgreSQL. |
PG_ARCHIVE_MODE, PG_ARCHIVE_COMMAND | off, /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_FROM | RMM_SMTP_FROM | Подател на имейлите на Hub (Hub използва сървъра от RMM_SMTP_*). |
PLATFORM_BACKEND_IMAGE, PLATFORM_MEMORY | ghcr.io/entrosity/hub-backend, 512m | Име на образа и ограничение на паметта на Hub. |