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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дальше