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

Раздача клиентов и управление парком

Актуально для: SimpleTwo 0.9.x · Проверено: 19.10.2026

Клиенты раздаёт сам координатор: он же держит опубликованные сборки, отдаёт страницу загрузок и ленты обновлений. Отдельного сервера дистрибуции нет.

1. Реестр сборок​

Каждой платформе соответствует запись одного из двух видов:

ЗаписьВидЧто лежит
iOSссылкаTestFlight
AndroidссылкаGoogle Play (внутреннее тестирование)
Android (APK)файлдля устройств без Play
macOSфайлподписанная сборка
Windows, Linuxфайлслоты есть, сборок в 0.9.x нет

Файлы лежат в томе данных рядом с базой и переживают переустановку сервиса так же, как остальное состояние. Предел размера загружаемого файла — 512 МБ: всё, что больше, означает, что координатор используют как файловый сервер по ошибке.

Страница загрузок и сами файлы — публичные

Это требование, а не упущение: человек, которому нужно поставить клиент, как раз ещё не может войти. Всё, что вы сюда выложите, доступно любому, кто дотянется до координатора, — а на плоскости коммуникаций это интернет.

2. Кто публикует​

Сборку публикует пайплайн релиза отдельным токеном, а не сессией администратора: задача CI, умеющая входить администратором, умеет всё, что умеет администратор, а ей нужно заменить один файл. Токен создаётся при первом использовании и ротируется из консоли.

3. Ленты обновлений​

  • macOS — лента обновлений, которую читает встроенный обновлятор приложения.
  • Android — тот же список в формате, который понимает приложение.

Обе отдаются без аутентификации — по той же причине, что и загрузки.

4. Наблюдение за парком​

В консоли по каждому устройству видно: пользователь, платформа, версия приложения и ОС, состояние подключения, счётчик ошибок и качество туннеля по каждой локации (жив ли узел, задержка, скорость). Это то место, где «у одного не работает» отличается от «сломалось у всех», и первое, куда стоит смотреть после выката новой версии.

Ресурсы приложений​

Каждое приложение раз в несколько секунд замеряет собственный процесс — память и процессор — и раз в пять минут отправляет сводку вместе с остальной телеметрией: по чему оно было занято (простой, звонок, конференция, выгрузка, Диск, синхронизация, туннель), на экране оно было или в фоне, модель и класс устройства (форма и объём памяти), температура и расход батареи там, где система их сообщает. Другие приложения и содержимое не замеряются.

Карточка «Подключение → Клиенты → Ресурсы приложений» показывает:

  • группы — по сборке, занятию, классу устройства: память p50 / p95 / max в МБ и процессор p50 / p95 / max в процентах одного ядра (100% — одно ядро занято полностью); p50 — сколько приложение обычно берёт, p95 — устойчивый тяжёлый край;
  • регрессии между сборками — новейшая сборка против предыдущей на той же платформе и том же занятии: память выросла на 15% и больше или процессор на 25% и больше;
  • самые тяжёлые устройства — по памяти или по процессору, с моделью, сборкой и занятием.

Память сравнима внутри платформы, но не между ними: iOS и macOS сообщают след приложения, Android — резидентную память, Windows — рабочий набор.

Выключить замеры можно в «Настройки → Телеметрия клиентов» («Измерять память и процессор приложений»): приложения перестают замерять со следующим отчётом, в обоих режимах телеметрии.

Сроки хранения телеметрии​

Сколько координатор хранит присланное приложениями, задаётся там же, в «Настройки → Телеметрия клиентов → Сроки хранения»:

ЧтоПо умолчаниюМожно задать
Замеры ресурсов (сводки по пять минут, с пользователем и устройством)7 дней1–90 дней
Дневные сводки ресурсов (сравнение сборок)90 дней7–730 дней, не меньше срока замеров
Замеры ресурсов, предел строк2 млн100 тыс. – 20 млн
Диагностические события (ошибки, трассы, падения)14 дней1–90 дней
Почасовые счётчики диагностики180 дней7–730 дней, не меньше срока событий
Диагностические события, предел строк2 млн100 тыс. – 20 млн

При достижении предела строк самые старые записи уступают место новым, даже если срок ещё не вышел. Записи старше нового срока удаляются сразу при сохранении — сокращение срока не отменить. Каждое изменение попадает в журнал аудита (telemetry.retention, было и стало). Анализ «Ресурсы приложений» доступен за период не длиннее срока дневных сводок, а «самые тяжёлые устройства» — за последние дни в пределах срока замеров.

5. Настройки через MDM​

Две вещи, которые нельзя включить из приложения, и обе включаются управлением устройствами:

macOS: предварительное одобрение системного расширения. Профиль com.apple.system-extension-policy избавляет от шага «Элементы входа и расширения», который на парке машин выполнить некому. Apple принимает такой профиль только от MDM, в котором устройство зарегистрировано (или от supervised/DEP), — вручную установленная копия игнорируется. Готовый профиль лежит в репозитории продукта: docs/mdm/.

Android: «без VPN трафик не ходит». Приложение не может включить это само — ни одним параметром туннеля; так устроена платформа. Включает либо сам человек (Настройки → Сеть → VPN → шестерёнка → «Постоянная VPN» и «Блокировать соединения без VPN»), либо MDM как владелец устройства или рабочего профиля (setAlwaysOnVpnPackage с lockdownEnabled).

Проверьте на первой зарегистрированной машине

Профиль для macOS снимает шаг одобрения расширения. Помогает ли он на macOS 26, где этот шаг сломан и для корректно подписанной сборки, — не проверено. Это первое, что стоит проверить на одной машине, прежде чем обещать парку.

Дальше​