- шаг «База bj»: перенос на сервер PostgreSQL организации (проверка подключения, версии, прав, пустой базы;
pg_dump → psql; сверка числа строк по таблицам; переключение и перезапуск); прежняя база — запасная копия;
резервные копии: дамп внешней базы по её подключению, восстановление её не трогает
- все формы: пустые видимые обязательные поля называются по имени и подсвечиваются; DEPO — и на сервере
- «Обновить/Создать канал»: в фоне bj, ход по этапам с таймером (и после перезагрузки страницы), переходы
заблокированы до конца, в конце проверка, что шлюз загрузил канал; состояние ИШ во время записи — без
очереди к root-обработчику (страница больше не висит на «Проверяю…»)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- bj-igate-admin: пустые строки в числовых/интервальных параметрах канала ИШ разбирал с ошибкой и не
загружал канал («There are no active channels», API 500 «more than one Channel…»); теперь NULL, как пишет
интерфейс ИШ; старые каналы чинятся при «Создать канал»; папка архивов 1042S — по имени
- проверка «Шлюз НРД»: канал контура действительно загружен и включён (api/admin/channels/wsl)
- «Учёт DEPO»: нет процедур bj2depo — жёлтое «не забудьте доустановить», не блокирует
- HTTPS: перенаправление с http:// включено по умолчанию, только когда HTTPS реально слушает порт
- мастер: шаг «Учётные записи» (роли, создание, «Придумать пароль») перед проверкой; письма с проверки убраны;
форма «создать» не меняет существующую запись с тем же логином
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
Администратору (адрес из «Почты») — сбои (ИШ, связь с НРД, службы bj, DEPO) и обновления (новый выпуск bj,
ИШ, лицензия, сертификаты); отделам — переводы и поручения. Существующие установки: администратор получает
всё, что получал. Новые оповещения: «Доступно обновление bj» (раз на выпуск), «Служба … не работает /
снова работает» (модули и служба ключей Валидаты). Резервные копии: \\сервер\папка или сервер + общая
папка по полям → //сервер/папка; понятная причина отказа доступа.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
На сервере без экрана окно Валидаты «Пожалуйста, двигайте мышью» никто не видел, ключ в тихом режиме
падал с 0x80090022 (ИШ: «Не найден ключ ЭП (E0700009)»), пересборка справочника — тоже.
bj-validata-rng: тихая проверка датчика (testcsp -silent -random), сеанс на виртуальном экране,
движения из поля мастера повторяются в окне Валидаты (XTEST), прогресс — по полосе её окна.
Установщик ключа проверяет датчик до записи на флешку. zpki.ini: Count = числу профилей, блоки подряд.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
На .29 ключ с флешки не загружался ни у root (пересборка справочника: «Ошибка
загрузки ключа ЭП»), ни у igate (подпись: «Не найден ключ ЭП»), хотя флешка
смонтирована и ключ виден; на рабочем сервере та же проверка подписи — OK.
Перезапуск службы ключей (vdcrysvc, init-скрипт vdmkdev) мог молча не сработать на
свежем сервере: юнит появляется только после daemon-reload, а init-скрипт не
понимает restart. Теперь: daemon-reload, enable, restart (или stop/start), проверка,
что vdcrysvc работает; после неудачной подписи — перезапуск службы и повтор. В
диагностике — состояние службы ключей.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
На .29 ключ с флешки не подписывал (E0700009 «Не найден ключ ЭП»): ИШ не видел
флешку. Если автомонтирование ключевой флешки не сработало, установщик монтирует
её напрямую (только чтение, под igate) и проверяет подпись ещё раз. Не помогло —
в ошибке: смонтирована ли флешка в /var/lib/igate/keymedia и какие ключи (*.vdk)
видит ИШ.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- Мастер смотрел не на итог установщика, а ставил галочки подряд: при «ошибке
пересборки» и несформированном профиле ИШ показывал «Готово». Теперь этап с
ошибкой — красный, причина — в сообщении, «Готово» — только когда справочник
собран, профиль ИШ создан и ключ подписывает (оба пути — флешка и архив).
- Подготовленная флешка: справочник на ней уже совместимый (пересобран при первой
установке) — если пересборка не удалась, берётся как есть (gdbm cf9a5713;
архивный НРД ce9a5713 — только с пересборкой).
- В конце установки — проверка под igate: ключ подписывает проверочный документ
профилем ИШ; не подписывает — понятная ошибка («вставлена ли флешка?»).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- Флешка с готовым ключом (например, с другого сервера bj) используется как есть:
bj-keymedia-install use-media ничего на неё не пишет — справочник для ИШ
пересобирается в копии на диске, из неё — профиль ИШ; этапы и кнопки — «использовать
ключ с флешки», «на неё ничего не записывается».
- Ключевая флешка подключается к ИШ постоянно и только на чтение, как на рабочем
сервере: строка fstab по UUID на /var/lib/igate/keymedia с автомонтированием
(прежний fstab — копией), ссылка реестра ключей igate на флешку. И при обычной
установке (запись архива) — тоже: на свежем сервере Валидата иначе не находила ключ.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
На шаге 1 мастера ключа — второй путь «Ключ уже на флешке»: выбор флешки и
«Взять ключ с флешки». Флешка только читается (bj-keymedia-install stage-media):
ключ (*.vdk) и справочник (local.pse + local.gdbm; раскладка bj — профиль с
key.reg) копируются во временный каталог в раскладке архива, дальше — обычная
установка на ту же флешку под тем же именем профиля (резервная копия флешки,
пересборка справочника, профиль ИШ, перезапуск). Ключ без справочника — понятный
отказ: справочник есть только в архиве НРД. Устройство — только из обнаруженных
съёмных.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- Дистрибутив ИШ — компонент выпуска igate-dist (версия = версия ИШ). В выпуск
попадает только одобренный архив: deploy/release/igate-approved (версия и
sha256), сборка сверяет контрольную сумму. Клиент получает его обновлением;
bj-server после обновления (и при запуске) сам обновляет ИШ, если на сервере
он старее; итог — событие в «Новостях». Настройки, каналы и база ИШ
сохраняются, прежняя версия — в /var/backups.
- Установка «с сервера» берёт самый новый проверенный дистрибутив: с образа или из
обновления. С сайта НРД — только в режиме разработки.
- Большие файлы: одна прежняя копия вместо пяти; предел скачивания — по размеру.
- Ход установки ИШ — этапами: пройденные, текущий («идёт 0:41 · обычно до 1:30»,
дольше обычного — предупреждение), журнал под раскрытием; кнопка на время
установки выключена.
- Установщик: уникальные этапы; igate-cli и сессия ключницы с принудительным
завершением (timeout -k); зависшая установка (ход не менялся 15 минут)
снимается повторным запуском; служба установки — не дольше 40 минут.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
Также: версия файла, совпадающего с выпуском, записывается (нет ложного «новее»); признак неудачной проверки отдельно от результатов установки; окно обновления само перезагружает страницу.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
Модули работают отдельными службами (bj-npr, bj-quikexport, bj-lk), и когда
служба лежит, раздел модуля отвечает ошибкой связи, а администратору
предлагалось идти в консоль за systemctl status. Теперь в разделе «Обновления»
карточка «Службы»: состояние каждой службы, с какого времени, причина отказа
и кнопка «Перезапустить».
Состояние читаем обычным systemctl show — прав не требует. Перезапуск делает
root-демон bj-keymedia (тот же канал, что у установки обновлений) по закрытому
списку служб: чужую службу и сам демон отсюда не тронуть.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL
- internal/release/components.go: список компонентов (ядро bj-server, криптосервис, bj-lk,
bj-npr, bj-quikexport) с путём и службой, установленные версии в components.json,
расчёт обновлений по версии каждого файла и sha256 (без отката, модули — только если
уже установлены на сервере)
- cmd/bj-component-install: root-установщик — сам перепроверяет подпись манифеста ключом
/etc/bj/update.pub и sha256, копия прежнего файла, перезапуск только затронутых служб
- updater: bj-server (без прав root) скачивает в update-staging и передаёт установку
root-воркеру (действие component-install); установка в фоне
- настройки: таблица компонентов с версиями, «Обновить» и «Обновить всё»
- bj-release: версия файла из <файл>.version; bj-keymedia-worker: component-install
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>