Первичная настройка: ключ спрашивается один раз, затем обновления, модули и «Время и сеть»; DEPO одним шагом

- Первая страница — только администратор (и восстановление из копии); ключ продукта — после создания
  администратора, на шаге «Лицензия». Консоль первой загрузки ключ больше не спрашивает (для образа с
  комплектом bj).
- «Подготовка модулей» начинает с проверки обновлений: есть — ставит (bj перезапускается, страница ждёт и
  продолжает), нет — дальше; выпуск, который уже ставили, по кругу не ставится. Затем модули лицензии и
  переход на «Время и сеть» (шаг 12) — часовой пояс клиент выбирает сам, шаг больше не проскакивает.
- Учёт DEPO одним шагом: bj сам находит базу Fancy DEPO на сервере (по таблицам OD_FACES/OD_RESTS), имя
  базы не спрашивается. Один скрипт создаёт логин bj, таблицы обмена и права; по выбору — задание
  обработки в SQL Agent или обработка на сервере bj. Выполнить сразу (логин администратора СУБД не
  сохраняется), скачать скрипт для администратора или подключиться готовым логином.
- Восстановление из копии — только на первой странице, в мастере его больше нет.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-06 11:42:10 +03:00
parent 96976df549
commit 8905ebc6fb
12 changed files with 763 additions and 239 deletions
+20 -26
View File
@@ -1,8 +1,9 @@
#!/bin/bash
# Первая загрузка сервера, установленного с образа Bridge&Join. Спрашивает ключ продукта на консоли;
# без ключа ставит ядро bj с образа (/var/lib/bj/bundle), а ключ вводится в браузере на первой
# странице настройки. Пока bj не установлен, вопрос повторяется при каждой загрузке (вопросы ждут ответа без таймера),
# адрес и подсказки всегда есть на экране входа (bj-welcome).
# Первая загрузка сервера, установленного с образа Bridge&Join: пароли учётных записей, постоянный адрес и
# установка ядра bj с образа (/var/lib/bj/bundle). Ключ продукта на консоли не спрашивается (06.10.2026):
# его вводят один раз — в браузере, после создания администратора. Пока bj не установлен, установка
# повторяется при каждой загрузке; адрес и подсказки всегда есть на экране входа (bj-welcome).
# Ключ на консоли спрашивается только у образа без комплекта bj (тогда bj качается с сервера по ключу).
set -u
MARK=/var/lib/bj/.bj/installed-from-iso
SERVER=https://lic.zetit.ru
@@ -107,11 +108,21 @@ clear
printf '\n Bridge&Join: установка на сервер\n ────────────────────────────────────────────────────────────\n'
printf ' Шаг 2 из 2 — установка bj. Система установлена, осталось поставить bj.\n\n'
if [ -f "$BUNDLE/manifest.json" ]; then
printf ' Ключ продукта (BJ-XXXX-XXXX-XXXX) есть в портале клиента %s/portal/.\n' "$SERVER"
printf ' Вводить его здесь необязательно: нажмите Enter — ядро bj установится с образа,\n а ключ вы введёте в браузере на первой странице настройки (там его удобно вставить).\n\n'
else
printf ' Нужен ключ продукта (BJ-XXXX-XXXX-XXXX): он есть в портале клиента %s/portal/\n\n' "$SERVER"
printf ' Ключ продукта вводить здесь не нужно: его спросит браузер после создания администратора.\n\n'
if install_bj --bundle "$BUNDLE" --server "$SERVER" --channel "$CHANNEL"; then
finish_quiet # адрес и код первичной настройки — на экране установки выше
show_accounts
read -r -p " Нажмите Enter, чтобы перейти к экрану входа. " _ < /dev/tty || true
finish_screen
exit 0
fi
show_accounts
printf ' Установка bj не завершилась. Она повторится при следующей загрузке, или сейчас вручную:\n sudo bj-installer install --bundle %s\n\n' "$BUNDLE"
read -r -p " Нажмите Enter, чтобы перейти к экрану входа. " _ < /dev/tty || true
exit 0
fi
# образ без комплекта bj — ядро качается с сервера лицензий, для этого нужен ключ
printf ' Нужен ключ продукта (BJ-XXXX-XXXX-XXXX): он есть в портале клиента %s/portal/\n\n' "$SERVER"
for i in $(seq 1 30); do
curl -fsS -m 5 -o /dev/null "$SERVER/healthz" && break
[ "$i" = 1 ] && printf ' Жду сеть и связь с %s…\n' "$SERVER"
@@ -119,26 +130,9 @@ for i in $(seq 1 30); do
done
while true; do
CODE=""
if [ -f "$BUNDLE/manifest.json" ]; then
read -r -p " Ключ продукта (Enter — установить с образа, ключ ввести в браузере): " CODE < /dev/tty || true
else
read -r -p " Ключ продукта (Enter — установить позже): " CODE < /dev/tty || true
fi
read -r -p " Ключ продукта (Enter — установить позже): " CODE < /dev/tty || true
CODE=$(printf '%s' "${CODE:-}" | tr -d ' ' | tr '[:lower:]' '[:upper:]')
if [ -z "$CODE" ]; then
if [ -f "$BUNDLE/manifest.json" ]; then
if install_bj --bundle "$BUNDLE" --server "$SERVER" --channel "$CHANNEL"; then
finish_quiet # адрес и код первичной настройки — на экране установки выше
show_accounts
read -r -p " Нажмите Enter, чтобы перейти к экрану входа. " _ < /dev/tty || true
finish_screen
exit 0
fi
show_accounts
printf ' Установка bj не завершилась. Она повторится при следующей загрузке, или сейчас вручную:\n sudo bj-installer install --bundle %s\n\n' "$BUNDLE"
read -r -p " Нажмите Enter, чтобы перейти к экрану входа. " _ < /dev/tty || true
exit 0
fi
show_accounts
printf '\n Установка bj отложена. Вопрос повторится при следующей загрузке; вручную:\n sudo bj-installer install --code КЛЮЧ-ПРОДУКТА\n\n'
read -r -p " Нажмите Enter, чтобы перейти к экрану входа. " _ < /dev/tty || true