Files
Bridge-and-Join-s/deploy/astra/README.md
T
fontvielle bac55cbdfd feat(deploy): полный набор скриптов миграции на Astra Linux
Поскольку Интеграционный шлюз НРД (ИШ) официально работает только на
Astra Linux SE 1.6/1.7 (RPM-версии нет, дистрибутив только .deb для
Debian-based), мигрируем инфраструктуру с РЕД ОС на Astra. Это
заодно проверит «чистую» установку с нуля.

deploy/astra/install.sh — установщик bj-server для свежей Astra ВМ:
- проверка ОС (Astra Linux SE)
- apt-зависимости (curl, git, podman, podman-compose, postgresql-client)
- скачивание Go 1.24+ с go.dev, если нет
- системный пользователь bj + каталоги /opt/bj /var/lib/bj /var/log/bj
- git clone репо в /opt/bj/src
- go build бинарника /opt/bj/bj-server
- podman-compose up -d postgres + накат всех миграций
- systemd unit с безопасными ограничениями (NoNewPrivileges,
  ProtectSystem=strict, ReadWritePaths только нужные, PrivateTmp)
- автозапуск + проверка systemctl is-active
- финальная подсказка с URL'ами

deploy/astra/install-validata.sh — установщик Валидата CSP:
- ищет .deb пакеты в dist/validata/ или принимает путь аргументом
- если пакетов нет — печатает текст письма для запроса дистрибутива
  у НРД (soed@nsd.ru) или МБ (pki@moex.com)
- dpkg -i + apt-get install -f для зависимостей
- проверка установки в /opt/Validata*

deploy/astra/install-ish.sh — установщик ИШ:
- ищет igate_*_amd64.deb в стандартных местах (dist/ish/, ~/Downloads и т.п.)
- проверяет наличие Валидаты (предупреждает если нет)
- dpkg -i igate_*.deb
- подсказывает следующие шаги (запуск GUI, настройка БД и канала WSL)

deploy/astra/migrate-from-redos.sh — экспорт со старой РЕД ОС ВМ:
- pg_dump БД bj (через podman exec или напрямую)
- копия ~/.bj/setup.json (ищется в нескольких стандартных путях)
- последние 7 дней логов из /var/log/bj и journalctl
- meta.txt с версиями ОС/пакетов
- README.md с инструкциями восстановления на новой ВМ
- итоговый тарбол /tmp/bj-migration-YYYY-MM-DD-HHMM.tar.gz

deploy/astra/healthcheck.sh — проверка после установки:
- 8 разделов: ОС, пользователь/каталоги, systemd, HTTP, PostgreSQL,
  Валидата, ИШ, сетевые порты
- цветной вывод OK/WARN/FAIL для каждого пункта

deploy/astra/README.md — пошаговая инструкция миграции из 8 этапов:
- подготовка (Astra ВМ, доступ root, запрос Валидаты у НРД)
- экспорт со старой ВМ
- install.sh на новой ВМ
- restore БД и настроек
- healthcheck
- install-validata.sh + импорт сертификатов УЦ МБ
- install-ish.sh + настройка канала WSL
- первый тест с роботом MOEX МОСТ
- раздел «что НЕ переносится автоматически»
- раздел «откат» (старая ВМ работает до подтверждения миграции)

REPORT.md обновлён:
- общая готовность 72% → 75%
- готовность к роботу 85% → 88%
- новая строка «Установщик/мигратор на Astra Linux: 100% »
- «Установка ИШ на наш стенд» поднялась с 0% до 30%
2026-05-14 17:37:10 +03:00

140 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Миграция Bridge-and-Join-s на Astra Linux
Полный набор скриптов для **чистой установки с нуля** на свежей
Astra Linux Special Edition 1.6/1.7 ВМ и переноса данных со старой
РЕД ОС.
## Зачем мигрируем
Интеграционный шлюз НРД (ИШ) — единственный поддерживаемый канал к
сервису MOEX МОСТ — официально работает только на **Astra Linux**
(дистрибутив `igate_100.0-765_amd64.deb`). РЕД ОС в списке поддерживаемых
ОС отсутствует, RPM-версии ИШ нет. Поэтому всю инфраструктуру
переводим на Astra.
Кроме того, ИШ требует СКЗИ **«Валидата CSP»** (НЕ КриптоПро) —
этот переход тоже происходит в рамках миграции.
## Файлы в этом каталоге
| Файл | Где запускать | Назначение |
|---|---|---|
| `install.sh` | новая Astra ВМ (root) | Установка bj-server (зависимости, Go, podman, postgres, бинарник, systemd) |
| `install-validata.sh` | новая Astra ВМ (root) | Установка СКЗИ Валидата CSP + АПК Валидата Клиент L (после получения дистрибутива от НРД) |
| `install-ish.sh` | новая Astra ВМ (root) | Установка ИШ (`dpkg -i igate_*.deb`) |
| `migrate-from-redos.sh` | старая РЕД ОС ВМ | Экспорт состояния (БД, настройки, логи) в архив для переноса |
| `healthcheck.sh` | новая Astra ВМ | Проверка состояния всех компонентов после установки |
## Пошаговый план миграции
### Этап 1. Подготовка
- [ ] Поднять чистую Astra Linux SE 1.7 ВМ (рекомендую 10.10.10.23)
- [ ] Доступ root по SSH
- [ ] Прямой выход в интернет (для скачивания Go и зависимостей)
- [ ] Параллельно отправить письмо в НРД (`soed@nsd.ru`) с запросом
дистрибутива Валидаты под Linux + временной лицензии
### Этап 2. Экспорт со старой ВМ (РЕД ОС)
```bash
# на старой ВМ
ssh fontvielle@10.10.10.22
cd ~/Bridge-and-Join-s
sudo bash deploy/astra/migrate-from-redos.sh
# создаст /tmp/bj-migration-YYYY-MM-DD-HHMM.tar.gz
```
### Этап 3. Установка bj-server на новую ВМ (Astra Linux)
```bash
# на новой Astra ВМ
ssh root@10.10.10.23
# вариант А — через git
curl -sSL https://git.zetit.ru/zuevav/Bridge-and-Join-s/raw/main/deploy/astra/install.sh \
| sudo bash
# вариант Б — локально (если уже скопировал репо)
cd /opt/bj/src
sudo bash deploy/astra/install.sh
```
### Этап 4. Перенос данных
```bash
# перекинуть архив на новую ВМ
scp /tmp/bj-migration-*.tar.gz root@10.10.10.23:/tmp/
# на новой ВМ
cd /tmp
tar -xzf bj-migration-*.tar.gz
cd bj-migration-*
# восстановить БД
podman exec -i bj-postgres psql -U bj -d bj < bj.sql
# восстановить настройки
sudo cp setup.json /var/lib/bj/.bj/setup.json
sudo chown bj:bj /var/lib/bj/.bj/setup.json
sudo chmod 0600 /var/lib/bj/.bj/setup.json
sudo systemctl restart bj-server
```
### Этап 5. Проверка
```bash
sudo bash /opt/bj/src/deploy/astra/healthcheck.sh
```
Открыть в браузере: `http://10.10.10.23:8080/admin/`
### Этап 6. Установка ИШ (после получения дистрибутивов от НРД)
```bash
# 1. Валидата (когда придёт от НРД)
sudo bash deploy/astra/install-validata.sh /path/to/validata-csp.deb
# 2. Импорт сертификатов УЦ МБ через GUI Справочника Валидаты:
# - корневой сертификат УЦ МБ
# - пользовательский сертификат с приватным ключом
# - Сервис → Экспортировать в системное хранилище
# 3. Сам ИШ (дистрибутив уже скачан в dist/ish/)
sudo bash deploy/astra/install-ish.sh
# 4. Настроить канал WSL в ИШ (GUI):
# URL: https://gost.nsd.ru/onyxt3/WslService (TEST3)
# Сертификат: из системного хранилища
# БД: PostgreSQL (тот же что и bj-server)
# 5. Запустить ИШ как сервис
sudo systemctl enable --now igate
```
### Этап 7. Привязка bj-server к ИШ
В админке `http://10.10.10.23:8080/admin/setup` → «Интеграционный шлюз НРД»:
- URL ИШ: `http://localhost:8090` (REST API ИШ)
- Имя канала: тот что создали в ИШ на шаге 6
### Этап 8. Первый тест с роботом
```bash
# Через UI: /admin/setup → «Тестовый прогон сквозной заявки»
# Это отправит заявку с ReceiverCode=MC0012500000 и DocumentSeries=2001
# → робот НРД ответит «Принять все бумаги» через ~30 сек
```
## Откат
Старая РЕД ОС ВМ продолжает работать до подтверждения миграции.
Если что-то пойдёт не так — просто переключаем DNS/Nginx обратно на 10.10.10.22.
## Что НЕ переносится автоматически
| Что | Почему | Что делать |
|---|---|---|
| КриптоПро CSP | На Astra используется Валидата | Получить дистрибутив Валидаты у НРД, поставить заново |
| Сертификаты в `/var/opt/cprocsp/keys/` | Формат КриптоПро ≠ формат Валидаты | Сертификат УЦ МБ — получить заново или экспортировать с КриптоПро и импортировать в Валидата (если совместимый формат) |
| Локальные кастомизации systemd | install.sh ставит свой unit | Сравнить /etc/systemd/system/bj-server.service до/после |
## Если что-то сломалось
1. Логи bj-server: `journalctl -u bj-server -f`
2. Файл лога: `tail -f /var/log/bj/bj-server.log`
3. Логи ИШ: `journalctl -u igate -f` (если запущен как systemd)
4. Health-check: `sudo bash deploy/astra/healthcheck.sh`
5. Поддержка НРД по ИШ/Валидате: `soed@nsd.ru`, по форматам M2M: `M2MOST@nsd.ru`