Как устроена платформа
Актуально для: SimpleTwo 0.9.x · Проверено: 11.09.2026
Платформа ставится целиком внутри вашего контура. Ниже — что из чего состоит и что с чем разговаривает; подробности установки роль за ролью — в развёртывании on-premise.
Три плоскости, и почему это разделение несущее
Разделение не организационное, а по требованиям к доступности: у связи, интранета и управления они разные, и смешивать их — значит держать всё по самому строгому.
| Плоскость | Службы | Как достижима | Требование к доступности |
|---|---|---|---|
| Связь | messaging, sfu, turn, recorder, calendar, mediation | напрямую по TLS; туннель не обязателен | самое высокое — она должна работать, когда туннель лежит: иначе «VPN упал, и сообщить об этом не через что» |
| Интранет | шлюзы, внутренние системы, DMZ | только через туннель | следует за туннелем; отказ шлюза — инцидент маршрутизации, а не связи |
| Управление | координатор, консоль, API узлов | туннель или SSH | самое низкое при самых высо ких правах: платформа спроектирована так, чтобы разговоры переживали её недоступность |
Службы
| Служба | За что отвечает | Замечание |
|---|---|---|
| coordinator | вход и сессии, каталог и политики, реестр узлов, встречи, административная консоль | один экземпляр по замыслу; масштабируется не он, а способность работать без него |
| messaging | разговоры и сообщения, сигналинг звонков, присутствие, боты, вложения | масштабируется горизонтально за шиной событий |
| sfu | медиа конференций | пул узлов за TLS-краем; добавление узла — это добавление ёмкости |
| turn | ретрансляция медиа там, где прямой путь закрыт | нужен в сетях со строгим NAT |
| recorder | запись встреч | файлы уезжают в ваше хранилище, а не наружу |
| calendar | календари, приглашения, ICS и CalDAV | отвечает обычным клиентам: Apple Calendar, Outlook, Thunderbird |
| mediation | телефония: SIP-транки, номера, дозвон | ставится по желанию; сегодня один узел, а не пул |
| s3 | объектное хранилище: вложения, аватары, записи встреч | необязательная роль; объект лежит обычным файлом, поэтому резервная копия и перенос делаются средствами файловой системы. Вместо роли можно подключить хранилище, которое у вас уже есть |
| gateway | VPN-узел | «глупый» туннель: правил на борту не держит |
| agent | ставит и обновляет роли на хостах | им же приезжают сертификаты и конфигурация |
Данные
Postgres — источник истины для разговоров и каталога; шина событий (redis) разносит события
между экземплярами messaging; файлы и записи лежат в объектном хранилище вашего контура.
Ни одна из трёх частей наружу не смотрит.
Хранилище берётся одним из двух способов, как и база: роль s3 внутри платформы или
внешнее S3-совместимое хранилище, которое у вас уже есть (MinIO, AWS S3, Ceph и любое
другое, говорящее на том же протоколе). Платф орма показывает в консоли, какое из них
действует сейчас. Байты файлов всегда идут через messaging, которое проверяет право на
каждый файл; ссылок напрямую в хранилище платформа не выдаёт никогда. Роль хранит объект
обычным файлом, поэтому на ZFS снимок файловой системы это и есть согласованная резервная
копия вложений, а zfs send — копия на второй площадке. Диск под объекты запрашивается
при добавлении хоста: платформа сама делает из него пул и датасет с нужными свойствами и
отказывается брать диск, на котором что-то есть.
Границы с внешними системами
| Система | Направление | Что проходит границу |
|---|---|---|
| AD / ADFS | только чтение в координатор | кто существует, группы, атрибуты; обратно платформа не пишет |
| SimpleOne | двусторонне, через messaging | связь разговора с заявкой, присутствие и звонок в форме заявки |
| Другая установка SimpleTwo | двусторонне, через messaging | сообщения по адресу имя@домен — федерация, выключена по умолчанию |
| Телефонная сеть | двусторонне, через mediation | номера и дозвон |
| Почта | — | внешнее кольцо федерации; не построено, решение записано в архитектуре |
Она показывает роли и границы, а не размеры: сколько узлов sfu и какой они мощности — вопрос
сайзинга, и он решается по числу одновременных конференций, а не по числу сотрудников.