Segmenta включает встроенную систему обновлений. Вы можете проверять наличие новых версий и устанавливать их прямо из админ-панели, без доступа к серверу по SSH.

Как это работает

Админ-панель → tRPC (admin.updates) → Verification Server → GitHub Releases
  1. CMS отправляет запрос на verification server с лицензионным ключом и текущей версией
  2. Verification server проверяет лицензию и сравнивает версии
  3. Если доступно обновление — возвращает информацию о новой версии, changelog и размер файла
  4. При установке CMS запрашивает у verification server временную ссылку на скачивание архива из приватного GitHub-репозитория
  5. Архив скачивается, распаковывается, файлы обновляются, запускаются миграции и пересборка
  6. После успешного обновления сервер автоматически перезапускается выбранным способом (PM2, systemd или Docker)

Проверка обновлений

Откройте Админ-панель → Обновления. На странице отображается:
  • Текущая версия — из файла version.json в корне проекта
  • Доступное обновление — версия, дата релиза, размер архива
  • Changelog — список изменений в новой версии
Нажмите Проверить, чтобы вручную запросить информацию о новой версии.

Установка обновления

1

Проверьте наличие обновления

Убедитесь, что на странице обновлений отображается доступная версия.
2

Нажмите «Установить обновление»

Система выполнит следующие шаги автоматически:
  1. Запросит временную ссылку на скачивание у verification server
  2. Скачает архив с новой версией
  3. Распакует и обновит файлы проекта
  4. Установит зависимости (pnpm install --frozen-lockfile, с откатом на pnpm install)
  5. Перегенерирует импорты модулей (pnpm modules:generate)
  6. Применит миграции БД (pnpm run db:migrate)
  7. Пересоберёт проект (pnpm run build)
  8. Перезапустит сервер (PM2, systemd или Docker)
3

Дождитесь перезапуска

После установки сервер перезапустится автоматически. Страница может быть недоступна 10–30 секунд.
После перезапуска проверьте текущую версию на странице обновлений.
Во время установки обновления сервер продолжает работать, но после завершения произойдёт автоматический перезапуск. Рекомендуется обновляться в период минимальной нагрузки.

Что обновляется

При установке обновления заменяются файлы в следующих директориях:
Директория/файлОписание
apps/Клиент (Next.js) и сервер (NestJS)
packages/Общие пакеты (database, trpc, env и др.)
modules/Модули (forum, referrals и др.)
package.jsonЗависимости корневого проекта
pnpm-workspace.yamlКонфигурация воркспейсов
version.jsonИнформация о версии
turbo.jsonКонфигурация Turborepo
tsconfig.jsonКонфигурация TypeScript
Обновление выполняется методом merge — файлы из архива копируются поверх существующих, но локальные файлы, которых нет в архиве (.env, node_modules, пользовательские конфиги), не удаляются.

Файл версии

Текущая версия хранится в version.json в корне проекта:
version.json
{
  "version": "1.0.32",
  "channel": "stable"
}
Этот файл обновляется автоматически при установке новой версии.

Требования

  • Лицензионный ключ — переменная LICENSE_KEY в .env. Без неё (LICENSE_KEY не задан) проверка и установка обновлений недоступны.
  • Способ перезапуска — для автоматического перезапуска после обновления. По умолчанию используется PM2; способ можно переопределить файлом .segmenta-deploy.json в корне проекта ({ "mode": "pm2" | "systemd" | "docker" }).
  • Доступ в интернет — сервер должен иметь доступ к verification server и GitHub.

Устранение проблем

Значение 0.0.0 возвращается, когда файл version.json отсутствует в корне проекта или содержит некорректный JSON. Проверьте, что файл существует и его содержимое валидно. Лидирующий BOM-маркер обрабатывается автоматически, поэтому достаточно убедиться в корректности самого JSON.