Раздача клиентов и управление парком
Актуально для: 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, где этот шаг сломан и для корректно подписанной сборки, — не проверено. Это первое, что стоит проверить на одной машине, прежде чем обещать парку.
Дальше
- Установка приложения — инструкция для пользователя
- Сеть доступа — что клиент получает после входа