Как это работает
- CMS отправляет запрос на verification server с лицензионным ключом и текущей версией
- Verification server проверяет лицензию и сравнивает версии
- Если доступно обновление — возвращает информацию о новой версии, changelog и размер файла
- При установке CMS запрашивает у verification server временную ссылку на скачивание архива из приватного GitHub-репозитория
- Архив скачивается, распаковывается, файлы обновляются, запускаются миграции и пересборка
- После успешного обновления сервер автоматически перезапускается выбранным способом (PM2, systemd или Docker)
Проверка обновлений
Откройте Админ-панель → Обновления. На странице отображается:- Текущая версия — из файла
version.jsonв корне проекта - Доступное обновление — версия, дата релиза, размер архива
- Changelog — список изменений в новой версии
Установка обновления
Нажмите «Установить обновление»
Система выполнит следующие шаги автоматически:
- Запросит временную ссылку на скачивание у verification server
- Скачает архив с новой версией
- Распакует и обновит файлы проекта
- Установит зависимости (
pnpm install --frozen-lockfile, с откатом наpnpm install) - Перегенерирует импорты модулей (
pnpm modules:generate) - Применит миграции БД (
pnpm run db:migrate) - Пересоберёт проект (
pnpm run build) - Перезапустит сервер (PM2, systemd или Docker)
Что обновляется
При установке обновления заменяются файлы в следующих директориях:| Директория/файл | Описание |
|---|---|
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
Требования
- Лицензионный ключ — переменная
LICENSE_KEYв.env. Без неё (LICENSE_KEY не задан) проверка и установка обновлений недоступны. - Способ перезапуска — для автоматического перезапуска после обновления. По умолчанию используется PM2; способ можно переопределить файлом
.segmenta-deploy.jsonв корне проекта ({ "mode": "pm2" | "systemd" | "docker" }). - Доступ в интернет — сервер должен иметь доступ к verification server и GitHub.
Устранение проблем
Версия отображается как 0.0.0
Версия отображается как 0.0.0
Значение
0.0.0 возвращается, когда файл version.json отсутствует в корне проекта или содержит некорректный JSON. Проверьте, что файл существует и его содержимое валидно. Лидирующий BOM-маркер обрабатывается автоматически, поэтому достаточно убедиться в корректности самого JSON.