Установка ModusBI Migration Service из дистрибутива - Публичная база знаний Modus
Выбор варианта установки
Для версии 0.5.15 доступны три независимых варианта установки. Выберите архив, соответствующий целевой системе, и выполните для него соответствующий раздел этой инструкции.
| Архив | Назначение | На целевой машине |
|---|---|---|
modus-migration-service-0.5.15-windows-x64.zip (скачать) |
Windows x64, консоль или служба | Git for Windows; для службы .NET Framework 4.6.1+ |
modus-migration-service-0.5.15-linux-x86_64.tar.gz (скачать) |
Linux x86_64 с glibc 2.36+, консоль или systemd | Git, системные CA-сертификаты; для службы systemd |
modus-migration-service-0.5.15-docker.zip (скачать) |
Готовый Linux/amd64 Docker-образ | Docker Engine/Desktop в режиме Linux containers, Compose v2 |
Python на целевой машине не требуется. Linux-архив предназначен для x86_64 с glibc 2.36 или новее. Для Alpine/musl, ARM64 и более старой glibc этот бинарник не подходит.
В каждом архиве есть README.md и .env.example. README описывает установку только выбранного варианта. Этот документ содержит полную инструкцию по разворачиванию всех трёх вариантов приложения. В Windows-архив также включены WinSW 2.12.0 и его MIT-лицензия. Исходники сервиса, рабочая БД, пароли и Git-модель для установки не нужны.
Используйте только один вариант для одного набора данных и Git-модели. Не запускайте одновременно консольный экземпляр, службу и контейнер с общей БД/моделью.
Windows: установка, запуск и остановка
Нужен Git for Windows, установленный для всех пользователей. Python не нужен. Для службы требуется .NET Framework 4.6.1+; WinSW включён в архив.
- Полностью распакуйте Windows ZIP в отдельный постоянный каталог, например
C:\ModusBI\MigrationService. - Дважды нажмите Setup.cmd. Выберите 1 — обычное приложение, 2 — Windows-служба. Для службы подтвердите системный запрос прав администратора.
- Сценарий сам проверит зависимости и порт, создаст конфигурацию со случайным токеном, рабочие каталоги и Git-модель, а также настроит права. Существующие настройки и данные сохраняются. Вводить команды PowerShell вручную не нужно.
- Сохраните показанный в окне токен входа. Он также хранится в
.envв строкеMMS_API_TOKEN. Откроется браузер с приложением.
Для следующих запусков используйте Run.cmd. Обычное приложение работает в консольном окне, остановка — Ctrl+C. Stop.cmd останавливает установленную здесь службу. Служба запускается автоматически и восстанавливается после сбоя; журналы находятся в logs.
Перед переходом из обычного режима в службу остановите консольный экземпляр. Служба устанавливается автоматически, только если приложение лежит в отдельном каталоге, а рабочие подкаталоги находятся внутри него. Если в старой конфигурации пути ведут наружу или пароли записаны прямо в .env, такую установку должен отдельно настроить администратор. Подробности и сообщения ошибок описаны в Windows README внутри архива.
Linux: первый запуск
На Debian 12/Ubuntu с glibc 2.36+ установите Git и CA-сертификаты:
sudo apt-get update
sudo apt-get install -y git ca-certificates curl
sudo useradd --system --user-group --home-dir /var/lib/modus-migration \
--create-home --shell /usr/sbin/nologin modus-migration
sudo install -d -m 0755 /opt/modus-migration
sudo install -m 0755 modus-migration-service /opt/modus-migration/
sudo install -m 0640 -o root -g modus-migration .env.example /opt/modus-migration/.env
sudo install -d -o modus-migration -g modus-migration -m 0700 \
/var/lib/modus-migration/state /var/lib/modus-migration/model-repository
sudo -u modus-migration git -C /var/lib/modus-migration/model-repository init
sudo -u modus-migration git -C /var/lib/modus-migration/model-repository \
config user.name 'ModusBI Migration'
sudo -u modus-migration git -C /var/lib/modus-migration/model-repository \
config user.email 'modusbi-migration@example.local'
sudoedit /opt/modus-migration/.env
Задайте собственный MMS_API_TOKEN. Пути в Linux-примере уже абсолютные. При существующей учётной записи повторно выполнять useradd не нужно.
Для проверки в консоли:
cd /opt/modus-migration
sudo -u modus-migration ./modus-migration-service
# В другой консоли:
curl --fail http://127.0.0.1:8080/health
Ожидается {"status":"ok","version":"0.5.15","database":"ok"}. После проверки остановите процесс Ctrl+C.
systemd
Из каталога распакованного пакета:
sudo install -m 0644 modus-migration.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now modus-migration
sudo systemctl status modus-migration --no-pager
curl --fail http://127.0.0.1:8080/health
sudo journalctl -u modus-migration -n 100 --no-pager
Управление: sudo systemctl stop|start|restart modus-migration. Изменение .env применяется после перезапуска. Для удаления регистрации: sudo systemctl disable --now modus-migration, затем удалите только /etc/systemd/system/modus-migration.service и выполните daemon-reload. Каталоги состояния, конфигурация и Git-модель при этом сохраняются.
Unit использует /opt/modus-migration и учётную запись modus-migration. Если пути или имя пользователя отличаются, исправьте unit перед установкой.
Docker: готовый образ без сборки
Распакуйте Docker ZIP в отдельный постоянный каталог. Исходный репозиторий не нужен. Интернет во время docker load и запуска не требуется.
docker load --input image.tar
cp .env.example .env
До ввода секретов ограничьте доступ к каталогу поставки. На Linux:
chmod 700 .
chmod 600 .env
mkdir -p state model-repository
chmod 700 state model-repository
В Windows вместо cp можно использовать Copy-Item. В PowerShell из нового выделенного каталога выполните:
$migrationOperatorSid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
icacls . /inheritance:r /grant:r "*${migrationOperatorSid}:(OI)(CI)F" '*S-1-5-32-544:(OI)(CI)F' '*S-1-5-18:(OI)(CI)F'
if ($LASTEXITCODE -ne 0) { throw 'Не удалось ограничить доступ к каталогу' }
Не применяйте эти команды к общим каталогам. Если у каталога уже заданы отдельные права, проверьте их заранее. Docker Desktop должен работать от учётной записи с доступом к этому каталогу. В .env задайте собственный MMS_API_TOKEN. Затем:
docker compose run --rm --no-deps --entrypoint git modus-migration init /workspace
docker compose run --rm --no-deps --entrypoint git modus-migration -C /workspace config user.name 'ModusBI Migration'
docker compose run --rm --no-deps --entrypoint git modus-migration -C /workspace config user.email 'modusbi-migration@example.local'
docker compose up -d --wait
docker compose ps
docker compose logs --tail=100 modus-migration
Git находится внутри образа. Compose создаёт каталоги state и model-repository на хосте; они сохраняются при пересоздании контейнера. Порт опубликован только на 127.0.0.1:8080. Если он занят, измените левую часть маппинга, например 127.0.0.1:18080:8080, и используйте этот порт в браузере. Правая часть остаётся 8080. Проверка: curl --fail http://127.0.0.1:8080/health. В Windows используйте Invoke-RestMethod.
Остановка: docker compose down. Не удаляйте каталоги state, model-repository и .env. Команда restart не перечитывает .env. Если вы изменили .env, выполните docker compose up -d --force-recreate --wait. Docker Engine/Desktop должен автоматически запускаться после перезагрузки хоста. Если администратор остановил контейнер вручную, restart: unless-stopped его не запустит.
Настройка сервиса после установки
- Откройте адрес сервиса и войдите с
MMS_API_TOKEN. - В разделе Порталы добавьте источник и приёмник: адрес, логин, пароль. Проверьте TLS-сертификаты и подключение.
- В разделе Проекты укажите каталог отдельного Git-репозитория модели и портал-источник. При стандартной установке этот репозиторий уже создаётся: в Windows его подготавливает
Setup.cmd, а команды для Linux и Docker приведены выше в соответствующих разделах. Если используется другой каталог, предварительно выполните в нёмgit initи предоставьте учётной записи приложения права на чтение и запись. Удалённый Git-сервер для работы сервиса не обязателен. - Используйте Перенос → Обновить с портала. Перед переносом проверьте план. Первый перенос выполните на тестовом контуре.
Пошаговая работа с объектами описана в разделе «Сервис переноса отчетов Migration Service. Руководство пользователя».
Обновление, резервное копирование и восстановление
- Дождитесь завершения всех заданий. После остановки незавершённые задания помечаются
interrupted. Проверьте журнал и состояние приёмника; перед повторным переносом заново проверьте план. -
Остановите приложение, службу или контейнер. Скопируйте перечисленные ниже файлы и каталоги целиком в отдельный защищённый каталог резервной копии, расположенный вне каталога установки:
Вариант Что сохранить Windows .env, каталогиstateиmodel-repositoryиз каталога приложения, а также все дополнительно подключённые Git-моделиLinux /opt/modus-migration/.env, весь/var/lib/modus-migrationи все Git-модели, находящиеся в других каталогахDocker .env,stateиmodel-repositoryиз каталога сcompose.yaml
В таблице указаны стандартные пути. Если в.envизмененыMMS_STATE_DIR,MMS_ENV_FILE,MMS_GIT_ROOT,MMS_MODEL_DIR,MMS_ENVIRONMENTS_DIRили каталоги томов вcompose.yaml, сохраняйте фактически настроенные файлы и каталоги. Каталогstateсохраняйте полностью: при стандартной конфигурации в нём находятсяservice.db, резервные копии заданий иportal-credentials.env. Не помещайте резервную копию внутрь заменяемого каталога приложения. Ограничьте доступ к ней так же, как к рабочей.env: копия содержит токены и учётные данные порталов. Если в вашей сборке настроена внешняя БД и установлен необходимый SQLAlchemy-драйвер, одновременно создайте её резервную копию штатными средствами СУБД. - Распакуйте новую поставку в отдельный каталог.
- Для Windows/Linux замените только основной бинарник. Не копируйте
.env.exampleповерх существующего.env. Файлы настроек службы (XML в Windows и unit в Linux) проверяйте вручную: в них могут быть указаны ваша учётная запись и пути. - Для Docker загрузите новый образ, измените тег
imageвcompose.yaml, сохраните монтирования, запуститеdocker compose up -d --wait. - Проверьте
/health, версию, вход, список проектов и журнал заданий.
Для отката остановите новый процесс и верните прежний бинарник/образ. Если версия меняла схему БД или формат модели, одного возврата бинарника недостаточно: до запуска приложения верните сохранённые .env, state и Git-модели в те же пути, из которых они были скопированы, и восстановите согласованную копию внешней БД, если она используется. Не объединяйте содержимое старого и нового state.
Типовые проблемы
| Симптом | Что проверить |
|---|---|
| Порт занят | Второй экземпляр; значение MMS_PORT или левый порт Compose |
| Служба не запускается | Журнал WinSW/journalctl; пути; учётная запись; доступ к .env, state, модели; Git в системном PATH |
Git dubious ownership |
Владельца выделенного репозитория и учётную запись процесса; не отключайте проверку глобально |
GLIBC_x.xx not found |
Эта Linux-сборка требует glibc 2.36+; используйте Docker или отдельную сборку под старую систему |
| Пароли исчезли после контейнера | Сохранность state; MMS_ENV_FILE=/data/state/portal-credentials.env |
| Нет доступа к порталу | URL, сетевую доступность, CA-сертификаты и права пользователя портала |
| 401 API/страница входа | MMS_API_TOKEN; для API — Authorization: Bearer <токен> |
По умолчанию сервис доступен только на этом компьютере через 127.0.0.1. Для доступа с других машин настройте HTTPS reverse proxy и сетевые правила. Запускайте один экземпляр сервиса для одного набора состояния и Git-модели.