Развёртывание серверов LSUS
Главный документ по установке серверных ролей LSUS (Master, Site, Edge, PXE) через пакеты ОС. Здесь — пошаговые инструкции для каждой роли: установка пакетов, проверка health, регистрация ролевых связей.
Единственный поддерживаемый способ развёртывания серверов LSUS — Docker-контейнеры. Пакеты ОС LSUS устанавливают Docker, загружают образы и запускают контейнеры — администратору не нужно вручную устанавливать PostgreSQL, nginx или приложение. Развёртывание серверных ролей на хост без Docker не поддерживается. Клиенты (lsus-client) устанавливаются на хост управляемых машин напрямую — к ним это не относится.
С чем ознакомиться до установки: Требования и подготовка (ОС, ресурсы, firewall, DNS SRV). Полный справочник портов, контейнеров и переменных окружения — в Справочнике. Краткая шпаргалка без объяснений — в Быстром старте.
Как устроена установка¶
LSUS разворачивается через системные пакеты (.deb / .rpm), которые устанавливают Docker, загружают образы и запускают контейнеры:
- Пакеты 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) ставятся штатным менеджером ОС. Достаточно указать один ролевой пакет — остальные пакетный менеджер подставит по зависимостям. - При первой установке ролевой пакет автоматически создаёт
/opt/lsus-docker/.env, генерирует пароли БД, создаёт дерево каталогов данных, загружает образы и запускает контейнеры нужного профиля. - Если
.envуже существует (в т.ч. после обновления), пакет не перезаписывает его — использует существующие значения. При обновлении обновляется толькоLSUS_VERSIONи добавляются недостающие безопасные defaults. - На одном хосте можно развернуть только одну серверную роль — пакеты ролей конфликтуют друг с другом.
Рекомендуемая схема внедрения
Для продуктивного контура разносите роли по разным серверам: Master — центр управления, Site — сервер площадки, Edge — пограничный сервер в DMZ, PXE — точка сетевой установки ОС (свой хост, ≥100 ГБ). Так сбой или переполнение диска на одной роли не останавливает остальные, проще ограничивать сетевой доступ и планировать резервное копирование. Совмещение master+edge на одном узле допустимо для стенда; роль pxe с другими ролями не сочетается.
Порты при первой установке¶
Порты задаются переменными окружения хоста только при первой установке (когда создаётся .env). Позже порты меняются вручную в .env.
Дефолтные порты
При ручном развёртывании из .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) приведёт к ошибке на этапе настройки пакета — повторите установку с допустимым портом.
Что нужно решить до установки¶
- FQDN и IP для каждого узла роли.
- Диски: где будут PostgreSQL, репозитории (
repos), KB-кэш, хранилище Edge, журналы — см. дисковое планирование. - Сертификаты: корпоративные или временные самоподписанные.
- Порты: задать через
LSUS_INSTALL_*до первой установки, либо позже в.env. - 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.
Если 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, без БД) | ✅ |
Порядок установки при ручной установке из локального каталога
Если пакеты ставятся командой apt install ./… / dnf install ./… из локального каталога (без репозитория), зависимости автоматически не разрешаются — установите пакеты образов явно в указанном порядке:
lsus-image-postgres— PostgreSQL (общая БД для всех ролей);lsus-image-pgbouncer— только для Master и Site (Edge без него);lsus-image-nginx— TLS-фронтенд;lsus-image-<роль>— образ приложения;lsus-<роль>— ролевой пакет (формирует.env, запускает контейнеры).
При установке из репозитория ОС с корректными Depends/Requires достаточно одного lsus-<роль> — остальное пакетный менеджер поставит сам.
PgBouncer нужен только Master и Site
Веб-процессы Master и Site держат много короткоживущих соединений к PostgreSQL при обработке API-запросов — их мультиплексирует PgBouncer. У Edge трафик к БД минимален (один контейнер lsus-edge, никаких всплесков от heartbeat тысяч клиентов), поэтому пул ему не нужен и lsus-image-pgbouncer от lsus-edge не зависит.
Состав пакетов для Альт Сервера
Линейка APT-RPM (суффикс -alt1) включает только роли master, site, edge и их образы. Роли PXE и AI-стек (Ollama, OpenClaw) в APT-RPM не поставляются. Порядок установки и стиль команд для Альта — в разделе Установка на Альт Сервер.
Пароли по умолчанию для веб-интерфейсов¶
При первой генерации .env (или если переменные не заданы) для входа в админки используются пароли ниже.
Смените немедленно
Эти пароли известны (зафиксированы в шаблонах пакетов и 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.
Только apt-get
Устанавливайте и обновляйте пакеты LSUS командой apt-get install. Команды rpm -i, rpm -Uvh и, тем более, rpm -i --nodeps обходят разрешение зависимостей: Docker не будет установлен из p11, а скрипт настройки ролевого пакета не найдёт docker-compose и прервёт установку. Обёртка apt (без -get) также не используется.
Docker — только из 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 и пересозданием контейнеров.
Веб-интерфейс — с рабочей станции¶
Не устанавливайте графику на Альт Сервер
Альт Сервер — серверная ОС без графической оболочки, и ставить её ради админки 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
Что считать успехом
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¶
- На стороне Site откройте админку
https://site.example.com. - Нажмите «Зарегистрироваться на Master», укажите URL Master.
- На стороне Master перейдите: Администрирование → Сайты.
- Найдите Site в списке (или в нераспределённых хостах) и одобрите регистрацию.
- После одобрения Site получит доступ к репозиториям и настройкам.
Примечание
Если 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
PgBouncer для 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 шестнадцатеричных символов, показывается только один раз при создании.
Сохраните ключ сразу
Сырой API-ключ Edge выводится только один раз. В базе хранится только его SHA-256-хэш — восстановить сырой ключ позже нельзя. Если ключ утерян, придётся создать новый.
Получить ключ можно тремя способами:
Способ A — из лога при первом старте. Если при запуске Edge таблица API-ключей пуста, автоматически создаётся ключ default-admin (роль admin), и сырой ключ печатается в лог контейнера:
sudo docker logs lsus-edge 2>&1 | grep -A1 "API-ключ admin по умолчанию"
Способ B — через веб-интерфейс Edge.
- Войдите в UI Edge:
https://edge.example.comкакadminс паролем изEDGE_UI_PASSWORD. - Откройте раздел «API-ключи» (доступен только роли
admin). - Нажмите «Создать ключ», задайте имя и роль
admin. - Скопируйте показанный ключ — он отображается только один раз.
Способ 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¶
- На стороне Master перейдите: Администрирование → Пограничный сервер.
- Нажмите «+ Добавить edge-сервер».
- Заполните форму:
- Название — произвольное (например, «DMZ Edge 1»);
- URL —https://edge.example.com;
- API-ключ — ключ, полученный на шаге 4;
- Активен — включить. - Нажмите «Сохранить».
После добавления Edge появится в списке серверов. Можно настраивать загрузки и синхронизацию через Edge.
Роли 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 модуля.
TLS точки и браузер
Чанки ISO идут браузер → PXE, минуя Master. Браузер должен доверять сертификату точки (до PKI — self-signed вручную). Иначе загрузка ISO молча падает.
Установка AI-стека (Ollama и OpenClaw)¶
AI-стек (локальный LLM-инференс) — опциональный компонент LSUS. Он обеспечивает функции AI-ассистента: генерацию сценариев конфигураций, анализ прогонов, ответы на вопросы администратора. Без него сервер работает полностью, но AI-функции недоступны. Подробно — в разделе AI-стек.
Требования к хосту
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 endpoint —
http://<AI-хост>:11434(если AI-стек на том же хосте, что Master —http://127.0.0.1:11434); - OpenClaw endpoint —
http://<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-архива).
GPU-ускорение
По умолчанию Ollama работает на CPU. Для GPU добавьте override-файл docker-compose.gpu.yml (требуется nvidia-container-toolkit на хосте):
wzxhzdk:32
Настройка HTTPS¶
По умолчанию роли используют самоподписанные сертификаты. Для продуктивного контура замените их на корпоративные.
Через веб-интерфейс Master¶
- Перейдите: Администрирование → Настройки → Сервер.
- В блоке «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
Имя в сертификате
Сертификат должен быть выдован на имя, которое клиенты используют для подключения (обычно совпадает с 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 на новый путь¶
Данные не переезжают автоматически
Если просто поменять 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
Совет
После успешной проверки и подтверждения, что всё работает из нового расположения, старый /opt/lsus-docker/data/ можно удалить (или оставить как холодную резервную копию на время обкатки).
Что именно создает 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
Проверка после переноса
После 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). - [ ] Дефолтные пароли веб-интерфейсов сменены.
- [ ] Каталоги репозиториев и хранилищ расположены на выбранных дисках.
Связанные страницы¶
- Обзор системы — архитектура ролей и топологии.
- PXE — вкладка Master, proxyDHCP, domain join.
- Клиент LSUS — установка агентов на управляемые хосты.
- Обновление системы — процедура обновления компонентов.
- Docker и образы — состав контейнеров и пакетов.