Files
Bridge-and-Join-s/deploy/astra/README.md
fontvielle 6e503433d4 refactor(deploy): «одна команда — всё работает» для нового стенда
Переосмысление установщика по фидбеку: установщик должен делать чистую
установку «с нуля», а не миграцию. От пользователя требуется одна
команда и больше ничего:

    curl -sSL https://.../install.sh | sudo bash

deploy/astra/install.sh переписан:
- 9 чётких этапов с прогресс-индикатором (секунды от старта)
- Авто-определение ОС: Astra SE → официально, Astra CE/Debian → warn,
  Ubuntu → ask, остальные → fail
- Авто-скачивание дистрибутива ИШ (~120 МБ) с old.nsd.ru
- Авто-установка ИШ через dpkg (но если упадёт — это OK, продолжаем)
- НЕинтерактивный режим (--yes) для CI/автоматизации
- Финальная сводка с URL'ами + список ручных шагов
- Дефолтный setup.json создаётся сразу, чтоб bj-server понимал DSN
- ProtectSystem=strict, ReadWritePaths только нужные, PrivateTmp в
  systemd unit'е

deploy/astra/migrate-from-redos.sh → переименован в import-data.sh
и стал ОПЦИОНАЛЬНЫМ (для тех кто переезжает с действующего стенда).
Главный путь — чистая установка через install.sh.

deploy/astra/README.md перетряхнут:
- TL;DR с одной командой в самом верху
- Объяснение Astra SE vs Astra CE vs Debian (платное/бесплатное)
- 5 скриптов вместо 6
- Раздел «что произойдёт после установки» — режим эмуляции, что
  осталось руками
- 10-этапный путь от чистой ВМ до прохождения теста с роботом MOEX МОСТ

REPORT.md обновлён: установщик описан как «одна команда» вместо
«миграция», % готовности не изменился (но качество улучшилось).
2026-05-14 17:42:35 +03:00

146 lines
8.7 KiB
Markdown

# Bridge-and-Join-s — установка одной командой
## TL;DR — на свежей Astra Linux / Debian / Ubuntu ВМ
```bash
curl -sSL https://git.zetit.ru/zuevav/Bridge-and-Join-s/raw/main/deploy/astra/install.sh | sudo bash
```
Через **5-10 минут** будет работать веб-админка на `http://<ip>:8080/admin/`.
Установщик сам:
- Определит ОС (Astra SE/CE, Debian, Ubuntu)
- Поставит зависимости (apt: podman, postgresql-client, git)
- Скачает и установит Go 1.24+
- Создаст системного пользователя `bj` и каталоги
- Склонирует репозиторий в `/opt/bj/src`
- Соберёт `bj-server` из исходников
- Поднимет PostgreSQL 16 в podman-контейнере и накатит миграции
- Поставит systemd unit и запустит сервис
- Скачает дистрибутив ИШ НРД (~120 МБ) и попытается установить через `dpkg`
После завершения скрипта тебе печатается понятная сводка с URL'ами и
списком того, что осталось сделать руками.
---
## Какая нужна ВМ
| Параметр | Минимум | Рекомендуется |
|---|---|---|
| ОС | Debian 11+ / Astra CE 1.8 / Astra SE 1.6+ / Ubuntu 22.04+ | **Astra Linux SE 1.7** (для прод) |
| CPU | 2 ядра | 4 ядра |
| RAM | 2 ГБ | 4 ГБ |
| Диск | 20 ГБ | 50 ГБ SSD |
| Сеть | прямой выход в интернет | + статический IP |
**Что я понимаю про лицензии Astra Linux:**
- **Astra SE** — платная (~2-5 тыс. ₽/лицензия), сертифицирована ФСТЭК/ФСБ → нужна для прода с гос-требованиями
- **Astra CE** — бесплатная, без сертификации, тот же базовый дистрибутив → можно использовать для дева и тестов, а для прода докупить SE
- **Debian 12** — полностью бесплатный, технически на 95% совместим с Astra (один и тот же базовый дистрибутив), ИШ скорее всего тоже взлетит, но НРД официально не поддерживает
---
## Скрипты в этом каталоге
| Файл | Когда запускать | Что делает |
|---|---|---|
| **`install.sh`** | сразу после поднятия ВМ | Главный скрипт. Делает всё одной командой |
| **`install-validata.sh`** | когда придёт Валидата от НРД | Установка СКЗИ Валидата CSP |
| **`install-ish.sh`** | если `install.sh` не установил ИШ автоматически | Ручная установка ИШ из локального .deb |
| **`healthcheck.sh`** | для проверки состояния | Цветной отчёт о работоспособности всех компонентов |
| **`import-data.sh`** | (опционально) если переносишь с другой ВМ | Экспорт БД и настроек со старой ВМ для импорта на новую |
---
## Что произойдёт ПОСЛЕ автоматической установки
`install.sh` дойдёт до точки, где **bj-server работает, но в режиме эмуляции** — потому что Валидата и сертификат УЦ МБ автоматически получить нельзя. В админке сверху будет жёлтая плашка «РЕЖИМ ЭМУЛЯЦИИ». Это ожидаемо.
### Что нужно сделать пользователю руками
#### 1. Запросить Валидата CSP в НРД (1 письмо)
Email: `soed@nsd.ru` или `pki@moex.com`. Текст подскажет сам скрипт `install-validata.sh` — есть шаблон. Срок ответа НРД — 1-3 дня.
Когда придёт .deb пакет:
```bash
sudo bash /opt/bj/src/deploy/astra/install-validata.sh /path/to/validata.deb
```
#### 2. Получить сертификат УЦ Московской Биржи
`https://ca.moex.com/` — оформить заявку от организации. Срок — зависит от УЦ.
#### 3. Подать заявку на тестирование в TEST3 НРД
`https://www.nsd.ru/workflow/zayavka-na-testirovanie/` — получить код депонента-тестера.
#### 4. Когда всё пришло — настроить ИШ через его GUI
По `DOC/ruk_install_ish_2025_11_10.pdf` (раздел 10):
- Указать БД PostgreSQL (DSN уже в `/var/lib/bj/.bj/setup.json`)
- Создать канал WSL с URL `https://gost.nsd.ru/onyxt3/WslService` (TEST3)
- Импортировать сертификат УЦ МБ из системного хранилища
- Запустить ИШ как сервис: `sudo systemctl enable --now igate`
#### 5. Привязать bj-server к ИШ
`http://<ip>:8080/admin/setup` → раздел «ИШ НРД»:
- URL ИШ: `http://localhost:8090` (порт REST API ИШ)
- Имя канала: то что задал в ИШ на шаге 4
После этого жёлтая плашка «РЕЖИМ ЭМУЛЯЦИИ» исчезнет — сообщения пойдут в реальный НРД.
---
## Параметры установки
`install.sh` принимает флаги:
```bash
sudo bash install.sh --bind=:8080 --skip-ish --yes
```
| Флаг | По умолчанию | Что делает |
|---|---|---|
| `--bind=:8080` | `:8080` | На каком адресе/порту слушать |
| `--branch=main` | `main` | Из какой ветки репо собирать |
| `--skip-ish` | (выкл) | Не скачивать дистрибутив ИШ (если стоят жёсткие ограничения по интернету) |
| `--yes` / `-y` | (выкл) | Не задавать вопросов, отвечать «да» автоматически |
Также через переменные окружения: `REPO_URL`, `BRANCH`, `BIND_ADDR`, `ISH_DEB_URL`, `NON_INTERACTIVE`.
---
## Если что-то сломалось
| Симптом | Решение |
|---|---|
| `bj-server.service не active` | `journalctl -u bj-server -n 50` |
| HTTP 200 не отвечает | проверь что :8080 открыт; `ss -tlnp \| grep 8080` |
| Миграции не накатились | `podman exec bj-postgres psql -U bj -l` и `\dt fansy.*` |
| ИШ не скачался | положи `igate_100.0-765_amd64.deb` в `/opt/bj/src/dist/ish/` и перезапусти `install.sh` |
| Валидата не установлена | это **нормально** на старте — заказывай у НРД, потом `install-validata.sh` |
| Не определилась ОС | поддерживаются: Astra, Debian, Ubuntu. Для других — открой issue |
Health-check всё сразу:
```bash
sudo bash /opt/bj/src/deploy/astra/healthcheck.sh
```
---
## Полный путь от чистой ВМ до прохождения теста с роботом MOEX МОСТ
| Этап | Что делается | Срок |
|---|---|---|
| 1. Поднять Astra Linux ВМ | у инфра-команды | 1 день |
| 2. Запустить `install.sh` | автоматически | 5-10 мин |
| 3. Запросить Валидату в НРД | письмо в `soed@nsd.ru` | 1-3 дня ожидания |
| 4. Получить сертификат УЦ МБ | заявка в `ca.moex.com` | 1-2 недели ожидания |
| 5. Подать заявку на TEST3 | форма на сайте НРД | 2-5 дней |
| 6. Установить Валидату | `install-validata.sh` | 5 мин |
| 7. Импортировать сертификат | GUI Валидаты, экспорт в системное хранилище | 15 мин |
| 8. Настроить ИШ | GUI ИШ, создать канал WSL | 30 мин |
| 9. Привязать bj-server к ИШ | `/admin/setup` через UI | 5 мин |
| 10. Прогнать тест с роботом | `/admin/setup` → кнопка | 1 мин |
**Итог: 2-3 недели от старта до зелёного теста с роботом MOEX МОСТ.** На нашей стороне всё уже готово — задержки только во внешних запросах.