Требования и подготовка к установке
Эта страница — чек-лист того, что нужно подготовить до запуска установки серверных ролей 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) |
Примечание
Пакеты ролей различают 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ролевого пакета сам перебирает эти три варианта и использует первый доступный.
Совет
Проверьте, что Compose доступен, одной из команд (в зависимости от ОС сработает нужная):
wzxhzdk:0
Альт Сервер: работа от root
В ОС Альт не используется sudo — административные команды выполняются от root в сеансе su - (обязательно с минусом). Порядок установки и стиль команд для Альта — в разделе Установка на Альт Сервер.
Ресурсы хоста по ролям¶
LSUS рассчитан на управление тысячами клиентских хостов, поэтому требования к памяти и диску зависят от ожидаемого количества клиентов и объёма репозиториев.
Оперативная память и CPU¶
| Роль | Минимум | Рекомендуется | Обоснование |
|---|---|---|---|
| Master | 4 vCPU / 8 ГБ RAM | 8 vCPU / 16–32 ГБ RAM | Основная нагрузка: веб-админка, приём heartbeats от тысяч клиентов, БД, кеш KB. Плюс ~256 МБ под Redis |
| 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 | Фоновый агент, минимум ресурсов |
Как 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.
Совет
- Под систему и БД используйте один диск или один LVM-том.
- Под
repos,kb-cacheиstorageиспользуйте отдельный диск или отдельный том — это упростит расширение и резервное копирование. - Закладывайте запас минимум в 2 раза к начальному расчёту.
Данные LSUS по умолчанию хранятся в /opt/lsus-docker/data/ (см. Справочник переменных, переменная DATA_DIR). Чтобы вынести репозитории на отдельный диск, смонтируйте его в подкаталог DATA_DIR или задайте DATA_DIR=/srv/lsus-data в файле .env перед первой установкой.
Параметры ядра хоста под нагрузку контейнеров¶
Контейнеры LSUS запускаются с network_mode: host (см. Справочник), поэтому сетевой стек ядра хоста напрямую обслуживает трафик контейнеров. При управлении тысячами клиентов сервер обрабатывает большое количество одновременных HTTPS-соединений, и параметры ядра по умолчанию (особенно somaxconn и диапазон портов) могут оказаться узким местом.
Предупреждение
Если ожидаемое количество клиентов превышает несколько сотен, обязательно настройте параметры ниже. При их отсутствии возможны отказы соединений (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
Почему именно эти значения
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 |
Нестандартные порты
При ручном развёртывании из .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 |
network_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
Клиентам не нужен интернет
Клиентские хосты требуют только исходящего HTTPS до сервера LSUS (Master или Site). Прямой доступ в интернет клиентам не нужен — пакеты тянутся с /repos сервера LSUS. Edge выступает точкой выхода в интернет за репозиториями для Master, но клиенты к Edge напрямую не обращаются.
Подготовка DNS SRV для автообнаружения клиентов¶
Для корпоративного развёртывания — обязательный шаг
Если в инфраструктуре есть корпоративный DNS-сервер (AD DNS, FreeIPA, BIND, dnsmasq) — настройте SRV-запись до массовой установки агентов. Без неё администратору придётся вручную указывать server_url на каждой машине, а при нескольких Master/Site — ещё и выбирать ближайший. SRV-запись решает обе задачи автоматически.
Как это работает¶
Клиент LSUS при первом запуске автоматически определяет домен хоста по его FQDN и запрашивает у DNS записи _lsus._tcp.<домен>. Если машина называется ws-007.example.com, домен для поиска будет example.com — никаких ручных настроек не требуется.
Если FQDN машины не совпадает с доменом, в котором опубликована SRV (например, машина в дочернем домене subdiv.example.com, а SRV — в корневом example.com), задайте домен явно в /etc/lsus-client/lsus-client-common.conf:
[server]
server_discovery_domain = example.com
Формат записи¶
_lsus._tcp.example.com. 3600 IN SRV 10 5 443 master.example.com.
| Поле | Значение |
|---|---|
_lsus._tcp |
Имя сервиса (фиксировано, запрашивается клиентом именно в таком виде) |
<домен> |
Домен клиента (берётся из FQDN автоматически или задаётся через server_discovery_domain) |
10 |
приоритет (priority) — меньше значит выше |
5 |
вес (weight) — распределение внутри одного приоритета |
443 |
порт сервера (для Master/Site; должен совпадать с MASTER_PORT/SITE_PORT в .env) |
master.example.com |
FQDN сервера LSUS |
Несколько серверов — балансировка и выбор ближайшего¶
Если в инфраструктуре несколько серверов LSUS (Master + несколько Site), добавьте SRV-записи для каждого. Клиент опрашивает каждый endpoint запросом GET /api/v1/health по HTTPS (таймаут 2,5 с), измеряет RTT и выбирает сервер с минимальным откликом. Если все зонды недоступны — выбирает по приоритету и весу (стандартная логика DNS SRV).
_lsus._tcp.example.com. 3600 IN SRV 10 5 443 master.example.com.
_lsus._tcp.example.com. 3600 IN SRV 20 5 443 site-msk.example.com.
_lsus._tcp.example.com. 3600 IN SRV 20 5 443 site-nsk.example.com.
Здесь Master имеет priority=10 (наивысший) — клиент предпочтёт его, если только Site не отвечает существенно быстрее. Две записи priority=20 дают равный приоритет обоим Site; окончательный выбор между ними идёт по весу и RTT.
Порт в SRV должен совпадать с `.env`
Порт в SRV-записи обязан совпадать с MASTER_PORT/SITE_PORT/EDGE_PORT в /opt/lsus-docker/.env. По умолчанию это 443 для всех ролей — указывайте в SRV именно его. Если Master или Site слушают на нестандартном порту (например, на 9443), укажите в SRV его.
Зависимость клиента от dnspython¶
Для SRV-обнаружения на клиенте требуется пакет python3-dnspython:
| ОС | Способ установки |
|---|---|
| Astra / Debian / Ubuntu | sudo apt install python3-dnspython (ставится автоматически с lsus-client через Recommends) |
| ALT Linux | входит в зависимости — ставится автоматически |
| РЕД ОС / RHEL / CentOS | sudo dnf install python3-dnspython |
Без этого пакета клиент напишет в лог «Модуль dnspython не установлен, DNS SRV недоступен» и будет использовать server_url из конфига. Подробнее — в Клиент LSUS.
Приоритет источников URL на клиенте¶
На стороне клиента источник адреса сервера определяется в таком порядке:
| Приоритет | Источник | Когда срабатывает |
|---|---|---|
| 0 | URL, назначенный Master-сервером (assigned_server_url) |
Master уже один раз переадресовал клиента на конкретный Site |
| 1 | DNS SRV _lsus._tcp.<домен> |
Основной способ для нового хоста |
| 2 | server_url из /etc/lsus-client/lsus-client-common.conf |
Если SRV не настроен или недоступен |
Если SRV не настроен и server_url не задан — клиент напишет в журнал ошибку и подскажет, что нужно сделать.
Что делать, если DNS-сервера нет¶
В полностью изолированных средах без DNS SRV не настроить. Тогда:
- поднимите минимальный 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 SRV-запись
_lsus._tcp.<домен>для автообнаружения клиентов. Обязательный шаг для корпоративного развёртывания.