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

Справочник портов, контейнеров и переменных

Единый источник правды по сетевым портам, Docker-контейнерам и переменным окружения серверных ролей LSUS и AI-стека. Остальные страницы ссылаются сюда и не дублируют эти данные.

Пошаговая установка — в разделе Развёртывание серверов. Требования к хосту и firewall — в Требованиях и подготовке. Подробно про AI-стек — в разделе AI-стек.

Сетевая модель#

warningnetwork_mode: host

Все контейнеры LSUS запускаются с network_mode: "host". Это значит:

  • Проброс портов (ports:) не используется — контейнеры слушают порты напрямую на сетевых интерфейсах хоста.
  • Внешние порты — 443 для всех ролей (админка, API и репозитории). Это значение по умолчанию в .env.example и в пакетах ОС LSUS.
  • Внутренние порты (5432, 6379, 6432, 6433, 18443, 18444, 18080, 18081, 18540, 18541) — слушаются только на 127.0.0.1 и наружу не доступны (PgBouncer и Redis привязаны к 127.0.0.1, приложение и nginx общаются через loopback).
  • Контейнер видит те же сетевые интерфейсы и резолвинг имён, что и хост (/etc/hosts и /etc/hostname хоста примонтированы read-only).

Все контейнеры используют общий лимит файловых дескрипторов:

ulimits:
  nofile:
    soft: 65536
    hard: 65536

Это защита от EMFILE (Too many open files) при тысячах одновременно подключённых клиентов.

Порты#

Внешние порты (публикуются на интерфейсах хоста)#

Порт Роль Назначение
443 Master, Site HTTPS (админка + API /api/v1 + репозитории /repos) — при ручном развёртывании из .env.example
8443 Master, Site HTTPS — по умолчанию в пакетах ОС при первой установке
443 / 8540 Edge HTTPS, единый порт (UI + API + файлы); 8540 — по умолчанию в пакетах ОС
443 PXE HTTPS админ-плоскость (upload ISO, API точки)
80 PXE Plain HTTP boot-артефакты (boot.ipxe, kernel, initrd, ks/preseed)
8080 Master, Site (Опционально) plain-HTTP для /repos — по умолчанию при ручном развёртывании из .env.example
18880 Master, Site plain-HTTP для /repos — по умолчанию в пакетах для Альт Сервера (APT-RPM); обязателен для клиентов apt-rpm
67/udp, 4011/udp PXE proxyDHCP (не DHCP-сервер парка)
69/udp PXE TFTP chainload iPXE
11434 Ollama (AI) API Ollama (LLM-инференс)
18789 OpenClaw (AI) OpenAI-совместимый шлюз агента OpenClaw
18445 Диагностика (необязательно) Веб-интерфейс модуля lsus-diag. В установку ролей не входит, слушает все интерфейсы хоста. Сам входит в админку и не меняет пароль администратора. Сессия на минуты или часы связывает клики, ответы, запросы в базе и ожидание в пуле.

infoРазделение трафика на Master/Site

По умолчанию Master и Site публикуют админку, API и репозитории на одном порту (443). При необходимости классы трафика можно разнести на разные порты через переменные LSUS_ADMIN_PORT / LSUS_API_PORT / LSUS_REPOS_PORT (например, админка на 443, репозитории на 8444). На порту админки /api и /repos закрываются; на порту API/репозиториев корневой запрос возвращает 404. Edge всегда использует единый порт.

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

Дефолт docker-compose.yml и .env.example (ручное развёртывание) — 443 для всех ролей. Пакеты ОС при первой установке пишут в .env: Master/Site — 8443, Edge — 8540; Альт-пакеты — дополнительно HTTP /repos 18880. Клиент при подключении без явного порта использует DEFAULT_SERVER_PORT = 8443. При любом нестандартном порте укажите его в URL клиенту (server_url) или в DNS TXT/SRV.

Внутренние порты (только 127.0.0.1, loopback)#

Порт Компонент Назначение
5432 PostgreSQL Основная БД (общая для всех ролей на хосте)
6379 Redis Общий кеш процессов приложения: лимиты входа, политики, глобальные настройки (без пароля, только loopback)
6432 PgBouncer (Master) Пул соединений веб-приложения к БД
6433 PgBouncer (Site) Пул соединений (отдельный порт, чтобы не конфликтовать при совмещении ролей)
18443 приложение (Master, Site) Внутренний plain-HTTP приложения (клиентский API), за nginx
18444 приложение (Master) Внутренний plain-HTTP админского пула (веб-интерфейс и админ-API), за nginx
18080 приложение (Master, Site) Внутренний plain-HTTP /repos пула приложения — точка отката при возврате с раздатчика; сложные запросы (прокси с Пограничного сервера, отсутствие файла) обрабатываются здесь
18081 раздатчик (Master, Site) Внутренний plain-HTTP lsus-repod — основная раздача локальных файлов /repos
18540 приложение (Edge) Внутренний plain-HTTP edge-app — точка отката на Edge
18541 раздатчик (Edge) Внутренний plain-HTTP lsus-edge-repod
18550 приложение (PXE) Внутренний plain-HTTP pxe-app, за nginx

Дефолтные порты ролей (для клиентов)#

Значения по умолчанию — из .env.example (ручное развёртывание) и из .env, создаваемого пакетами ОС при первой установке:

Роль Переменная Ручное развёртывание Пакеты ОС Пакеты для Альт Сервера
Master MASTER_PORT 443 8443 8443
Master MASTER_HTTP_PORT 8080 (опционально) — 18880
Site SITE_PORT 443 8443 8443
Site SITE_HTTP_PORT 8080 (опционально) — 18880
Edge EDGE_PORT 443 8540 8540
PXE PXE_PORT / PXE_HTTP_PORT 443 / 80 443 / 80 — (PXE в APT-RPM нет)
PostgreSQL PG_PORT 5432 5432 5432

infoСвои порты при необходимости

Если нужны нестандартные порты (например, чтобы освободить 443 для другого сервиса), задайте их переменными LSUS_INSTALL_MASTER_PORT, LSUS_INSTALL_SITE_PORT, LSUS_INSTALL_EDGE_PORT (и LSUS_INSTALL_MASTER_HTTP_PORT / LSUS_INSTALL_SITE_HTTP_PORT для /repos в Альт-пакетах) при первой установке или отредактируйте .env вручную и пересоздайте контейнеры.

TLS и nginx#

  • Протоколы: только TLS 1.2 и 1.3 (ssl_protocols TLSv1.2 TLSv1.3;).
  • HTTP/2: включён (http2 on;).
  • Сертификаты: при первом запуске при отсутствии сертификатов генерируются самоподписанные. Пути в контейнере — /app/data/certs/server.crt и server.key.
  • listen backlog: 4096 (LSUS_NGINX_LISTEN_BACKLOG).
  • worker_connections: 16384, worker_rlimit_nofile 65536.
  • Ограничение частоты API: limit_req zone=api rate=50r/s burst=100.

Контейнеры по ролям#

Роль Контейнеры
Master lsus-postgres, lsus-redis, lsus-pgbouncer, lsus-master, lsus-master-worker, lsus-master-replication, lsus-repod, lsus-nginx
Site lsus-postgres, lsus-redis, lsus-site-pgbouncer, lsus-site, lsus-site-replication, lsus-site-repod, lsus-site-nginx
Edge lsus-postgres, lsus-redis, lsus-edge, lsus-edge-repod, lsus-edge-nginx
PXE lsus-pxe, lsus-pxe-nginx (без PostgreSQL)
Диагностика (необяз.) lsus-diag — отдельный профиль, в роли не входит
Ollama (AI) lsus-ollama
OpenClaw (AI) lsus-openclaw

infoЗачем worker и replication у Master

lsus-master — основной веб-процесс (Flask/gunicorn), у него отключены фоновые задачи (LSUS_DISABLE_BACKGROUND_TASKS=1) и репликация (LSUS_DISABLE_REPLICATION=1). Фоновую работу делают отдельные контейнеры:
- lsus-master-worker — фоновые задачи (синхронизация OVAL, сбор пакетов, расписание);
- lsus-master-replication — приём репликаций от Site/Edge.

Worker и replication ходят в PostgreSQL напрямую (порт 5432), минуя PgBouncer, т.к. им нужны session-состояние и advisory locks, несовместимые с transaction-пулингом.

infoЧто делает раздатчик

lsus-repod / lsus-site-repod / lsus-edge-repod — раздатчик локальных файлов /repos (один образ на все роли). Он не ходит в базу данных: маршруты ему готовит фоновый процесс Master (снимок каталогов). По умолчанию nginx отдаёт /repos в раздатчик; что тот не обслуживает (проксирование с Пограничного сервера, отсутствующие файлы), уходит в прежний пул приложения. Откат — переменной LSUS_REPOS_BACKEND (см. ниже).

Карта образов#

Образ Базовый образ Назначение
lsus-postgres postgres:15-bookworm PostgreSQL 15
lsus-master Debian Bookworm Slim Приложение Master (Python 3.11)
lsus-site Debian Bookworm Slim Приложение Site (Python 3.11)
lsus-edge Debian Bookworm Slim Приложение Edge (Python 3.11)
lsus-pxe Debian Bookworm Slim Точка развёртывания ОС (dnsmasq proxyDHCP, store ISO)
lsus-redis redis:7-alpine Redis: общий кеш процессов (Master/Site/Edge)
lsus-pgbouncer — Пул соединений PostgreSQL
lsus-nginx — TLS-фронтенд (nginx)
lsus-repod Debian Bookworm Slim Раздатчик /repos (один образ для Master/Site/Edge, статический бинарник)
lsus-diag Debian Bookworm Slim Необязательный модуль диагностики (своя версия LSUS_DIAG_VERSION, веб-интерфейс на порту 18445)
lsus-ollama ollama/ollama:0.31.1 LLM-движок Ollama (локальный инференс моделей)
lsus-openclaw openclaw/openclaw Агент-диспетчер OpenClaw (OpenAI-совместимый шлюз)

Все образы имеют тег ${LSUS_VERSION} и pull_policy: never (берутся из загруженных локально, не из registry). AI-образы тегируются отдельной версией ${AI_VERSION} и запускаются через профили compose (--profile ollama, --profile openclaw). Состав пакетов внутри образов — см. Docker и образы.

Переменные окружения#

Переменные задаются в файле .env (каталог /opt/lsus-docker/). При обновлении пакетов существующий .env не перезаписывается — значения сохраняются.

lightbulbСовет

Переменные, помеченные как «только при первой установке» (префикс LSUS_INSTALL_), обрабатываются только при первом развёртывании. Изменить порт или пароль БД позже можно, отредактировав .env вручную и пересоздав контейнеры.

Базовые переменные (все роли)#

Переменная По умолчанию Назначение
LSUS_VERSION из VERSION Тег образов (например, 1.0.67)
DATA_DIR ./data Корень данных. Значение ./data относительно каталога compose (/opt/lsus-docker/), т.е. фактически /opt/lsus-docker/data. При установке через пакеты ОС путь именно такой.
POSTGRES_PASSWORD — Пароль суперпользователя PostgreSQL (генерируется случайно)
PG_PORT 5432 Порт PostgreSQL
LSUS_PG_MEMORY_RESERVE_PERCENT 40 Процент RAM, резервируемый под ОС (остальное — под PG)

Redis (общий кеш)#

Redis работает на каждой серверной роли (Master/Site/Edge) в контейнере lsus-redis, слушает только 127.0.0.1:6379 — без пароля и без персистентности (данные — только кеш, восстанавливать нечего). При недоступности Redis приложение продолжает работу с кешем внутри процесса.

Переменная По умолчанию Назначение
LSUS_REDIS_URL redis://127.0.0.1:6379/0 Адрес Redis для приложения
LSUS_REDIS_MAXMEMORY 256mb Лимит памяти Redis (политика noeviction)

PostgreSQL — автотюнинг#

Параметры PostgreSQL настраиваются автоматически при старте контейнера (режим auto) на основе объёма RAM хоста. Значение auto для большинства параметров означает расчёт по эмпирическим формулам. Чтобы зафиксировать значение вручную, задайте конкретное число вместо auto.

Переменная По умолчанию Назначение
LSUS_PG_TUNE_MODE auto Режим тюнинга (auto — пересчёт при старте)
LSUS_PG_MAX_CONNECTIONS auto max_connections
LSUS_PG_SHARED_BUFFERS auto shared_buffers: четверть RAM хоста, не больше 16 ГБ и не больше бюджета Postgres минус 1 ГБ
LSUS_PG_EFFECTIVE_CACHE_SIZE auto effective_cache_size
LSUS_PG_WORK_MEM auto work_mem. С PgBouncer считается от числа реальных соединений. Пол 16 МБ, крышка 128 МБ
LSUS_PG_MAINTENANCE_WORK_MEM auto maintenance_work_mem, крышка до 2 ГБ
LSUS_PG_HAS_PGBOUNCER пусто 1 на Master и Site: work_mem от пула PgBouncer и прямых пулов фоновой службы и репликации. Пусто — расчёт от max_connections (Edge)
LSUS_PG_EXPECTED_BACKENDS auto Явное число соединений для work_mem. auto — формула
LSUS_COLLECTION_MEMBERSHIP_BATCH_LIMIT 100 Сколько компьютеров за один проход очереди состава коллекций
LSUS_UPDATE_LOG_EXCERPT_CHARS 32768 Сколько текста журнала установки остаётся в базе (начало и конец). Полный текст — файл на сервере
LSUS_PG_CHECKPOINT_TIMEOUT 15min checkpoint_timeout
LSUS_PG_MAX_WAL_SIZE auto max_wal_size
LSUS_PG_RANDOM_PAGE_COST 1.5 random_page_cost (под SSD)
LSUS_PG_EFFECTIVE_IO_CONCURRENCY 200 Сколько страниц индекса читать вперёд. 200 для SSD и виртуального диска. Для HDD поставьте 1
LSUS_PG_LOG_MIN_DURATION_STATEMENT 1000 Логировать запросы дольше N мс
LSUS_PG_AUTOVACUUM_VACUUM_SCALE_FACTOR 0.05 Агрессивнее дефолта 0.2 (для высокочастотных таблиц)

Проверить применённые значения:

sudo bash /opt/lsus-docker/scripts/check-postgres-tuning.sh

Master — порты и URL#

Переменная По умолчанию Назначение
MASTER_PORT 443 Внешний HTTPS-порт (админка + API + репо); в пакетах ОС — 8443
MASTER_HTTP_PORT 8080 Внешний plain-HTTP порт для /repos; в Альт-пакетах — 18880
MASTER_ADMIN_PORT = MASTER_PORT Отдельный порт админки (если разделить трафик)
MASTER_API_PORT = MASTER_PORT Отдельный порт API
MASTER_REPOS_PORT = MASTER_PORT Отдельный порт репозиториев
LSUS_HOSTNAME lsus FQDN/имя хоста Master (для генерации URL клиентам)
LSUS_SCHEDULE_TIMEZONE пусто = UTC IANA-пояс cron-расписаний репозиториев и окон кампаний, если хост свой пояс не сообщил. Часы в формах («02:00», «10:00–12:00») — настенные в этом поясе. Задаётся и в UI: Администрирование → Настройки → Сервер
LSUS_ADMIN_INITIAL_PASSWORD — Пароль admin; пусто — случайный при первом старте (data/master/data/.initial_admin_password)
LSUS_ADMIN_INTERNAL_PORT 18444 Внутренний порт админского пула. Веб-интерфейс обслуживается отдельным пулом воркеров и не замедляется при массовом опросе агентами. Пусто — пул не поднимается (откат к одному пулу)
GUNICORN_ADMIN_WORKERS / GUNICORN_ADMIN_THREADS 3 / 8 Воркеры/треды админского пула. При GUNICORN_WORKERS=auto автотюнер вычитает их из рекомендации клиентского пула — суммарная память не растёт. При регулярных импортах ISO/MSU поднимите воркеры до 4. Если в .env явно стоит прежнее значение GUNICORN_ADMIN_THREADS=4, обновление заменяет его на 8; другое число не меняется
MALLOC_ARENA_MAX 2 Сколько арен памяти выделяет glibc процессам Master, фоновой службы и репликации. Меньше арен — процесс после тяжёлой работы отдаёт память системе
LSUS_WORKER_MAX_RSS_MB 3072 Фоновая служба сама останавливается и контейнер перезапускается, если заняла больше этого объёма (МиБ). 0 — не следить
LSUS_WORKER_MEM_LIMIT / LSUS_WORKER_MEMSWAP_LIMIT 4g / 4g Жёсткий потолок памяти контейнера фоновой службы, чтобы она не вытесняла веб и базу в своп. Своп не используется: на очень больших каталогах LDAP полная синхронизация может упереться в потолок — тогда поднимите оба значения
GUNICORN_HTTP_WORKERS / GUNICORN_HTTP_THREADS 2 / 8 Воркеры/треды пула приложения /repos: хвост сложных запросов (проксирование с Пограничного сервера) и точка отката; локальные файлы по умолчанию отдаёт раздатчик. Второй воркер добавляет примерно 0.3–0.4 ГБ; на узлах меньше 4 ГБ оставляйте GUNICORN_HTTP_WORKERS=1. При массовых установках через проксирование с Edge или лимитах канала филиала поднимите воркеры/потоки
LSUS_WEB_POOL_NICE_APP / LSUS_WEB_POOL_NICE_REPOS 0 / 5 Приоритет CPU пулов (os.nice, только понижение). Клиентский API по умолчанию не замедляется — приоритет админки достигается изоляцией пулов; пул /repos — фон
LSUS_NGINX_REPOS_CACHE_ENABLED 1 Кеш раздачи /repos в nginx: при массовом опросе одни и те же индексы отдаются из кеша (заголовок X-Cache: HIT). Управляется и из UI: Администрирование → Настройки → Сервер
LSUS_NGINX_REPOS_CACHE_MAX_SIZE 10g Верхняя граница кеша /repos на диске (том data/master/nginx-cache)
LSUS_NGINX_REPOS_CACHE_META_TTL 60s TTL успешных индексов (InRelease, Packages, repomd.xml…) в кеше; публикация репозитория видна клиентам с задержкой не больше этого значения. Ответ «файла нет» для тех же имён держится 5 минут, чтобы клиент не повторял запрос отсутствующего индекса
LSUS_REPO_NEGATIVE_CACHE_TTL 300 Секунды, сколько раздатчик помнит отсутствующий файл репозитория и не ходит в базу повторно (0 — выключить)
LSUS_NGINX_REPOS_CACHE_PKG_TTL 0 TTL пакетов: 0 — не кешировать (стрим), включать при проксировании на Edge или медленном хранилище. Не больше LSUS_REPO_REVISION_GRACE_MINUTES. Кеш пакетов обходит лимит канала филиала — при заданных лимитах оставляйте 0. При выключении кеша том data/master/nginx-cache очищается
LSUS_NGINX_REPOS_CONNECT_TIMEOUT 5s Таймаут соединения nginx → пул /repos. При насыщении пула быстрый отказ вместо минуты ожидания. Формат NNs / NNms
LSUS_MASTER_DB_POOL_SIZE 10 Размер пула соединений к БД
LSUS_MASTER_DB_USE_NULLPOOL 1 NullPool (т.к. пул держит PgBouncer)
LSUS_REPO_FALLBACK_ENABLED 1 Отдавать пакет из сохранённой ревизии, если путь исчез из активной после переключения (заголовок X-LSUS-Revision-Fallback); только пакеты, не индексы
LSUS_REPO_REVISIONS_KEEP 3 Сколько предыдущих ревизий атомарной публикации удерживать (минимум 2)
LSUS_REPO_REVISION_GRACE_MINUTES 60 Ревизия живёт минимум это время после публикации — клиент, начавший установку до переключения, дочитывает пакеты
LSUS_REPO_EDGE_DOWN_TTL 10 Секунд не ходить на пограничный сервер после ошибки соединения при раздаче /repos (0 — выключить)
LSUS_CAS_ENABLED 0
LSUS_BACKFILL_SLEEP_MS 20
LSUS_CAS_GC_ENABLED 0 GC блобов CAS: 0 — только отчёт, 1 — удаление (rename в .trash + повторная проверка nlink)
LSUS_CAS_GC_GRACE_DAYS 7 Блоб младше этого возраста GC не трогает (параллельный линк обновляет ctime и выводит из кандидатов)

Раздатчик репозиториев#

Включён по умолчанию на всех ролях: nginx отдаёт /repos в контейнер раздатчика. Существующий .env при обновлении не перезаписывается — если LSUS_REPOS_BACKEND в нём не задана, работает дефолт compose (раздатчик).

Переменная По умолчанию Назначение
LSUS_REPOS_BACKEND пусто = раздатчик Куда nginx отдаёт /repos. Пусто или отсутствие — контейнер раздатчика. Откат на пул приложения: 127.0.0.1:18080 (Master/Site) или 127.0.0.1:18540 (Edge); после смены пересоздать фронт (up -d lsus-nginx, на Site — lsus-site-nginx, на Edge — lsus-edge-nginx)
LSUS_REPOD_INTERNAL_PORT 18081 Loopback-порт раздатчика на Master/Site. При конфликте смените здесь и укажите тот же адрес в LSUS_REPOS_BACKEND
LSUS_EDGE_REPOD_INTERNAL_PORT 18541 Loopback-порт раздатчика на Edge
LSUS_REPOD_GO_MEMLIMIT_MB 512 Мягкий лимит памяти раздатчика (МБ): после пиков распаковок индексов память возвращается ОС. 0 — лимит выключен

Кеш nginx /repos и карточка «Кеш раздачи репозиториев» в настройках сервера не зависят от раздатчика и работают как раньше. Админка и опрос агентов обслуживаются другими пулами — раздатчик их не заменяет.

Master — backpressure#

infoЗащита от шторма клиентов

При превышении лимита одновременных запросов на горячих эндпоинтах сервер возвращает 503 + Retry-After, а не падает. Клиент уважает Retry-After и откладывает повтор. 0 в любом лимите отключает соответствующий gate.

Переменная По умолчанию Назначение
LSUS_PROTECTION_ENABLED 1 Включить backpressure
LSUS_MAX_CLIENT_HEARTBEAT_CONCURRENCY 8 Лимит одновременных heartbeat'ов
LSUS_MAX_CLIENT_SETTINGS_CONCURRENCY 8 Лимит одновременных запросов настроек
LSUS_MAX_CLIENT_COMMANDS_CONCURRENCY 8 Лимит одновременных запросов команд
LSUS_RETRY_AFTER_SECONDS 30 Заголовок Retry-After при 503 (в /repos — с рандомизацией ±LSUS_RETRY_AFTER_JITTER_PERCENT, чтобы шторм клиентов не ретраил синхронно)
LSUS_MAX_EDGE_PROXY_CONCURRENCY 2 Лимит одновременных скачиваний с Пограничного сервера на процесс. Действует и на пул /repos, и на раздатчик lsus-repod (шторм одинаковых пакетов — быстрый 503 вместо занятия всего пула; одинаковые файлы склеиваются в один поток, заголовок X-LSUS-Edge-Proxy). Индексы и HEAD — мимо гейта; 0 — выключить
LSUS_EDGE_PROXY_SPOOL_KEEP_SECONDS 120 Сколько секунд готовый spool-файл пакета живёт после последнего чтения: волны повторов после 503 попадают в диск, а не в новый поток. 0 — удалять сразу. Копии индексов живут отдельно, см. LSUS_EDGE_PROXY_INDEX_STALE_SECONDS
LSUS_EDGE_PROXY_SPOOL_MAX_GB 10 Лимит суммарного размера spool (ГБ, 0 — не писать spool, только прямой стрим)
LSUS_EDGE_PROXY_INDEX_TTL_SECONDS 30 Сколько секунд свежая копия индекса с Пограничного сервера отдаётся без повторного запроса
LSUS_EDGE_PROXY_INDEX_STALE_SECONDS 3600 Если Пограничный сервер не ответил, индекс отдаётся из копии не старше этого срока (заголовок X-LSUS-Edge-Proxy: stale). 0 — не отдавать старую копию
LSUS_EDGE_PROXY_INDEX_MISS_TTL_SECONDS 60 Сколько секунд помнить, что файла индекса на Пограничном сервере нет, и отвечать 404 без повторного запроса. 0 — не помнить
LSUS_EDGE_PROXY_INDEX_TIMEOUT_SECONDS 10 Сколько секунд ждать заголовки индекса от Пограничного сервера
LSUS_REPOD_SITE_LINE_META_TTL_SECONDS 30 На сайте: сколько секунд не переспрашивать мастер об индексе линии. 0 — проверять на каждый запрос
LSUS_EDGE_MIRROR_KEY_STREAMS 4 Edge: потоков раздачи зеркал на ключ сайта (1–32). Настройка из интерфейса Edge приоритетнее
LSUS_EDGE_MIRROR_KEY_BYTES_PER_SEC 0 Edge: скорость раздачи на ключ сайта, байт/с (0 — без лимита). Настройка из интерфейса приоритетнее
LSUS_EDGE_MIRROR_MAX_STREAMS авто Edge: общий предел потоков раздачи. Пусто — не меньше 64 и 4 на каждый ключ; настройка из интерфейса приоритетнее
LSUS_EDGE_PROXY_SPOOL_DIR ${LSUS_REPOS_PATH}/.edge-proxy-spool Каталог spool Edge-proxy на томе репозиториев (не системный диск data). Пусто — этот путь
LSUS_REGISTER_REQUIRE_TOKEN 0 Не отдавать существующий api_token на /register без Bearer или окна «Разрешить перерегистрацию»
LSUS_ACTIVE_SESSION_REQUIRE_TOKEN 0 Требовать Bearer на POST /clients/active-session
LSUS_REGISTER_RATE_PER_MIN 30 Лимит POST /clients/register с одного IP; при превышении 429 + Retry-After
LSUS_ACTIVE_SESSION_RATE_PER_MIN 60 Лимит POST /clients/active-session с одного IP; при превышении 429 + Retry-After
LSUS_WAN_MAX_THROTTLED_STREAMS 4 Потолок одновременных «тяжёлых» отдач (см. LSUS_HEAVY_RESPONSE_BYTES) на канал сайта и на удалённую подсеть — на мастер-приложении, сайте и раздатчике. Репликацию сайта не ограничивает
LSUS_HEAVY_RESPONSE_BYTES 52428800 Порог «тяжёлого» ответа (50 МБ), с которого действует потолок потоков: cab, MSU, пакеты агента и крупные .deb/.rpm
LSUS_WAN_HOSTS_SHARE_PERCENT 70 Доля канала сайта (Master↔Site), доступная хостам при обходе LAN. Закачка сайта берёт остаток, но не меньше 10%. Задаётся и в «Параметрах сервера»: изменённое значение уходит сайтам как умолчание, сайт может переопределить
LSUS_REPLICA_POOL_WORKERS 4 Потоков на отправку команд копий (1..8). Пул создаётся при старте службы репликации. На один сайт — одна копия; копия без движения закрывается через час
LSUS_EDGE_CONVERT_DELETE_DELAY_SECONDS 60 Пауза при преобразовании репозитория с Edge из копии в proxy: раздача уже переведена на Edge, копия на мастере ещё не удалена — за это время снимок раздачи и кеши подхватывают новый режим (0..600 с)
LSUS_REPLICA_CONVERT_PAUSE_SECONDS 30 То же для реплики на сайте при преобразовании из копии в прокси: пауза между переключением сайта на прокси и удалением копии на сайте (0..300 с)
LSUS_DB_STARTUP_WAIT_SEC 900 Сколько секунд при старте ждать, пока PostgreSQL снова принимает подключения (остановка или подъём базы). 0 — не ждать
LSUS_REPLICA_MAX_ACTIVE 32 Сколько копий репозиториев на сайты идут одновременно. Управляется и из UI («Параметры сервера»)
LSUS_REPLICA_SOURCE_SLOT_MASTER / _EDGE / _SITE 8 / 8 / 8 Слоты источника: сколько копий и рассылок cab идут одновременно с мастера / одного Пограничного сервера / одного сайта. У сайта свой слот сильнее общего только для слота «сайт»
LSUS_REPLICA_SCHEDULE_SPREAD_MINUTES 10 Минуты, по которым расходятся копии одного срабатывания расписания (1–60). Это не сдвиг проверок Windows
LSUS_REPLICA_EDGE_COPIES_PER_SITE 1 Сколько копий один сайт берёт с одного Пограничного сервера одновременно (1–4). У ключа сайта на Edge по умолчанию четыре потока раздачи, и одна копия занимает их все: для N копий нужно 4×N потоков на ключ (настройка «Раздача сайтам» на самом Edge). Мастер делит лимит ключа поровну между копиями
LSUS_REPLICA_EDGE_WAVE_SLOTS 4 На сколько групп разнесён старт сайтов, берущих копию с Edge (1–16): группа сайта — его номер по модулю этого числа
LSUS_REPLICA_EDGE_WAVE_STEP_SEC 120 Пауза между группами старта, секунды (0–600). 0 — сайты стартуют одновременно
LSUS_REPLICA_INBOUND_SLOTS 4 Сколько копий сайт принимает одновременно, если в карточке сайта число не задано (1–8). Число, записанное в карточке сайта, сильнее параметра
LSUS_SITE_API_CONNECT_TIMEOUT 60 Сколько секунд мастер ждёт соединения с сайтом (1–120). Фоновые задания (сверка сайтов, команды копий, перенос раздачи) ждут не дольше 10 секунд независимо от значения: недоступный сайт не держит поток и соединение с БД
LSUS_HEARTBEAT_EXTRAS_SYNC_SEC 10 Сколько секунд мастер применяет хвосты heartbeat хостов за сайтом прямо в запросе сайта (0–120). Остальные применяются в фоне после ответа: сайт получает подтверждение быстрее своего таймаута в 30 секунд и не шлёт полный батч заново. 0 — всё в фоне
LSUS_STALL_DUMP_SEC 20 Если запрос интерфейса или API идёт дольше этого числа секунд, в журнал сервера один раз пишется стек потока и снимок активных сессий БД с блокировками (stalled_request). 0 — выключено
LSUS_STALL_EXIT_SEC 150 Если все потоки воркера веб-пула заняты запросами старше этого числа секунд (воркер принимает соединения, но не отвечает), сторож пишет stalled_worker_exit и завершает воркер, gunicorn поднимает новый. 0 — выключено
LSUS_REPLICA_PARENT_WAIT_SEC 3600 Сколько секунд копия ждёт готовности сайта-родителя (60–86400)
LSUS_PEER_SERVE_KBPS пусто Полоса раздачи потомкам, КБ/с. Пусто — 40% канала сайта или 16 МиБ/с. 0 — без лимита. Если пусто, учитывается LSUS_PEER_BYTES_PER_SEC
LSUS_SCAN_NOW_SPREAD_MINUTES 60 Сдвиг серверных проверок Windows после установки и по расписанию, минуты (разнос по хостам). 0 — без сдвига. Управляется и из UI
LSUS_UPDATE_AGENT_SPREAD_MINUTES 30 Окно размазки массового обновления клиента: без него весь парк качает пакет агента одновременно. 0 — прежнее поведение. На обновление одного хоста из админки не влияет
LSUS_EDGE_PULL_PARALLEL 2 Параллельность подтягивания файлов с Пограничного сервера (1..8)
LSUS_WHO_SERVES master Режим раздачи хостам: master — с мастера; sites — хосты с сайтом берут со своего сайта
LSUS_PEER_BYTES_PER_SEC 0 Прежний потолок раздачи потомкам, байт/с. Учитывается, только если LSUS_PEER_SERVE_KBPS не задан. 0 — без лимита
LSUS_EDGE_HASH_CACHE_ENTRIES / LSUS_EDGE_HASH_CACHE_MB 8 / 256 Кеш индекса хешей зеркала Пограничного сервера в раздатчике: записей и бюджет памяти (МиБ)

Master — опрос клиентов#

Переменная По умолчанию Назначение
LSUS_CLIENT_APT_CHECK_JITTER_MINUTES 15 Разброс фоновой apt/dnf проверки у клиентов, минут. 0 — все хосты проверяют одновременно. На уже установленных системах значение в .env само не меняется — задайте 15 вручную, если там 0
LSUS_CLIENT_TESTING_POLL_INTERVAL_SECONDS 300 Как часто клиент спрашивает назначения тестирования, если сессии есть

Master — приоритетный хост пользователя#

Параметры страницы «Параметры» (Администрирование → Настройки), переопределяются
окружением. Технические интервалы — только окружение.

Переменная По умолчанию Назначение
LSUS_PRIMARY_HOST_AUTO 1 Автоназначение по статистике. 0 — режим наблюдения: кандидаты считаются, но не назначаются
LSUS_PRIMARY_HOST_WINDOW_DAYS 30 (7–90) Окно статистики, как в SCCM
LSUS_PRIMARY_HOST_MIN_DAYS 5 (1–30) Минимум дней работы за хостом в окне
LSUS_PRIMARY_HOST_MIN_HOURS 16 (1–200) Минимум часов за окно
LSUS_PRIMARY_HOST_DAY_MIN_MINUTES 60 (10–480) День засчитывается от этого времени работы
LSUS_PRIMARY_HOST_DAY_CAP_HOURS 10 (1–24) Потолок часов в сутки (заблокированный на ночь сеанс не раздувает статистику)
LSUS_PRIMARY_HOST_MAX_PER_USER 1 (1–5) Сколько хостов могут быть приоритетными у человека
LSUS_PRIMARY_HOST_SECONDARY_SHARE 25 (5–50, %) Доля часов за окно, с которой второй и следующие хосты становятся приоритетными
LSUS_PRIMARY_HOST_COMPARE_DAYS 14 (3–60) Период сравнения часов претендента и текущего хоста
LSUS_PRIMARY_HOST_SWITCH_RATIO 1.5 (1.1–5) Перевес претендента для смены
LSUS_PRIMARY_HOST_STALE_DAYS 14 (1–180) Хост без связи дольше этого заменяется сразу, без перевеса
LSUS_PRIMARY_HOST_EXPIRE_DAYS 90 (0–730) Снятие без замены: столько хост не на связи или человек за ним не работал. 0 — не снимать
LSUS_PRIMARY_HOST_MANUAL_YIELDS 1 Ручное назначение тоже уступает недоступному хосту при наличии кандидата
LSUS_PRIMARY_HOST_COUNT_RDP 0 1 — RDP к рабочей станции считается работой (терминальные серверы всё равно исключены)
LSUS_PRIMARY_HOST_COUNT_TTY 0 1 — текстовая консоль Linux считается работой
LSUS_PRIMARY_HOST_EXCLUDE_TAGS терминальный сервер Хосты с этими тегами не бывают приоритетными (через запятую)
LSUS_PRIMARY_HOST_SKIP_SERVER_OS 1 Windows Server и серверные коллекции не назначаются автоматически
LSUS_PRIMARY_HOST_SHARED_USERS 4 (0 — выключено) Общий хост: сколько людей за окно
LSUS_PRIMARY_HOST_SHARED_DAYS 3 Общий хост: дней работы каждого
LSUS_PRIMARY_HOST_EXCLUDE_USERS administrator,администратор,root,guest,гость Glob-исключения логинов по части до @
LSUS_PRIMARY_HOST_SAMPLE_MINUTES 10 Только окружение: интервал замера активных сессий, минут
LSUS_PRIMARY_HOST_RECOMPUTE_MINUTES 60 Только окружение: интервал пересчёта, минут
LSUS_SCAVENGE_PRIMARY_HOST_HISTORY_RETENTION_DAYS 365 Срок хранения истории изменений приоритетных хостов

Master — обслуживание БД#

Переменная По умолчанию Назначение
LSUS_SCAVENGE_SYNC_EVENTS_STALE_SITE_DAYS 7 Филиал без синка дольше этого срока не держит чистку журнала репликации
LSUS_SCAVENGE_LOCAL_REPO_EVENTS_RETENTION_DAYS 90 Срок хранения истории действий локальных репозиториев (промоуты со списками пакетов), дней
LSUS_REPO_PROMOTE_HISTORY_LIST_LIMIT 1000 Потолок имён пакетов в одной записи истории промоута (на категорию). Первый состав ветки — только счётчик и выборка
LSUS_RETENTION_MAX_ROUNDS 2000 Страховочный потолок чанков за прогон суточной чистки журнала репликации и команд
LSUS_RETENTION_DEADLINE_SEC 180 Максимум секунд на один прогон суточной чистки (основной ограничитель, не число чанков)
LSUS_TRACE_LOCAL_REPO_PACKAGES 0 Диагностика: писать стек в лог при каждом чтении каталога пакетов (1 — только на стенде)

Site#

Переменная По умолчанию Назначение
SITE_PORT 443 Внешний HTTPS-порт
SITE_HOSTNAME lsus-site FQDN/имя хоста Site
LSUS_MASTER_URL https://localhost:443 URL Master для регистрации/синхронизации
LSUS_SITE_API_KEY — API-ключ Site для авторизации на Master
LSUS_SITE_ADMIN_PASSWORD !LsusAdminSite2026@ Дефолтный пароль admin при первом старте

Edge#

Переменная По умолчанию Назначение
EDGE_PORT 443 Внешний HTTPS-порт (единый)
LSUS_SCHEDULE_TIMEZONE пусто = UTC IANA-пояс cron зеркал и загрузок. Часы в формах («02:00») — настенные в этом поясе. Задаётся и в UI: Настройки → Сервер
EDGE_UI_PASSWORD !LsusAdminEdge2026@ Дефолтный пароль пользователя admin веб-интерфейса Edge при первом старте
EDGE_AV_ENABLED false Антивирусная проверка файлов
EDGE_DB_NAME lsus_edge Имя БД Edge
EDGE_DB_USER lsus_edge Пользователь БД Edge
EDGE_EXPORT_DIR ./data/edge/export Каталог хоста, который монтируется в контейнер Edge как флешка/drop-folder шаттла
LSUS_EDGE_EXPORT_DIR /var/lib/lsus-edge/export Путь внутри контейнера Edge к тому экспорта

Файловый шаттл (закрытый контур)#

Когда интернет-Edge нельзя стыковать с Master по IP, данные едут каталогом-бандлом (флешка, SMB или SFTP). Контейнеры сами ничего не монтируют: флешку или шару на хосте указывает администратор. Master не ходит на Edge ни по одному протоколу.

Переменная По умолчанию Назначение
SHUTTLE_DIR ./data/master/shuttle Каталог хоста Master под флешку/drop-folder (том у lsus-master, worker и replication)
LSUS_SHUTTLE_DIR /mnt/lsus-shuttle Путь внутри контейнеров Master
LSUS_SHUTTLE_POLL_SECONDS 900 Как часто Master смотрит только manifest.json в источниках (новый бандл → уведомление)
LSUS_SHUTTLE_WSUSSCN2_STALE_DAYS 35 Через сколько дней без нового бандла предупреждать «Устарел wsusscn2.cab» (каталог выходит примерно раз в месяц — 35 = месяц + запас)

Новые исходящие порты внутри контура Master (не до Edge): SMB 445/tcp и SFTP 22/tcp — только если источник шаттла на файловом перекладчике. Site и PXE не участвуют.

PXE#

Роль exclusive: свой хост, без PostgreSQL. ISO только на точке. Secure Boot в MVP выключен (iPXE).

Переменная По умолчанию Назначение
PXE_PORT 443 Внешний HTTPS (upload ISO, API точки)
PXE_HTTP_PORT 80 Plain HTTP boot-артефактов
LSUS_PXE_INTERNAL_PORT 18550 Loopback приложения за nginx
LSUS_MASTER_URL — URL Master для регистрации точки
LSUS_PXE_REGISTRATION_KEY — Одноразовый ключ регистрации (как у Site)
LSUS_PXE_INTERFACES (авто) Интерфейсы dnsmasq через запятую
LSUS_PXE_BIND_INTERFACES 1 bind-interfaces, чтобы не занимать UDP 67 на всех адресах

AI-стек (Ollama)#

Переменные задаются в файле ollama.env (каталог /opt/lsus-docker/).

Переменная По умолчанию Назначение
OLLAMA_HOST 0.0.0.0:11434 Адрес и порт API Ollama
OLLAMA_ORIGINS * Разрешённые источники (CORS)
OLLAMA_MAX_LOADED_MODELS 2 Сколько моделей держать в памяти одновременно
OLLAMA_NUM_PARALLEL 2 Число параллельных запросов инференса

Модели загружаются через UI Master (импорт .tar.gz) или docker exec lsus-ollama ollama pull <tag>. Для GPU добавьте override docker-compose.gpu.yml (требуется nvidia-container-toolkit).

AI-стек (OpenClaw)#

Переменные задаются в файле openclaw.env (каталог /opt/lsus-docker/).

Переменная По умолчанию Назначение
OPENCLAW_OLLAMA_BASE_URL http://127.0.0.1:11434 URL Ollama (LLM-движок, по умолчанию локальный)
OLLAMA_API_KEY ollama-local API-ключ к Ollama
OPENCLAW_GATEWAY_PORT 18789 Порт OpenAI-совместимого шлюза OpenClaw
OPENCLAW_GATEWAY_TOKEN (генерируется) Токен шлюза (при первой установке — openssl rand)
OPENCLAW_BIND lan Привязка сетевого интерфейса
LSUS_API_URL https://localhost:8443 URL Master (Machine API для навыков агента)
LSUS_MACHINE_TOKEN — Токен Machine API (выдаётся в UI Master)

infoСвязь компонентов AI-стека

OpenClaw обращается к Ollama через OPENCLAW_OLLAMA_BASE_URL (по умолчанию локальный 11434), а к Master — через LSUS_API_URL. Master, в свою очередь, вызывает шлюз OpenClaw на порту 18789. Все используют network_mode: host, поэтому могут ссылаться на 127.0.0.1 при размещении на одном хосте.

Базы данных по ролям#

При установке нескольких ролей на разные хосты каждая использует свою БД. При совмещении (не рекомендуется) — разные БД/пользователи в одном PostgreSQL:

Роль БД Пользователь
Master lsus lsus
Site lsus_site lsus_site
Edge lsus_edge lsus_edge

Пароли БД генерируются случайным образом при первой установке и сохраняются в файл credentials-<роль>.txt рядом с .env.

Health-эндпоинты#

Для проверки работоспособности роли используется HTTPS-запрос (примеры ниже — для дефолтного порта 443; при нестандартном порте добавьте :<порт> после хоста):

Master и Site#

curl -k https://master.example.com/api/v1/health

Ожидаемый ответ (HTTP 200):

{"status": "ok", "role": "master"}

Для Site — "role": "site" (или "standalone", если роль не задана явно).

Edge#

curl -k https://edge.example.com/api/v1/health

Ожидаемый ответ (HTTP 200):

{"status": "ok", "role": "edge"}

PXE#

curl -k https://pxe.example.com/api/v1/health

Ожидаемый ответ (HTTP 200):

{"status": "ok", "role": "pxe"}

Boot-плоскость (без TLS):

curl -s http://pxe.example.com/pxe/boot.ipxe | head

Диагностический эндпоинт (с версией сервера)#

Отдельный эндпоинт для клиентской диагностики, без аутентификации:

curl -k https://master.example.com/api/v1/clients/health

Ответ (HTTP 200):

{
  "status": "ok",
  "server_version": "1.0.67",
  "time": "2026-06-16T12:00:00.000Z"
}

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

HTTP 200 и "status": "ok" — сервер жив. Роль в ответе позволяет убедиться, что запрос пришёл именно туда, куда ожидается. Если curl висит — проверьте firewall и порт; если connection refused — контейнер nginx/app не поднялся (см. docker compose ps).

Структура каталогов данных#

При установке через пакеты ОС DATA_DIR=/opt/lsus-docker/data. Дерево по ролям:

/opt/lsus-docker/data/
├── postgres/              # данные PostgreSQL (все роли)
├── master/
│   ├── repos/             # зеркала репозиториев
│   ├── kb-cache/          # кеш баз KB Windows
│   ├── kb-storages/       # KB-хранилища (MSU) + артефакты агента
│   ├── config-files/      # файлы для политик «Файл» конфигураций
│   ├── patches/           # каталоги патчей (staged/enabled/backup)
│   ├── data/              # app-data (сертификаты, server_settings.env)
│   └── log/               # журналы приложения и nginx
├── site/
│   ├── repos/
│   ├── data/
│   └── log/
└── edge/
    ├── storage/           # хранилище файлов/зеркала
    ├── data/
    └── log/
└── ai/
    ├── ollama/            # модели и состояние Ollama
    └── openclaw/          # конфигурация и workspace OpenClaw

DATA_DIR — корень всех данных роли, включая postgres/, сертификаты и журналы. Чтобы вынести только repos/kb-cache/storage на отдельный диск, смонтируйте его в соответствующий подкаталог DATA_DIR; смена всего DATA_DIR переносит и базу данных — оба сценария и порядок шагов описаны в разделе Вынос данных на отдельный диск.

Раздача с сайта (1.0.122)#

Переменная Где Значение
LSUS_WHO_SERVES мастер master / sites / sites_only — кто раздаёт файлы хостам; sites_only — мастер файлы не хранит.
LSUS_DEFAULT_SITE_ID мастер Номер выбранного сервера: он первым раздаёт файлы хостам без сайта, затем остальные серверы его площадки. Пусто — мастер, пока он хранит файлы. В окне правки сервер выбирается из списка
LSUS_SITE_KB_NEEDED_RETENTION_DAYS мастер Срок хранения MSU «только необходимое» на сайте.
serve_slots / inbound_slots / peer_serve_kbps окно сайта Слоты раздачи потомкам, входящих копий и полоса раздачи.
SITE_SHUTTLE_DIR docker-compose сайта Каталог носителя рейса шаттла на машине сайта приёма.