← Назад к «Установка»

Развёртывание серверов LSUS

Главный документ по установке серверных ролей LSUS (Master, Site, Edge, PXE) через пакеты ОС. Здесь — пошаговые инструкции для каждой роли: установка пакетов, проверка health, регистрация ролевых связей.

Единственный поддерживаемый способ развёртывания серверов LSUS — Docker-контейнеры. Пакеты ОС LSUS устанавливают Docker, загружают образы и запускают контейнеры — администратору не нужно вручную устанавливать PostgreSQL, nginx или приложение. Развёртывание серверных ролей на хост без Docker не поддерживается. Клиенты (lsus-client) устанавливаются на хост управляемых машин напрямую — к ним это не относится.

С чем ознакомиться до установки: Требования и подготовка (ОС, ресурсы, firewall, DNS SRV). Полный справочник портов, контейнеров и переменных окружения — в Справочнике. Краткая шпаргалка без объяснений — в Быстром старте.

Как устроена установка

LSUS разворачивается через системные пакеты (.deb / .rpm), которые устанавливают Docker, загружают образы и запускают контейнеры:

  1. Пакеты Docker-образов (lsus-image-postgres, lsus-image-redis, lsus-image-pgbouncer для Master/Site, lsus-image-nginx, lsus-image-<роль>) и ролевой пакет (lsus-master, lsus-site, lsus-edge, lsus-pxe) ставятся штатным менеджером ОС. Достаточно указать один ролевой пакет — остальные пакетный менеджер подставит по зависимостям.
  2. При первой установке ролевой пакет автоматически создаёт /opt/lsus-docker/.env, генерирует пароли БД, создаёт дерево каталогов данных, загружает образы и запускает контейнеры нужного профиля.
  3. Если .env уже существует (в т.ч. после обновления), пакет не перезаписывает его — использует существующие значения. При обновлении обновляется только LSUS_VERSION и добавляются недостающие безопасные defaults.
  4. На одном хосте можно развернуть только одну серверную роль — пакеты ролей конфликтуют друг с другом.

infoРекомендуемая схема внедрения

Для продуктивного контура разносите роли по разным серверам: Master — центр управления, Site — сервер площадки, Edge — пограничный сервер в DMZ, PXE — точка сетевой установки ОС (свой хост, ≥100 ГБ). Так сбой или переполнение диска на одной роли не останавливает остальные, проще ограничивать сетевой доступ и планировать резервное копирование. Совмещение master+edge на одном узле допустимо для стенда; роль pxe с другими ролями не сочетается.

Порты при первой установке

Порты задаются переменными окружения хоста только при первой установке (когда создаётся .env). Позже порты меняются вручную в .env.

infoДефолтные порты

При ручном развёртывании из .env.example все роли слушают 443. Пакеты ОС при первой установке пишут в .env собственные дефолты: Master и Site — 8443, Edge — 8540; пакеты для Альт Сервера дополнительно включают раздачу /repos по HTTP на порту 18880. Полная таблица — в Справочнике портов.

Переменная окружения Роли Попадает в .env По умолчанию
LSUS_INSTALL_POSTGRES_PORT master, site, edge PG_PORT 5432
LSUS_INSTALL_MASTER_PORT master MASTER_PORT 8443
LSUS_INSTALL_MASTER_HTTP_PORT master (Альт) MASTER_HTTP_PORT 18880
LSUS_INSTALL_SITE_PORT site SITE_PORT 8443
LSUS_INSTALL_SITE_HTTP_PORT site (Альт) SITE_HTTP_PORT 18880
LSUS_INSTALL_EDGE_PORT edge EDGE_PORT 8540
LSUS_INSTALL_PXE_PORT pxe PXE_PORT 443

Переменные *_HTTP_PORT доступны только в пакетах для Альт Сервера (APT-RPM): клиенты apt-rpm получают репозитории по plain HTTP, поэтому порт /repos фиксируется отдельно от HTTPS.

Передача окружения:

# DEB (Astra / Debian / Ubuntu) — в той же строке, что и sudo:
sudo LSUS_INSTALL_MASTER_PORT=9443 apt install ./lsus-master_<версия>_ubuntu.deb

# RPM (РЕД ОС / RHEL):
sudo LSUS_INSTALL_EDGE_PORT=9440 dnf install ./lsus-edge-<версия>-1.noarch.rpm

На Альт Сервере команды выполняются от root (см. Установка на Альт Сервер) — префикс sudo не нужен:

# Альт Сервер (от root):
# LSUS_INSTALL_MASTER_PORT=9443 apt-get install ./lsus-master-<версия>-alt1.noarch.rpm

Некорректное значение (не число или вне 1–65535) приведёт к ошибке на этапе настройки пакета — повторите установку с допустимым портом.

Что нужно решить до установки

  1. FQDN и IP для каждого узла роли.
  2. Диски: где будут PostgreSQL, репозитории (repos), KB-кэш, хранилище Edge, журналы — см. дисковое планирование.
  3. Сертификаты: корпоративные или временные самоподписанные.
  4. Порты: задать через LSUS_INSTALL_* до первой установки, либо позже в .env.
  5. DNS SRV (обязательно при наличии корпоративного DNS): для автообнаружения сервера клиентами — см. Требования.

Способ установки

Серверные роли LSUS работают только в Docker-контейнерах и разворачиваются через пакеты ОС (.deb / .rpm) из комплекта поставки. Развёртывание на хост без Docker не поддерживается. Пакетный менеджер самостоятельно:

  • ставит Docker Engine и Docker Compose как зависимости пакета;
  • ставит пакеты образов LSUS (PostgreSQL, PgBouncer, nginx, образ роли);
  • генерирует /opt/lsus-docker/.env со случайными паролями;
  • загружает образы в Docker (docker load);
  • запускает профиль через docker compose --profile <роль> up -d --force-recreate.

Зависимости пакета

Ролевой пакет LSUS (lsus-master, lsus-site, lsus-edge) декларирует в Depends/Requires всё необходимое для запуска: Docker, Docker Compose и пакеты образов. Пакетный менеджер сам установит их, если они ещё не стоят.

Docker и Docker Compose по дистрибутивам:

ОС Пакет Docker Пакет Compose Вызов
Astra Linux 1.7/1.8 docker.io docker-compose-v2 docker compose …
Ubuntu 24.04+ docker.io docker-compose-v2 docker compose …
Debian 13 (Trixie) docker.io docker-compose docker-compose …
РЕД ОС 7.3/8, RHEL-совместимые docker-ce docker-compose docker-compose …
Альт Сервер 11 (p11) docker-engine docker-compose docker-compose …

После установки пакетов серверный скрипт автоматически выполнит systemctl enable --now docker, после чего поднимет профиль docker compose up -d --force-recreate.

Пакеты образов — зависимости ролевого пакета:

Роль Образы, которые будут установлены
Master lsus-image-postgres, lsus-image-redis, lsus-image-pgbouncer, lsus-image-nginx, lsus-image-master
Site lsus-image-postgres, lsus-image-redis, lsus-image-pgbouncer, lsus-image-nginx, lsus-image-site
Edge lsus-image-postgres, lsus-image-redis, lsus-image-nginx, lsus-image-edge
PXE lsus-image-nginx, lsus-image-pxe (без PostgreSQL)

Каждый пакет образа — это Docker-образ (*.tar.gz), размещённый в /usr/share/lsus-docker/images/ и загружаемый в Docker через docker load на этапе postinst. Версии образов жёстко привязаны к версии ролевого пакета, поэтому смешивать пакеты от разных релизов нельзя.

Роли конфликтуют между собой (Conflicts перебирает master site edge pxe ca cv cr captive): на одном хосте ставится одна серверная роль. Исключение инсталлятора — master+edge; pxe всегда exclusive.

lightbulbЕсли Docker уже установлен

Пакеты LSUS не переустанавливают Docker, если тот уже есть. Это безопасно для любых способов установки Docker (из штатного репозитория ОС, из download.docker.com, вручную). Главное — чтобы был доступен Docker Compose: docker-compose-v2 (plugin), docker compose (встроенный) или docker-compose (standalone). Ролевой postinst сам перебирает все три варианта.

Исключение — Альт Сервер: пакеты LSUS для Альта зависят от docker-engine и docker-compose из штатного репозитория p11. Если ранее Docker ставился с docker.com (docker-ce), удалите его перед установкой LSUS — см. Установка на Альт Сервер.

Пакеты поставки

Пакетный менеджер ставит все пакеты автоматически по зависимостям — достаточно одного ролевого пакета. Полный состав поставки под роль:

Пакет Назначение Master Site Edge PXE
lsus-image-postgres Образ PostgreSQL 15
lsus-image-redis Образ Redis (общий кеш процессов)
lsus-image-pgbouncer Образ PgBouncer (пул соединений)
lsus-image-nginx Образ nginx (TLS-фронтенд)
lsus-image-master Образ приложения Master
lsus-image-site Образ приложения Site
lsus-image-edge Образ приложения Edge
lsus-image-pxe Образ точки развёртывания ОС
lsus-image-ollama Образ Ollama (LLM-движок)
lsus-image-openclaw Образ OpenClaw (агент-диспетчер)
lsus-master Роль Master; формирует .env, запускает профиль
lsus-site Роль Site; формирует .env, запускает профиль
lsus-edge Роль Edge; формирует .env, запускает профиль
lsus-pxe Роль PXE (exclusive, без БД)

lightbulbПорядок установки при ручной установке из локального каталога

Если пакеты ставятся командой apt install ./… / dnf install ./… из локального каталога (без репозитория), зависимости автоматически не разрешаются — установите пакеты образов явно в указанном порядке:

  1. lsus-image-postgres — PostgreSQL (общая БД для всех ролей);
  2. lsus-image-pgbouncerтолько для Master и Site (Edge без него);
  3. lsus-image-nginx — TLS-фронтенд;
  4. lsus-image-<роль> — образ приложения;
  5. lsus-<роль> — ролевой пакет (формирует .env, запускает контейнеры).

При установке из репозитория ОС с корректными Depends/Requires достаточно одного lsus-<роль> — остальное пакетный менеджер поставит сам.

infoPgBouncer нужен только Master и Site

Веб-процессы Master и Site держат много короткоживущих соединений к PostgreSQL при обработке API-запросов — их мультиплексирует PgBouncer. У Edge трафик к БД минимален (один контейнер lsus-edge, никаких всплесков от heartbeat тысяч клиентов), поэтому пул ему не нужен и lsus-image-pgbouncer от lsus-edge не зависит.

infoСостав пакетов для Альт Сервера

Линейка APT-RPM (суффикс -alt1) включает только роли master, site, edge и их образы. Роли PXE и AI-стек (Ollama, OpenClaw) в APT-RPM не поставляются. Порядок установки и стиль команд для Альта — в разделе Установка на Альт Сервер.

Пароли по умолчанию для веб-интерфейсов

При первой генерации .env (или если переменные не заданы) для входа в админки используются пароли ниже.

warningСмените немедленно

Эти пароли известны (зафиксированы в шаблонах пакетов и compose). Смените их сразу после первого входа или задайте свои значения в .env до первого старта контейнеров.

Роль Логин Переменная в .env Значение по умолчанию
Master admin LSUS_ADMIN_INITIAL_PASSWORD !LsusAdminMaster2026@
Site admin LSUS_SITE_ADMIN_PASSWORD !LsusAdminSite2026@
Edge admin EDGE_UI_PASSWORD !LsusAdminEdge2026@

Пароли PostgreSQL и пользователей БД (POSTGRES_PASSWORD, MASTER_DB_PASSWORD и т.п.) генерируются случайно и выводятся в файл credentials-<роль>.txt в каталоге /opt/lsus-docker/. Это не те же строки, что в таблице выше.

Сменить пароль admin Master можно через веб-интерфейс (иконка пользователя → Личный кабинет → Смена пароля) или скриптом:

sudo docker exec -e LSUS_ADMIN_RESET_PASSWORD='<новый_пароль>' lsus-master \
  python3 /opt/lsus-server/scripts/ensure_admin_user.py

Установка на Альт Сервер

Для Альт Сервера 11 (репозиторий p11) поставляется отдельная линейка пакетов APT-RPM: lsus-master, lsus-site, lsus-edge и пакеты образов с суффиксом -alt1 — например, lsus-master-<версия>-alt1.noarch.rpm. Установка и обновление — только штатным apt-get; Docker подтягивается из репозитория дистрибутива.

Роли PXE и AI-стек в APT-RPM не поставляются (см. примечание выше) — для них используйте хосты с deb/RPM-линейками.

Права root

В ОС Альт не принято работать через sudo — разовые административные действия выполняются в терминале с правами root, введя команду su - (обязательно с минусом на конце):

$ su -
Пароль:
#

Здесь и далее в этом разделе $ — приглашение обычного пользователя, # — команды от root.

Установка из репозитория LSUS

Если сервер имеет доступ к https://repo.lsus.ru/alt, подключите репозиторий (ветка p11, компонент classic) и ставьте ролевой пакет одной командой — зависимости, включая Docker, разрешатся автоматически:

# echo 'rpm https://repo.lsus.ru/alt p11/x86_64 classic' > /etc/apt/sources.list.d/lsus.list
# apt-get update && # apt-get install lsus-master

Если вашей организации выдан токен доступа к repo.lsus.ru, укажите его в URL репозитория: rpm https://<токен>:@repo.lsus.ru/alt p11/x86_64 classic (см. repo.lsus.ru).

Для Site и Edge замените имя пакета на lsus-site / lsus-edge.

Установка из локального каталога

В замкнутом контуре перенесите пакеты поставки на сервер (например, в /opt/lsus-pkgs) и перечислите все пакеты роли в одной команде apt-get install — тогда зависимости разрешатся внутри этого набора, а docker-engine и docker-compose подтянутся из подключённого p11:

$ cd /opt/lsus-pkgs
$ su -
# apt-get update && # apt-get install ./lsus-image-postgres-<версия>-alt1.noarch.rpm \
    ./lsus-image-redis-<версия>-alt1.noarch.rpm \
    ./lsus-image-pgbouncer-<версия>-alt1.noarch.rpm \
    ./lsus-image-nginx-<версия>-alt1.noarch.rpm \
    ./lsus-image-master-<версия>-alt1.noarch.rpm \
    ./lsus-master-<версия>-alt1.noarch.rpm

Для Site набор тот же с lsus-image-site / lsus-site; для Edge — без lsus-image-pgbouncer, с lsus-image-edge / lsus-edge.

warningТолько apt-get

Устанавливайте и обновляйте пакеты LSUS командой apt-get install. Команды rpm -i, rpm -Uvh и, тем более, rpm -i --nodeps обходят разрешение зависимостей: Docker не будет установлен из p11, а скрипт настройки ролевого пакета не найдёт docker-compose и прервёт установку. Обёртка apt (без -get) также не используется.

priority_highDocker — только из p11

Пакеты LSUS для Альта зависят от docker-engine и docker-compose из штатного репозитория p11. Не подключайте репозиторий docker.com и не устанавливайте docker-ce — это чужие для Альта сборки, за них ответственность не несётся. Если docker-ce оказался установлен ранее, удалите его до установки LSUS: # apt-get remove docker-ce.

Порты Альт-установки

При первой установке пакет создаёт /opt/lsus-docker/.env со значениями по умолчанию для Альта:

Роль HTTPS (админка, API) HTTP /repos (репозитории)
Master 8443 18880
Site 8443 18880
Edge 8540

Раздача репозиториев по plain HTTP вынесена на отдельный порт 18880 (не 80 и не 8080) и не отключается: клиенты apt-rpm получают репозитории именно по HTTP. URL для клиентов — http://<fqdn-сервера>:18880/repos/….

Порты можно переопределить при первой установке переменными LSUS_INSTALL_* (см. таблицу выше), позже — правкой .env и пересозданием контейнеров.

Веб-интерфейс — с рабочей станции

lightbulbНе устанавливайте графику на Альт Сервер

Альт Сервер — серверная ОС без графической оболочки, и ставить её ради админки LSUS не нужно. Открывайте веб-интерфейс Master с рабочей станции: https://<fqdn-сервера>:8443. Из консоли сервера доступность проверяется curl-ом (см. шаги проверки роли).

Обновление

Обновление — установка новой версии пакета той же командой:

# из репозитория LSUS:
# apt-get update && # apt-get install lsus-master

# из локального каталога:
# apt-get install ./lsus-master-<новая_версия>-alt1.noarch.rpm

.env и данные в /opt/lsus-docker/data/ сохраняются; контейнеры пересоздаются автоматически. Штатное обновление самой ОС выполняется по документации Альт (apt-get dist-upgrade); при подключённом репозитории LSUS оно заодно подтянет новые версии пакетов LSUS.

Удаление

# apt-get remove lsus-master

Пакет остановит контейнеры роли; данные и .env в /opt/lsus-docker/ сохранятся — удалите каталог вручную, если они больше не нужны.


Установка Master

Master — центральный сервер управления: веб-админка, регистрация хостов, приём heartbeats, раздача репозиториев и KB-кеша, единая БД политик.

Что создастся

  • Параметры в /opt/lsus-docker/.env: POSTGRES_PASSWORD, MASTER_DB_PASSWORD, MASTER_PORT и др.;
  • Каталоги: /opt/lsus-docker/data/postgres/, master/repos/, master/kb-cache/, master/kb-storages/, master/data/, master/log/;
  • Контейнеры профиля master: lsus-postgres, lsus-pgbouncer, lsus-master, lsus-master-worker, lsus-master-replication, lsus-nginx;
  • Файл /opt/lsus-docker/credentials-master.txt.

Шаг 1. Установить пакеты

При установке из репозитория ОС достаточно одной команды — зависимости подтянутся автоматически. При установке из локального каталога перечислите все пакеты явно:

# Astra / Debian / Ubuntu
sudo apt update
sudo apt install ./lsus-image-postgres_<версия>_all.deb \
                 ./lsus-image-pgbouncer_<версия>_all.deb \
                 ./lsus-image-nginx_<версия>_all.deb \
                 ./lsus-image-master_<версия>_all.deb \
                 ./lsus-master_<версия>_<дистрибутив>.deb

# РЕД ОС / RHEL
sudo dnf install ./lsus-image-postgres-<версия>-1.noarch.rpm \
                 ./lsus-image-pgbouncer-<версия>-1.noarch.rpm \
                 ./lsus-image-nginx-<версия>-1.noarch.rpm \
                 ./lsus-image-master-<версия>-1.noarch.rpm \
                 ./lsus-master-<версия>-1.noarch.rpm

# Альт Сервер (от root, su -; Docker подтянется из p11)
# apt-get update && # apt-get install ./lsus-master-<версия>-alt1.noarch.rpm

<дистрибутив> — суффикс _astra, _debian или _ubuntu для deb; для rpm суффикс дистрибутива не нужен. Для Альта порядок и стиль команд — в разделе Установка на Альт Сервер.

Шаг 2. Проверить .env

Откройте /opt/lsus-docker/.env и при необходимости задайте:

MASTER_PORT=443
LSUS_HOSTNAME=master.example.com
LSUS_ADMIN_INITIAL_PASSWORD=<свой_надёжный_пароль>

Если меняли значения, перезапустите профиль:

cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile master up -d --force-recreate

Шаг 3. Проверить доступность

# health-эндпоинт — ожидаемый ответ: {"status":"ok","role":"master"}
curl -k https://master.example.com:8443/api/v1/health

# статус контейнеров
cd /opt/lsus-docker && sudo docker compose -f docker-compose.yml --env-file .env --profile master ps

lightbulbЧто считать успехом

curl возвращает HTTP 200 и "status": "ok", все контейнеры профиля в статусе Up (healthy). Если curl висит — проверьте firewall и порт 443; если connection refused — контейнер не поднялся, смотрите docker compose ps и логи.

Первый вход

Откройте https://master.example.com:8443 с рабочей станции (порт — из .env; 443 только при ручном развёртывании из .env.example), войдите как admin с паролем по умолчанию (или заданным в .env), сразу смените пароль. Если настроен Kerberos SSO, вход произойдёт автоматически.


Установка Site

Site — сервер площадки/сегмента: прокси для своего пула клиентов, синхронизируется с Master, обслуживает локальную копию репозиториев.

Что создастся

  • Параметры в .env: POSTGRES_PASSWORD, SITE_DB_PASSWORD, SITE_PORT и др.;
  • Каталоги: data/postgres/, site/repos/, site/data/, site/log/;
  • Контейнеры профиля site: lsus-postgres, lsus-site-pgbouncer, lsus-site, lsus-site-replication, lsus-site-nginx;
  • Файл /opt/lsus-docker/credentials-site.txt.

Шаг 1. Установить пакеты

# Astra / Debian / Ubuntu
sudo apt update
sudo apt install ./lsus-image-postgres_<версия>_all.deb \
                 ./lsus-image-pgbouncer_<версия>_all.deb \
                 ./lsus-image-nginx_<версия>_all.deb \
                 ./lsus-image-site_<версия>_all.deb \
                 ./lsus-site_<версия>_<дистрибутив>.deb

# РЕД ОС / RHEL
sudo dnf install ./lsus-image-postgres-<версия>-1.noarch.rpm \
                 ./lsus-image-pgbouncer-<версия>-1.noarch.rpm \
                 ./lsus-image-nginx-<версия>-1.noarch.rpm \
                 ./lsus-image-site-<версия>-1.noarch.rpm \
                 ./lsus-site-<версия>-1.noarch.rpm

# Альт Сервер (от root, su -; Docker подтянется из p11)
# apt-get update && # apt-get install ./lsus-site-<версия>-alt1.noarch.rpm

<дистрибутив> — суффикс _astra, _debian или _ubuntu для deb; для rpm суффикс дистрибутива не нужен.

Шаг 2. Задать URL Master

В /opt/lsus-docker/.env укажите адрес Master для регистрации и синхронизации:

SITE_PORT=443
SITE_HOSTNAME=site.example.com
LSUS_MASTER_URL=https://master.example.com
LSUS_SITE_API_KEY=<ключ_если_уже_выдан>

Перезапустите профиль, если меняли значения:

cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile site up -d --force-recreate

Шаг 3. Проверить доступность

# ожидаемый ответ: {"status":"ok","role":"site"}
curl -k https://site.example.com:8443/api/v1/health

Шаг 4. Зарегистрировать Site на Master

  1. На стороне Site откройте админку https://site.example.com.
  2. Нажмите «Зарегистрироваться на Master», укажите URL Master.
  3. На стороне Master перейдите: Администрирование → Сайты.
  4. Найдите Site в списке (или в нераспределённых хостах) и одобрите регистрацию.
  5. После одобрения Site получит доступ к репозиториям и настройкам.

infoПримечание

Если LSUS_SITE_API_KEY требуется заранее, его выдаёт Master при регистрации. В большинстве сценариев ключ генерируется в процессе регистрации через веб-интерфейс.


Установка Edge

Edge — пограничный сервер в DMZ: приём/раздача файлов, зеркала репозиториев, доставка внешних репозиториев/OVAL/KB в закрытый контур. Имеет собственную БД lsus_edge.

Что создастся

  • Параметры в .env: POSTGRES_PASSWORD, EDGE_DB_PASSWORD, EDGE_UI_PASSWORD, EDGE_PORT и др.;
  • Каталоги: data/postgres/, edge/storage/, edge/data/, edge/log/;
  • Контейнеры профиля edge: lsus-postgres, lsus-edge, lsus-edge-nginx;
  • Файл /opt/lsus-docker/credentials-edge.txt.

Шаг 1. Установить пакеты

# Astra / Debian / Ubuntu
sudo apt update
sudo apt install ./lsus-image-postgres_<версия>_all.deb \
                 ./lsus-image-nginx_<версия>_all.deb \
                 ./lsus-image-edge_<версия>_all.deb \
                 ./lsus-edge_<версия>_<дистрибутив>.deb

# РЕД ОС / RHEL
sudo dnf install ./lsus-image-postgres-<версия>-1.noarch.rpm \
                 ./lsus-image-nginx-<версия>-1.noarch.rpm \
                 ./lsus-image-edge-<версия>-1.noarch.rpm \
                 ./lsus-edge-<версия>-1.noarch.rpm

# Альт Сервер (от root, su -; Docker подтянется из p11)
# apt-get update && # apt-get install ./lsus-edge-<версия>-alt1.noarch.rpm

infoPgBouncer для Edge не нужен

Пакет lsus-image-pgbouncer не ставится для Edge — у этой роли нет всплесков нагрузки на соединения с PostgreSQL, пул ей не требуется. Если пакет случайно установлен, это безопасно (он просто не используется), но и не требуется.

<дистрибутив> — суффикс _astra, _debian или _ubuntu для deb; для rpm суффикс дистрибутива не нужен.

Шаг 2. Проверить .env

EDGE_PORT=443
EDGE_UI_PASSWORD=<свой_пароль_для_UI_Edge>
EDGE_AV_ENABLED=false

Перезапустите профиль при необходимости:

cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile edge up -d --force-recreate

Шаг 3. Проверить доступность

# ожидаемый ответ: {"status":"ok","role":"edge"}
curl -k https://edge.example.com:8540/api/v1/health

Шаг 4. Получить API-ключ Edge

Для регистрации Edge на Master нужен API-ключ с ролью admin. Ключ — 48 шестнадцатеричных символов, показывается только один раз при создании.

warningСохраните ключ сразу

Сырой API-ключ Edge выводится только один раз. В базе хранится только его SHA-256-хэш — восстановить сырой ключ позже нельзя. Если ключ утерян, придётся создать новый.

Получить ключ можно тремя способами:

Способ A — из лога при первом старте. Если при запуске Edge таблица API-ключей пуста, автоматически создаётся ключ default-admin (роль admin), и сырой ключ печатается в лог контейнера:

sudo docker logs lsus-edge 2>&1 | grep -A1 "API-ключ admin по умолчанию"

Способ B — через веб-интерфейс Edge.

  1. Войдите в UI Edge: https://edge.example.com как admin с паролем из EDGE_UI_PASSWORD.
  2. Откройте раздел «API-ключи» (доступен только роли admin).
  3. Нажмите «Создать ключ», задайте имя и роль admin.
  4. Скопируйте показанный ключ — он отображается только один раз.

Способ C — через REST API Edge (нужен существующий admin-доступ):

curl -k -X POST https://edge.example.com/api/v1/auth/keys \
  -H "Authorization: Bearer <существующий_admin_ключ>" \
  -H "Content-Type: application/json" \
  -d '{"name":"for-master","role":"admin"}'

В ответе вернётся объект ключа с полем raw_key — это и есть ключ для регистрации на Master.

Шаг 5. Зарегистрировать Edge на Master

  1. На стороне Master перейдите: Администрирование → Пограничный сервер.
  2. Нажмите «+ Добавить edge-сервер».
  3. Заполните форму:
    - Название — произвольное (например, «DMZ Edge 1»);
    - URLhttps://edge.example.com;
    - API-ключ — ключ, полученный на шаге 4;
    - Активен — включить.
  4. Нажмите «Сохранить».

После добавления Edge появится в списке серверов. Можно настраивать загрузки и синхронизацию через Edge.

infoРоли API-ключей

API-ключи Edge бывают двух ролей: admin (полный доступ) и readonly (только чтение). Для регистрации на Master нужен ключ с ролью admin.


Установка PXE

PXE — exclusive-роль на своём хосте: ISO, extract, proxyDHCP/TFTP, HTTP boot. Своей БД нет. Не сочетается с master/site/edge. Secure Boot в MVP выключен (iPXE). Подробно о вкладке и сети — PXE.

Что создастся

  • Параметры в .env: PXE_PORT, PXE_HTTP_PORT, LSUS_PXE_INTERNAL_PORT=18550, LSUS_MASTER_URL, LSUS_PXE_REGISTRATION_KEY;
  • Каталоги: data/pxe/store/incoming, data/pxe/data/certs, data/pxe/log;
  • Контейнеры профиля pxe: lsus-pxe, lsus-pxe-nginx (cap_add NET_ADMIN/NET_RAW);
  • Файл /opt/lsus-docker/credentials-pxe.txt.

Нужно ≥100 ГБ свободного места под store.

Шаг 1. Установить пакеты

# Astra / Debian / Ubuntu
sudo apt update
sudo apt install ./lsus-image-nginx_<версия>_all.deb \
                 ./lsus-image-pxe_<версия>_all.deb \
                 ./lsus-pxe_<версия>_<дистрибутив>.deb

# РЕД ОС / RHEL
sudo dnf install ./lsus-image-nginx-<версия>-1.noarch.rpm \
                 ./lsus-image-pxe-<версия>-1.noarch.rpm \
                 ./lsus-pxe-<версия>-1.noarch.rpm

PostgreSQL и PgBouncer для PXE не ставятся.

Шаг 2. Ключ регистрации и .env

На Master: вкладка PXE → PXE-точки → ключ регистрации (как у Site).

PXE_PORT=443
PXE_HTTP_PORT=80
LSUS_MASTER_URL=https://master.example.com
LSUS_PXE_REGISTRATION_KEY=<ключ с Master>
LSUS_PXE_INTERFACES=
LSUS_PXE_BIND_INTERFACES=1
cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile pxe up -d --force-recreate

Шаг 3. Проверить доступность

# {"status":"ok","role":"pxe"}
curl -k https://pxe.example.com/api/v1/health
curl -s http://pxe.example.com/pxe/boot.ipxe | head

Firewall хоста: TCP 80/443, UDP 67/69/4011. Корпоративный DHCP — на другом хосте; на маршрутизаторе VLAN установки — IP-helper и на точку (или options 66/67). Runbook — в wiki модуля.

warningTLS точки и браузер

Чанки ISO идут браузер → PXE, минуя Master. Браузер должен доверять сертификату точки (до PKI — self-signed вручную). Иначе загрузка ISO молча падает.


Установка AI-стека (Ollama и OpenClaw)

AI-стек (локальный LLM-инференс) — опциональный компонент LSUS. Он обеспечивает функции AI-ассистента: генерацию сценариев конфигураций, анализ прогонов, ответы на вопросы администратора. Без него сервер работает полностью, но AI-функции недоступны. Подробно — в разделе AI-стек.

priority_highТребования к хосту

AI-стек рекомендуется размещать на отдельном хосте (не там, где Master) — LLM-инференс потребляет много CPU/RAM. Минимум: 4 vCPU / 8 ГБ RAM. С GPU (NVIDIA) инференс работает значительно быстрее — для GPU нужен установленный nvidia-container-toolkit. Порты 11434 (Ollama) и 18789 (OpenClaw) должны быть доступны с Master.

Что входит в AI-стек

Компонент Контейнер Порт Назначение
Ollama lsus-ollama 11434 LLM-движок: локальный инференс моделей (без обращения в интернет)
OpenClaw lsus-openclaw 18789 Агент-диспетчер: OpenAI-совместимый шлюз, навыки LSUS

Шаг 1. Установить пакеты образов

Установка — через тот же инсталлятор install-lsus-docker-rpm.sh с ролью ollama, openclaw или ai-all (оба сразу):

# оба компонента AI-стека одной командой
sudo bash demo-infra/scripts/install-lsus-docker-rpm.sh ai-all

# или по отдельности
sudo bash demo-infra/scripts/install-lsus-docker-rpm.sh ollama
sudo bash demo-infra/scripts/install-lsus-docker-rpm.sh openclaw

При установке из локального каталога пакетов — явно:

# Astra / Debian / Ubuntu
sudo apt install ./lsus-image-ollama_<версия>_all.deb \
                 ./lsus-image-openclaw_<версия>_all.deb

# РЕД ОС / RHEL
sudo dnf install ./lsus-image-ollama-<версия>-1.noarch.rpm \
                 ./lsus-image-openclaw-<версия>-1.noarch.rpm

Шаг 2. Настроить подключение к Master

Инсталлятор создаёт файлы ollama.env и openclaw.env в /opt/lsus-docker/. Проверьте и при необходимости укажите адрес Master:

# /opt/lsus-docker/openclaw.env
LSUS_API_URL=https://master.example.com
LSUS_MACHINE_TOKEN=<токен_Machine_API_из_UI_Master>

Токен LSUS_MACHINE_TOKEN выдаётся в UI Master: Администрирование → Настройки → AI-ассистент.

Шаг 3. Запустить и проверить

cd /opt/lsus-docker
# запустить AI-профили
sudo docker compose -f docker-compose.yml --env-file .env --profile ollama up -d
sudo docker compose -f docker-compose.yml --env-file .env --profile openclaw up -d

# проверить статус
sudo docker compose -f docker-compose.yml --env-file .env --profile ollama ps
sudo docker compose -f docker-compose.yml --env-file .env --profile openclaw ps

Ollama готов к работе, когда healthcheck покажет Up (healthy):

sudo docker ps --filter name=lsus-ollama --format '{{.Status}}'

Шаг 4. Настроить Master

В UI Master: Администрирование → Настройки → AI-ассистент:

  • Ollama endpointhttp://<AI-хост>:11434 (если AI-стек на том же хосте, что Master — http://127.0.0.1:11434);
  • OpenClaw endpointhttp://<AI-хост>:18789 и токен шлюза из OPENCLAW_GATEWAY_TOKEN.

Загрузка моделей

Ollama поставляется без моделей. Загрузите нужную модель:

# лёгкая модель (быстрее, менее точная)
sudo docker exec lsus-ollama ollama pull qwen3:1.7b

# основная модель (точнее, требует больше ресурсов)
sudo docker exec lsus-ollama ollama pull qwen3:8b

Также модели можно загрузить через UI Master (импорт .tar.gz-архива).

lightbulbGPU-ускорение

По умолчанию Ollama работает на CPU. Для GPU добавьте override-файл docker-compose.gpu.yml (требуется nvidia-container-toolkit на хосте):

wzxhzdk:32


Настройка HTTPS

По умолчанию роли используют самоподписанные сертификаты. Для продуктивного контура замените их на корпоративные.

Через веб-интерфейс Master

  1. Перейдите: Администрирование → Настройки → Сервер.
  2. В блоке «SSL-сертификат»: нажмите «Сгенерировать» для нового самоподписанного, либо заполните «Альтернативные имена (SAN)»«Сформировать CSR» → передайте запрос в свой CA → загрузите подписанный сертификат через «Установить».

Ручная замена сертификата

# скопировать сертификат и ключ в контейнер
docker cp fullchain.pem lsus-master:/app/data/certs/server.crt
docker cp privkey.pem lsus-master:/app/data/certs/server.key

# перезапустить профиль
cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile master restart

Проверка после замены:

curl -sk https://localhost/api/v1/health

infoИмя в сертификате

Сертификат должен быть выдован на имя, которое клиенты используют для подключения (обычно совпадает с FQDN в DNS SRV и LSUS_HOSTNAME). При несовпадении имени клиенты получат ошибку проверки TLS.

Вынос данных на отдельный диск

Все команды ниже выполняются из каталога /opt/lsus-docker/ — там, куда ролевой пакет положил docker-compose.yml, .env и скрипты профиля:

cd /opt/lsus-docker

Каталоги repos, kb-cache, storage растут быстрее всего. Вынести их на отдельный том можно двумя способами.

Способ 1. Весь DATA_DIR целиком (рекомендуется)

Самый чистый вариант — задать DATA_DIR в .env до первого старта контейнеров. Контейнеры при запуске сами создадут внутри новое дерево каталогов.

# /opt/lsus-docker/.env
DATA_DIR=/srv/lsus-data

Тогда роль использует /srv/lsus-data/postgres, /srv/lsus-data/master/repos, /srv/lsus-data/master/kb-cache, /srv/lsus-data/master/kb-storages, /srv/lsus-data/master/data, /srv/lsus-data/master/log и аналогично для Site/Edge.

Способ 2. Только конкретный подкаталог

Можно смонтировать отдельный диск напрямую в подкаталог существующего DATA_DIR (до начала наполнения):

Роль Подкаталоги под вынос
Master /opt/lsus-docker/data/master/repos, /opt/lsus-docker/data/master/kb-cache, /opt/lsus-docker/data/master/kb-storages
Site /opt/lsus-docker/data/site/repos
Edge /opt/lsus-docker/data/edge/storage

Контейнеры при старте создают недостающие точки монтирования автоматически (mkdir -p в entrypoint), поэтому пустой смонтированный том будет сразу готов к работе.

Перенос уже заполненного DATA_DIR на новый путь

warningДанные не переезжают автоматически

Если просто поменять DATA_DIR в .env и перезапустить контейнеры, новое дерево каталогов будет создано пустым, а все накопленные данные (БД PostgreSQL, репозитории, KB-кеш, сертификаты, журналы) останутся в старом DATA_DIR и станут недоступны. Для PostgreSQL это эквивалентно полной потере базы: система стартует с пустой БД.

Правильная процедура переноса заполненного DATA_DIR (пример для Master; для Site/Edge замените --profile master на site или edge):

cd /opt/lsus-docker

# 1. Остановить контейнеры роли
sudo docker compose -f docker-compose.yml --env-file .env --profile master down

# 2. Перенести данные на новый путь (с сохранением прав и атрибутов)
sudo rsync -aHAX --info=progress2 /opt/lsus-docker/data/ /srv/lsus-data/

# 3. Сменить DATA_DIR в .env
sudo sed -i 's|^DATA_DIR=.*|DATA_DIR=/srv/lsus-data|' /opt/lsus-docker/.env

# 4. Поднять контейнеры и проверить
sudo docker compose -f docker-compose.yml --env-file .env --profile master up -d --force-recreate
curl -k https://master.example.com:8443/api/v1/health

lightbulbСовет

После успешной проверки и подтверждения, что всё работает из нового расположения, старый /opt/lsus-docker/data/ можно удалить (или оставить как холодную резервную копию на время обкатки).

infoЧто именно создает entrypoint на пустом томе

Каждый контейнер LSUS при старте выполняет mkdir -p для нужных путей внутри контейнера (/var/lib/lsus-server/repos, /var/lib/lsus-server/kb-cache, /var/lib/lsus-server/kb-storages, /app/data, /var/log/lsus-server для Master; /var/lib/lsus-site/repos для Site; /var/lib/lsus-edge/storage для Edge). Благодаря bind-mount в docker-compose.yml эти каталоги оказываются созданы и на хосте внутри DATA_DIR. Поэтому «пустой новый том» — не проблема; проблема только в потере данных при переносе.

Перенос отдельного подкаталога

Если нужно перенести на отдельный диск только один подкаталог (repos, kb-cache, kb-storages, storage), а остальное оставить в /opt/lsus-docker/data/ — используйте mount --bind. Ниже — три готовых сценария.

Master: перенос repos

cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile master down

# Перенести содержимое на новый диск
sudo rsync -aHAX --info=progress2 data/master/repos/ /srv/lsus-repos/

# Заменить старый каталог точкой монтирования
sudo mv data/master/repos data/master/repos.old
sudo mkdir data/master/repos
sudo mount --bind /srv/lsus-repos data/master/repos

# Сохранить bind-mount в /etc/fstab (переживёт перезагрузку)
echo '/srv/lsus-repos /opt/lsus-docker/data/master/repos none bind 0 0' | sudo tee -a /etc/fstab

sudo docker compose -f docker-compose.yml --env-file .env --profile master up -d --force-recreate

Аналогично переносятся data/master/kb-cache и data/master/kb-storages — замените имя подкаталога и путь назначения.

Site: перенос repos

cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile site down

sudo rsync -aHAX --info=progress2 data/site/repos/ /srv/lsus-site-repos/
sudo mv data/site/repos data/site/repos.old
sudo mkdir data/site/repos
sudo mount --bind /srv/lsus-site-repos data/site/repos
echo '/srv/lsus-site-repos /opt/lsus-docker/data/site/repos none bind 0 0' | sudo tee -a /etc/fstab

sudo docker compose -f docker-compose.yml --env-file .env --profile site up -d --force-recreate

Edge: перенос storage

cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile edge down

sudo rsync -aHAX --info=progress2 data/edge/storage/ /srv/lsus-edge-storage/
sudo mv data/edge/storage data/edge/storage.old
sudo mkdir data/edge/storage
sudo mount --bind /srv/lsus-edge-storage data/edge/storage
echo '/srv/lsus-edge-storage /opt/lsus-docker/data/edge/storage none bind 0 0' | sudo tee -a /etc/fstab

sudo docker compose -f docker-compose.yml --env-file .env --profile edge up -d --force-recreate

lightbulbПроверка после переноса

После compose up -d --force-recreate дождитесь статуса Up (healthy) (docker compose -f docker-compose.yml --env-file .env --profile <роль> ps) и сверьте health-эндпоинт роли: должен вернуть {"status":"ok","role":"<роль>"}. Старые каталоги <…>.old можно удалить после обкатки.

Что проверить после установки всех ролей

Установка считается успешной, если:

  • [ ] Master открывается по HTTPS, отвечает {"status":"ok","role":"master"}, позволяет войти администратору.
  • [ ] Site открывается по HTTPS, отвечает {"status":"ok","role":"site"}, регистрируется на Master и остаётся одобренным.
  • [ ] Edge открывается по HTTPS, отвечает {"status":"ok","role":"edge"}, доступен из Master по согласованному URL.
  • [ ] PXE (если развёрнут) отвечает {"status":"ok","role":"pxe"} по HTTPS и отдаёт boot.ipxe по HTTP :80; на Master точка в статусе approved.
  • [ ] В /opt/lsus-docker/.env отражены согласованные пароли, порты и пути.
  • [ ] Все контейнеры профиля в статусе Up (healthy) (docker compose ps).
  • [ ] Дефолтные пароли веб-интерфейсов сменены.
  • [ ] Каталоги репозиториев и хранилищ расположены на выбранных дисках.

Связанные страницы