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

Обновление и резервное копирование

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

1. Порядок обновления

Сначала координатор, потом роли. Бинарники ролей лежат внутри образа координатора: пока он не обновлён, «переустановить роль» поставит ту же версию, что стоит сейчас.

Шаг 1. Координатор — новый тег образа:

cd /opt/simpletwo
sed -i 's|:v[0-9.]*$|:v0.9.240|' .env # меняется только тег
docker compose pull && docker compose up -d
curl -fsS http://127.0.0.1/healthz
curl -fsS https://<адрес>/v1/version

Шаг 2. Роли — в консоли, Redeploy на каждом хосте. Роли можно обновлять по одной: установка идёт по тому же описанию, что и первичная, и повторный запуск ничего не ломает.

Шаг 3. Клиенты обновляются сами: macOS — по ленте обновлений, магазины — своим путём, APK — со страницы загрузок. Специально гнать парк не нужно; в консоли видно, у кого какая версия осталась.

Зелёная джоба и запущенный контейнер — не признак работающей службы

Выкат не закончен, пока служба не ответила на /healthz, а /v1/version не показал ту версию, которую вы выкатывали. Это не перестраховка: половина «загадочных» разборов начинается с того, что в проде работает прошлая версия, а смотрят на новую.

2. Откат

Тот же файл с предыдущим тегом: прошлые образы остаются в реестре.

sed -i 's|:v[0-9.]*$|:v0.9.239|' .env && docker compose up -d

Роли откатываются так же — через Redeploy после отката координатора.

Откат не восстанавливает данные. Если версия успела изменить схему базы, откат вернёт код, но не строки: это случай для восстановления из копии, а не для отката тега.

3. Что копировать

Четыре вещи, и первые две — не одна:

ЧтоГдеЧем
Том данных координаторахост координаторабаза плоскости управления, сертификаты, опубликованные сборки
Файл мастер-ключахост координатора, вне тома данныхединственное, чем открывается зашифрованная база
Базы Postgresхост postgres или внешний кластерpg_dump по расписанию
Объектное хранилище / вложенияроль s3, внешнее хранилище или диск messagingсредствами хранилища
Ключ и данные — в разные места

Копия тома данных без файла ключа не откроется. Копия тома данных вместе с ключом, лежащая в одном месте, означает, что одна украденная копия — это и данные, и ключ к ним. Поэтому ключ хранится вне каталога данных и копируется отдельно, со своим доступом. Лист восстановления, напечатанный при включении шифрования, — третий экземпляр этой же истины, и он должен лежать там, где лежат бумажные секреты организации.

4. Восстановление

Порядок обратный установке:

  1. поднять координатор той же версии, что снималась копия, и вернуть том данных;
  2. вернуть файл ключа на прежний путь (ST_KEYSTORE_PATH) — до первого запуска служб;
  3. восстановить базы Postgres;
  4. восстановить объектное хранилище;
  5. переустановить роли из консоли — они возьмут актуальное описание;
  6. проверить сценарием целиком, а не по одному /healthz: вход, сообщение на второе устройство, звонок один на один, встреча с внешним участником, туннель.
Копия на том же диске — не копия

Пока нет внешнего хранилища, минимум — ежедневная копия на другой хост и еженедельная выгрузка наружу. И проверьте восстановление один раз при запуске, а не в тот день, когда оно понадобится: невосстановленная копия — это предположение, а не резервная копия.

5. Что обновляется само

ЧтоКак
Сертификаты Let's Encryptпродлеваются автоматически; при неудаче есть пауза между попытками и кнопка «выпустить сейчас»
Встроенные списки маршрутизацииобновляются с версией продукта, пока их не отредактировали
Клиент macOSпо ленте обновлений
Пакеты ОСunattended-upgrades на хостах, где он включён

Дальше