Развёртывание on-premise
Актуально для: SimpleTwo 0.9.x · Проверено: 25.08.2026
К концу этой статьи у вас работает контур, в котором сотрудник входит по корпоративной учётной записи, переписывается, звонит, проводит встречу с внешним участником по ссылке и ходит в корпоративную сеть через защищённый туннель. Порядок шагов не произвольный: каждый следующий сервис настраивается на предыдущий, и часть шагов от казывается выполняться, если предыдущий не готов.
Что в статье не разбирается: облачная поставка, изолированный контур без доступа в интернет, телефония и запись конференций — они опциональны и вынесены в отдельные статьи.
Руками ставится один сервис — координатор. Всё остальное (базу, чат, календарь, SFU, TURN, VPN-узлы) координатор ставит сам: вы даёте ему SSH-доступ к хосту и выбираете роль, он копирует туда бинарник, пишет конфиг и systemd-юнит и запускает сервис. Бинарники всех ролей и Xray уже лежат внутри образа координатора — отдельно ничего скачивать не нужно.
1. Что вы разв орачиваете
Одна приватная сеть, и все правила доступа в ней записаны явно. Хосты стоят в общей приватной сети, а между ними — только правила, которые пишет сама плоскость управления:
- база принимает только два хоста —
messagingиcalendar, каждый как/32вpg_hba; - шина принимает только тех, кто на неё ходит — узлы
sfu,mediationиrecorder, — правилом фаервола на своём хосте плюс пароль.
Оба правила применяются заново на каждом опросе состояния, поэтому ни одно из них не приходится помнить и поддерживать руками.
интернет
│
┌─────── ───────┬─────────────┼──────────────┬───────────────┐
│ │ │ │ │
координатор messaging sfu ×N turn VPN-узлы
(80/443) chat.s2.<домен> calls.s2.<домен> 3478 + (gateway)
│ │ │ 49152–65535 по IP, 443/tcp
└──────────────┴─────────────┴──────────────┴───────────────┘
одна приватная сеть 10.x.x.x
│
┌───────────────┼────────────────┐
postgres calendar redis
только /32 хостов своя база на только адреса
messaging и calendar том же postgres тех, кто ходит на шину
| Роль | Публично | В приватной сети | Зачем |
|---|---|---|---|
| координатор | да, 80 и 443 | да | плоскость управления: каталог и вход, политики, реестр узлов, админка, выпуск сертификатов, установка остальных ролей |
postgres | нет | да | база чата и календаря; снаружи не доступна, а внутри принимает только хосты messaging и calendar — каждый как /32 в pg_hba |
messaging | да | да | чат, треды, файлы, сигналинг звонков; продуктовый сервер |
calendar | да | да | календари, ICS-подписки, CalDAV. Публичен потому, что читатели — не наш клиент: Outlook обновляет подписку, CalDAV-клиент опрашивает. Держит свою базу на том же postgres |
s3 | нет | да | объектное хранилище: вложения, аватары и записи встреч. Объект здесь это обычный файл, поэтому резервная копия делается средствами файловой системы. Принимает только хосты messaging и recorder, каждый как /32 на порту 9000. Роль необязательная: без неё вложения лежат на дис ке messaging — один хост, одна резервная копия и никакой второй реплики. Вместо роли можно подключить хранилище организации |
redis | нет | да | шина координации. Нужна со второго узла sfu и обязательна для телефонии. Единственная граница — правило фаервола, поэтому на хосте шины обязателен ufw или firewalld |
sfu | да | да | медиасервер: медиа и сигналинг звонков. Пересылает потоки, не микширует |
turn | да | — | релей для клиентов за строгим NAT |
gateway | да, 443/tcp | DMZ для корпоративного выхода | VPN-узлы (VLESS+Reality), по одному на GEO |
recorder | нет | да | запись конференций (опционально) |
mediation | да | да | телефония SIP/PSTN (опционально) |
support | нет | DMZ рядом с координатором | демон бота поддержки (опционально) |
2. Что нужно заранее
Хосты и размеры на старт
Одна таблица на весь контур: что ставим, сколько ресурсов, в какой сети и чем ограничено. Числа — на старт для организации до ~150 человек (размер S в профиле нагрузки); для организаций побольше смотрите «Сколько узлов под звонки», там масштабируется только медиа.
| Роль | vCPU / RAM / диск | Сеть | Где стоит | Чем ограничена |
|---|---|---|---|---|
| координатор | 2 / 4 / 20 ГБ | 100 Мбит/с, публичный IPv4 | публичная | ничем; держит SQLite и сертификаты в томе |
messaging | 2 / 4 / 100 ГБ SSD | 100 Мбит/с, публичный IPv4 | публичная | диском, пока вложения лежат на нём: с ролью s3 или внешним хранилищем хватает 20 ГБ |
s3 | 2 / 4 / диск по медиа | 1 Гбит/с внутри контура | приватная | диском — см. ниже; роль опциональная, не нужна при внешнем хранилищ е |
sfu, каждый | 4 / 8 / 20 ГБ | 1 Гбит/с, публичный IPv4 | публичная + нога в приватную (redis) | каналом — см. ниже |
turn | 2 / 2 / 20 ГБ | 1 Гбит/с, публичный IPv4 | публичная | каналом: через него идут ~15% участников, в обе стороны |
gateway, каждый | 1 / 1 / 20 ГБ | 1 Гбит/с, публичный IPv4 | публичная | каналом |
calendar | 2 / 4 / 20 ГБ | 100 Мбит/с, публичный IPv4 | публичная | опросом, а не людьми: подписанный Outlook и CalDAV-клиент приходят по своему расписанию |
postgres | 2 / 4 / 40 ГБ SSD | 1 Гбит/с внутри контура | приватная | диском; не нужен, если подключён внешний кластер |
redis | 1 / 1 / 10 ГБ | 1 Гбит/с внутри контура | приватная | ничем; держит маршрутизацию комнат, не данные. Не нужен, если подключён внешний |
support | 2 / 4 / 20 ГБ | 100 Мбит/с внутри контура | приватная (DMZ) | памятью — см. ниже; роль опциональная |