Хранилище и политики хранения
Актуально для: SimpleTwo 0.9.x · Проверено: 20.09.2026
1. Где лежат байты
| Что | Где по умолчанию | Чем заменяется |
|---|---|---|
| Вложения переписки | диск хоста messaging | роль s3 или внешнее S3-совместимое хранилище |
| Аватары | там же, где вложения | — |
| Записи встреч | объектное хранилище | отдельный бакет и префикс: Settings → Recording |
| База переписки и календарей | роль postgres | внешний кластер Postgres |
| Шина | роль redis | внешний Redis |
| База плоскости управления, сертификаты, сборки клиентов | том данных координатора | — |
Диск хоста messaging годится на старте и перестаёт годиться в трёх случаях: вложения не
помещаются на один диск, нужны несколько реплик службы переписки (тогда файл, записанный
одной, не виден остальным) или нужны записи встреч.
Внешние Postgres и Redis подключаются в Settings → External stores — готовыми строками подключения. Не одной административной учётной записью, из которой мы сами создадим базу: создание базы и роли требует прав, которых администратор чужого кластера не выдаёт, а мы не хотим наполовину создавать что-то на кластере, который нам не принадлежит.
redis и s3 закрываются фаерволом, а не довериемНи у того, ни у другого нет собственной аутентификации, достаточной, чтобы стоять открытыми
даже в приватной сети. Установка роли s3 на хост без фаервола отклоняется.
2. Шифрование содержимого при хранении
Включается тенантом и состоит из трёх шагов, порядок которых не случаен:
- Мастер-ключ заводится в консоли и записывается в файл вне каталога данных.
- Лист восстановления печатается до того, как ключом что-то запечатано.
- Две группы с листа вводятся обратно — только после этого шифрование включается.
Так закрыто единственное состояние, в котором система не должна оказываться: ключ, которым запечатаны строки, и ни одной копии, которую кто-то может прочитать.
| Что шифруется | Что не шифруется |
|---|---|
| тела сообщений | имена вложений |
| расшифровки встреч | метаданные: кто, когда, в какой беседе |
Поиск продолжает работать: он идёт по токенам, которые считаются отдельным ключом, а не по тексту. Ключ поиска и ключ шифрования разные намеренно — индекс по своей природе протекает (одинаковые слова дают одинаковые токены), и такая утечка не должна быть утечкой шифра.
Три свойства, о которых спрашивают:
- Старые строки остаются как есть. Включение не переписывает базу задним числом; хранилище живёт смешанным, а чтение понимает обе формы.
- Секретные чаты не при чём. Они зашифрованы клиентом, и сервер их и так не читает.
- Ключ хранится вне каталога данных — иначе резервная копия данных увозит с собой и ключ от них. Смотрите обновление и бэкап.
3. Сроки хранения
| Политика | По умолчанию | Где |
|---|---|---|
| Хранение сообщений | бессрочно | MSG_RETENTION_DAYS |
| Ревизии журнала беседы | 10 000 | MSG_CONVLOG_KEEP |
| Записи встреч | не удаляются автоматически | политика жизненного цикла вашего хранилища |
Ограничение журнала ревизий и удаление переписки — разные решения. Первое экономит место, второе выполняет требование по срокам хранения. Организация, которой нужно удалять сообщения, задаёт это явно: по умолчанию не удаляется ничего.
4. Аватары
Фотографии берутся из каталога (синхронизация из AD) либо загружаются людьми самостоятельно — это политика организации: Settings → avatar policy. Смешанный режим — обычный случай: каталог даёт фотографию по умолчанию, человек может заменить её своей, если это разрешено.
5. Сколько места нужно
≈ 0,8 ГБ на человека в год по профилю нагрузки (8 файлов в рабочий день, в среднем 400 КБ). Записи встреч считаются сверх этого и по своим правилам — подробности и таблица по размерам организации в сайзинге.
6. Что хранится на устройствах
Клиент держит свою копию: базу сообщений, поисковый индекс и кеш медиа. Два рычага, и оба — ваши:
- Глубина офлайна — сколько бесед и сколько сообщений в каждой клиент подтягивает заранее. Задаётся организацией (консоль → sync depth) и передаётся клиенту вместе с остальными настройками. Три состояния: число, явный ноль (не подгружать ничего) и молчание — тогда клиент берёт своё умолчание. Ноль и молчание различаются намеренно: администратор, который ни разу не открывал этот экран, не должен выглядеть как тот, кто выключил подгрузку.
- Потолок кеша на устройстве человек задаёт сам; он же видит, сколько занято, и может очистить медиа, не трогая переписку.
Люди с трёхстами комнат в день и команда из шести человек хотят разной глубины, поэтому это настройка организации, а не константа продукта.