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

Требования и подготовка к установке

Эта страница — чек-лист того, что нужно подготовить до запуска установки серверных ролей LSUS: поддерживаемые ОС, ресурсы хоста, дисковое планирование, параметры ядра, firewall и DNS для автообнаружения клиентов.

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

Подробная установка по шагам — в разделе Развёртывание серверов. Полный справочник портов и переменных окружения — в Справочнике портов, контейнеров и переменных.

Поддерживаемые операционные системы#

Серверные роли (Master, Site, Edge, PXE) поставляются пакетами под конкретный дистрибутив ОС — пакет устанавливает Docker и запускает контейнеры роли. На одном хосте можно развернуть только одну серверную роль — пакеты ролей конфликтуют друг с другом (Conflicts со всеми ролями, включая lsus-pxe). Исключение инсталлятора — существующее сочетание master+edge; роль pxe к нему не добавляется и всегда стоит на своём хосте.

ОС Версия Пакет Docker Пакет Compose Суффикс пакета
Astra Linux Special Edition 1.7 / 1.8 docker.io docker-compose-v2 _astra
Debian 13 (Trixie) docker.io docker-compose _debian
Ubuntu 24.04 и новее docker.io docker-compose-v2 _ubuntu
РЕД ОС / RHEL-совместимые 7.3, 8 docker-ce docker-compose .rpm (dnf)
Альт Сервер 11 (p11) docker-engine docker-compose -alt1.noarch.rpm (apt-rpm)

infoПримечание

Пакеты ролей различают Astra, Debian и Ubuntu по суффиксу (_astra, _debian, _ubuntu). Для РЕД ОС — общий RPM-пакет (суффикс -1), для Альт Сервера — отдельная линейка APT-RPM (суффикс -alt1), зависящая от docker-engine из p11. На клиентской стороне список поддерживаемых ОС шире — в том числе Oracle Linux 8/9/10 (отдельное семейство, пресеты ОС и зеркала на Edge) — см. Клиент LSUS.

Docker и Docker Compose#

Единственный поддерживаемый способ развёртывания серверных ролей LSUS — Docker-контейнеры через Docker Compose. Установить серверные компоненты (приложение, PostgreSQL, nginx, PgBouncer) напрямую в хост-систему нельзя — они всегда запускаются в контейнерах из образов, поставляемых пакетами LSUS. Развёртывание на хост (bare-metal) не поддерживается.

Docker и Docker Compose ставятся автоматически как зависимости ролевого пакета LSUS (lsus-master, lsus-site, lsus-edge) — отдельно их устанавливать не нужно, если хост имеет доступ к репозиториям ОС.

Требования к версиям:

  • Docker Engine — docker.io (Astra/Debian/Ubuntu), docker-ce (РЕД ОС) или docker-engine (Альт Сервер — только из штатного репозитория p11, без docker.com). Конкретная минимальная версия не зафиксирована — используйте версию из штатного репозитория вашей ОС.
  • Docker Compose — любой из вариантов:
  • docker-compose-v2 (Astra, Ubuntu) — вызов через плагин: docker compose …;
  • docker compose (встроенная команда Docker Engine);
  • docker-compose (Debian, РЕД ОС, Альт) — standalone-бинарь: docker-compose ….
  • Скрипт postinst ролевого пакета сам перебирает эти три варианта и использует первый доступный.

lightbulbСовет

Проверьте, что Compose доступен, одной из команд (в зависимости от ОС сработает нужная):

docker compose version      # плагин v2 (Astra, Ubuntu)
docker-compose version      # standalone (Debian, РЕД ОС, Альт)

infoАльт Сервер: работа от root

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

Ресурсы хоста по ролям#

LSUS рассчитан на управление тысячами клиентских хостов, поэтому требования к памяти и диску зависят от ожидаемого количества клиентов и объёма репозиториев.

Оперативная память и CPU#

Роль Минимум Рекомендуется Обоснование
Master 4 vCPU / 8 ГБ RAM 8 vCPU / 16–32 ГБ RAM Основная нагрузка: веб-админка, приём heartbeats от тысяч клиентов, БД, кеш KB. Плюс ~256 МБ под Redis и до ~512 МБ под раздатчик репозиториев (в простое легче)
Site 2 vCPU / 4 ГБ RAM 4 vCPU / 8–16 ГБ RAM Прокси для своего пула клиентов, локальная копия репозиториев. Плюс ~256 МБ под Redis
Edge 2 vCPU / 4 ГБ RAM 4 vCPU / 8 ГБ RAM Приём/раздача файлов, зеркала репозиториев в DMZ. Плюс ~256 МБ под Redis
PXE 2 vCPU / 4 ГБ RAM 4 vCPU / 8 ГБ RAM proxyDHCP/TFTP, extract ISO, HTTP boot. Свой хост, без PostgreSQL
Ollama (AI) 4 vCPU / 8 ГБ RAM 8 vCPU / 16–32 ГБ RAM + GPU Локальный LLM-инференс. Без GPU работает на CPU (медленнее)
OpenClaw (AI) 2 vCPU / 2 ГБ RAM 2 vCPU / 4 ГБ RAM Агент-диспетчер, мало ресурсов — основную нагрузку несёт Ollama
Клиент 1 vCPU / 1 ГБ RAM 1 vCPU / 2 ГБ RAM Фоновый агент, минимум ресурсов

infoКак LSUS использует память

PostgreSQL в контейнере настраивается автоматически при старте: под операционную систему резервируется 40% RAM (LSUS_PG_MEMORY_RESERVE_PERCENT=40), остальное распределяется по параметрам shared_buffers, effective_cache_size, work_mem, max_connections. Поэтому общий объём памяти хоста — ключевой параметр для производительности Master. При нехватке памяти параметры PG можно переопределить через переменные LSUS_PG_* (см. Справочник переменных).

Дисковое пространство#

Роль Система, БД, журналы Репозитории / хранилища
Master 120–200 ГБ от 500 ГБ, чаще 1–3 ТБ
Site 80–150 ГБ от 300 ГБ, чаще 0,5–2 ТБ
Edge 60–120 ГБ от 200 ГБ, чаще 0,5–2 ТБ
PXE 20–40 ГБ (система и журналы) от 100 ГБ store: каждый ISO + extract 4–8 ГБ ×2, плюс remaster
Ollama (AI) 20–50 ГБ модели LLM: 1–5 ГБ на модель, закладывайте запас
OpenClaw (AI) 2–5 ГБ не требуется
Клиент 1–2 ГБ не требуется

Основной рост диска у серверных ролей дают каталоги repos (зеркала репозиториев пакетов) и kb-cache (кеш баз KB Windows). У AI-стека — модели Ollama в data/ai/ollama/.

Дисковое планирование (LVM)#

Данные контейнеров LSUS хранятся на хосте через bind-mount (см. Структуру каталогов). Поэтому дисковое планирование выполняется на хосте, где запущен Docker.

lightbulbСовет

  • Под систему и БД используйте один диск или один LVM-том.
  • Под repos, kb-cache и storage используйте отдельный диск или отдельный том — это упростит расширение и резервное копирование.
  • Закладывайте запас минимум в 2 раза к начальному расчёту.

Данные LSUS по умолчанию хранятся в /opt/lsus-docker/data/ (см. Справочник переменных, переменная DATA_DIR). DATA_DIR — корень всех данных, включая базу PostgreSQL, поэтому репозитории на отдельный диск выносят монтированием в подкаталог (repos, kb-cache, storage), не меняя DATA_DIR; смена всего DATA_DIR — отдельный сценарий «переезд всех данных вместе с базой». Порядок шагов — в разделе Вынос данных на отдельный диск.

Параметры ядра хоста под нагрузку контейнеров#

Контейнеры LSUS запускаются с network_mode: host (см. Справочник), поэтому сетевой стек ядра хоста напрямую обслуживает трафик контейнеров. При управлении тысячами клиентов сервер обрабатывает большое количество одновременных HTTPS-соединений, и параметры ядра по умолчанию (особенно somaxconn и диапазон портов) могут оказаться узким местом.

warningПредупреждение

Если ожидаемое количество клиентов превышает несколько сотен, обязательно настройте параметры ниже. При их отсутствии возможны отказы соединений (Too many open files, дропы SYN) под нагрузкой.

Минимальные параметры ядра хоста для серверных ролей:

# /etc/sysctl.d/99-lsus.conf
net.core.somaxconn = 8192
net.ipv4.tcp_max_syn_backlog = 8192
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
fs.file-max = 131072

Применить без перезагрузки:

sudo sysctl --system

infoПочему именно эти значения

  • somaxconn = 8192 — превышает backlog=4096 в nginx (иначе «лишние» соединения отклоняются ядром);
  • tcp_tw_reuse = 1 и широкий диапазон портов — снижают давление при частых коротких HTTPS-запросах от клиентов;
  • fs.file-max — контейнеры LSUS уже настроены на nofile 65536 (ulimits в compose), но лимит файловых дескрипторов хоста тоже должен это позволять.

Проверить текущие значения:

cat /proc/sys/net/core/somaxconn
cat /proc/sys/net/ipv4/ip_local_port_range
ulimit -n

Firewall и сетевые порты#

LSUS использует TCP (HTTPS) для админки и клиентов. Роль PXE дополнительно слушает UDP 67/69/4011 (proxyDHCP и TFTP). gRPC, Redis и другие протоколы в стеке отсутствуют.

Контейнеры запускаются в network_mode: host, поэтому порты открываются на firewall хоста, на котором запущен Docker.

Внешние порты (открыть на firewall хоста)#

Порт Назначение Откуда Куда
443 Master/Site HTTPS (админка + API + репозитории) — при ручном развёртывании из .env.example клиенты, администраторы Master или Site
8443 Master/Site HTTPS — по умолчанию в пакетах ОС клиенты, администраторы Master или Site
18880 HTTP /repos — по умолчанию в пакетах для Альт Сервера (обязателен для клиентов apt-rpm) клиенты Master или Site
443 / 8540 Edge HTTPS (единый порт: UI + API + файлы); 8540 — по умолчанию в пакетах ОС клиенты, Master → Edge Edge
443 PXE HTTPS (upload ISO, API точки) браузер админа, Master PXE
80 PXE HTTP boot (boot.ipxe, kernel, initrd, ks) устанавливаемые машины PXE
67/udp, 4011/udp, 69/udp PXE proxyDHCP + TFTP PXE-клиенты, DHCP relay PXE
11434 Ollama API (LLM-инференс) Master, OpenClaw Ollama
18789 OpenClaw (OpenAI-совместимый шлюз) Master OpenClaw

infoНестандартные порты

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

Межсерверные соединения#

Направление Порт Назначение
Site → Master 443 Регистрация, синхронизация (LSUS_MASTER_URL=https://master)
Edge → Master 443 Регистрация, синхронизация (через API-ключ Edge)
PXE → Master 443 Регистрация точки, heartbeat, progress установок
Клиент → Master/Site 443 Heartbeat, получение команд, скачивание пакетов с /repos

warningnetwork_mode: host

Все контейнеры LSUS запускаются в режиме network_mode: host — без проброса портов. Это значит, что контейнеры слушают порты прямо на сетевом интерфейсе хоста. Поэтому открывать на firewall нужно именно порты хоста (443), а внутренние порты (5432, 6432 и др.) слушаются только на 127.0.0.1 и наружу не торчат. Подробнее — в Справочнике портов.

Пример правил firewall (firewalld)#

# Master/Site: открыть 443 для клиентов и администраторов
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

# Edge: открыть 443
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

# PXE: HTTPS + HTTP boot + proxyDHCP/TFTP
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=67/udp
sudo firewall-cmd --permanent --add-port=69/udp
sudo firewall-cmd --permanent --add-port=4011/udp
sudo firewall-cmd --reload

На Альт Сервере команды выполняются от root (su -, без sudo) и порты берутся из дефолтов Альт-пакетов — Master/Site 8443 + HTTP /repos 18880, Edge 8540:

# Master/Site (Альт Сервер)
# firewall-cmd --permanent --add-port=8443/tcp
# firewall-cmd --permanent --add-port=18880/tcp
# firewall-cmd --reload

Пример правил (iptables / ufw)#

# ufw (Ubuntu/Debian)
sudo ufw allow 443/tcp

# iptables
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

infoКлиентам не нужен интернет

Клиентские хосты требуют только исходящего HTTPS до сервера LSUS (Master или Site). Прямой доступ в интернет клиентам не нужен — пакеты тянутся с /repos сервера LSUS. Edge выступает точкой выхода в интернет за репозиториями для Master, но клиенты к Edge напрямую не обращаются.

Подготовка DNS для автообнаружения клиентов#

infoДля корпоративного развёртывания — обязательный шаг

Если в инфраструктуре есть корпоративный DNS — опубликуйте записи до массовой установки агентов. Без них администратору придётся вручную указывать server_url на каждой машине. Рекомендуемый путь — TXT _lsus.<домен> (одна запись в зоне, без узла _tcp). SRV _lsus._tcp — запасной путь для зон, где _tcp создавать можно. На MS DNS запись SRV _lsus._tcp создаёт узел _tcp и может перекрыть _ldap / _kerberos.

Как это работает#

Клиент LSUS при первом запуске определяет домен хоста по FQDN и запрашивает TXT _lsus.<домен>. Если ни одна строка не подошла (нет записи или чужой cidr) — запрашивает SRV _lsus._tcp.<домен>. Если машина называется ws-007.example.com, домен будет example.com.

lightbulbКто ещё использует эти записи

Те же TXT/SRV-записи читают агент конфигураций (lsus-config-agent — если у него и у lsus-client не задан явный адрес) и Windows-агент. Одна запись в зоне обслуживает всех агентов LSUS на хосте.

Windows-агент определяет зону сам, как Linux, если в lsus-client.conf не задан ни ServerUrl, ни ServerDiscoveryDomain: он перебирает домен AD, суффикс FQDN, первичный DNS-суффикс и суффиксы адаптеров, поэтому запись находится и на хосте вне домена. Если задан ServerDiscoveryDomain, запрашивается только эта зона. Подробности и режимы — в Клиенте Windows.

Если FQDN не совпадает с зоной, в которой опубликованы записи, задайте домен явно:

[server]
server_discovery_domain = example.com

Отключить DNS-поиск (закрытый контур): dns_discovery = false.

TXT _lsus.<домен> (рекомендуется, в том числе для MS DNS)#

Несколько TXT на одном имени — по строке на площадку:

_lsus.example.com.  IN TXT  "v=lsus1;host=master.example.com;port=8443"
_lsus.example.com.  IN TXT  "v=lsus1;cidr=10.52.0.0/16;host=site-msk.example.com;port=8443;prio=10"
Поле Значение
v=lsus1 обязательная версия формата
host FQDN сервера LSUS (TLS проверяется на нём, не на _lsus)
port порт HTTPS API (должен совпадать с MASTER_PORT/SITE_PORT в .env)
cidr необязательно; несколько через запятую. Нет поля — запись для всех (Master)
prio меньше — выше; учитывается при равной длине префикса

Клиент оставляет строки, где хотя бы один его IPv4 входит в cidr (или cidr нет). Несколько подходящих: longest prefix, затем меньший prio, затем зонд GET /api/v1/health. Чужой cidr игнорируется. Куски одной TXT RR (лимит 255 байт) склеиваются.

Готовые строки для копирования в оснастку DNS — кнопка «Записи DNS» на вкладке подсетей в админке Master.

SRV _lsus._tcp (запас)#

Там, где узел _tcp создавать можно (BIND, FreeIPA, dnsmasq):

_lsus._tcp.example.com. 3600 IN SRV 10 5 8443 master.example.com.

Клиент опрашивает каждую цель GET /api/v1/health и выбирает минимальный RTT; если зонд недоступен — priority, подсеть, weight.

lightbulbПорт в DNS должен совпадать с `.env`

Порт в TXT/SRV обязан совпадать с MASTER_PORT/SITE_PORT/EDGE_PORT в /opt/lsus-docker/.env.

Зависимость клиента от dnspython#

python3-dnspython не обязателен: Linux-клиент запрашивает TXT/SRV встроенным UDP/TCP-резолвером. Пакет по-прежнему в Recommends (на ALT — в зависимостях) и используется, если установлен.

Приоритет источников URL на клиенте#

Приоритет Источник Когда срабатывает
0 URL, назначенный Master (assigned_server_url) Master уже переадресовал клиента на Site
1 DNS TXT _lsus.<домен> Рекомендуемый путь для нового хоста
2 DNS SRV _lsus._tcp.<домен> Если TXT нет или ни одна строка не подошла по cidr
3 server_url из /etc/lsus-client/lsus-client-common.conf Пилот, нет DNS

Если DNS не настроен и server_url не задан — клиент напишет в журнал ошибку.

Что делать, если DNS-сервера нет#

  • Поднимите минимальный DNS (например, dnsmasq на LSUS-сервере);
  • Или задавайте server_url в /etc/lsus-client/lsus-client-common.conf (вручную или через Ansible/Salt/ADMX).

Краткий чек-лист подготовки#

Перед установкой серверной роли убедитесь, что выполнено:

  • [ ] Выбрана ОС из таблицы поддерживаемых. Docker и Docker Compose ставить отдельно не нужно — пакет LSUS сам вытянет их как зависимости.
  • [ ] Хост соответствует требованиям по CPU/RAM для выбранной роли.
  • [ ] Подготовлен диск под систему/БД и отдельный том под repos/kb-cache (данные контейнеров хранятся на хосте через bind-mount).
  • [ ] Настроены параметры ядра хоста (sysctl) при ожидаемой нагрузке от сотен клиентов — контейнеры работают в network_mode: host и используют сетевой стек хоста.
  • [ ] На firewall хоста открыт порт 443 (или нестандартные порты, заданные в .env) — контейнеры слушают порты хоста.
  • [ ] Для роли PXE открыты TCP 80/443 и UDP 67/69/4011; диск store ≥100 ГБ; Secure Boot на целевых машинах выключен (MVP = iPXE).
  • [ ] Если планируется AI-стек — порты 11434 (Ollama) и 18789 (OpenClaw) открыты между AI-хостом и Master.
  • [ ] (При наличии DNS-сервера) создана DNS TXT-запись _lsus.<домен> (рекомендуется) или запасной SRV _lsus._tcp.<домен>. Обязательный шаг для корпоративного развёртывания.