Справочник портов, контейнеров и переменных
Единый источник правды по сетевым портам, Docker-контейнерам и переменным окружения серверных ролей LSUS и AI-стека. Остальные страницы ссылаются сюда и не дублируют эти данные.
Пошаговая установка — в разделе Развёртывание серверов. Требования к хосту и firewall — в Требованиях и подготовке. Подробно про AI-стек — в разделе AI-стек.
Сетевая модель¶
network_mode: host
Все контейнеры LSUS запускаются с network_mode: "host". Это значит:
- Проброс портов (
ports:) не используется — контейнеры слушают порты напрямую на сетевых интерфейсах хоста. - Внешние порты — 443 для всех ролей (админка, API и репозитории). Это значение по умолчанию в
.env.exampleи в пакетах ОС LSUS. - Внутренние порты (5432, 6379, 6432, 6433, 18443, 18080, 18540) — слушаются только на
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 |
Разделение трафика на Master/Site
По умолчанию Master и Site публикуют админку, API и репозитории на одном порту (443). При необходимости классы трафика можно разнести на разные порты через переменные LSUS_ADMIN_PORT / LSUS_API_PORT / LSUS_REPOS_PORT (например, админка на 443, репозитории на 8444). На порту админки /api и /repos закрываются; на порту API/репозиториев корневой запрос возвращает 404. Edge всегда использует единый порт.
Нестандартные порты
Дефолт docker-compose.yml и .env.example (ручное развёртывание) — 443 для всех ролей. Пакеты ОС при первой установке пишут в .env: Master/Site — 8443, Edge — 8540; Альт-пакеты — дополнительно HTTP /repos 18880. Клиент при подключении без явного порта использует DEFAULT_SERVER_PORT = 8443. При любом нестандартном порте просто укажите его в URL клиенту (server_url) или в DNS SRV-записи.
Внутренние порты (только 127.0.0.1, loopback)¶
| Порт | Компонент | Назначение |
|---|---|---|
| 5432 | PostgreSQL | Основная БД (общая для всех ролей на хосте) |
| 6379 | Redis | Общий кеш процессов приложения: лимиты входа, политики, глобальные настройки (без пароля, только loopback) |
| 6432 | PgBouncer (Master) | Пул соединений веб-приложения к БД |
| 6433 | PgBouncer (Site) | Пул соединений (отдельный порт, чтобы не конфликтовать при совмещении ролей) |
| 18443 | приложение (Master, Site) | Внутренний plain-HTTP приложения, за nginx |
| 18080 | приложение (Master, Site) | Внутренний plain-HTTP /repos, за nginx |
| 18540 | приложение (Edge) | Внутренний plain-HTTP edge-app, за nginx |
| 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 |
Свои порты при необходимости
Если нужны нестандартные порты (например, чтобы освободить 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-nginx |
| Site | lsus-postgres, lsus-redis, lsus-site-pgbouncer, lsus-site, lsus-site-replication, lsus-site-nginx |
| Edge | lsus-postgres, lsus-redis, lsus-edge, lsus-edge-nginx |
| PXE | lsus-pxe, lsus-pxe-nginx (без PostgreSQL) |
| Ollama (AI) | lsus-ollama |
| OpenClaw (AI) | lsus-openclaw |
Зачем 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-пулингом.
Карта образов¶
| Образ | Базовый образ | Назначение |
|---|---|---|
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-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 не перезаписывается — значения сохраняются.
Совет
Переменные, помеченные как «только при первой установке» (префикс 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 |
LSUS_PG_EFFECTIVE_CACHE_SIZE |
auto |
effective_cache_size |
LSUS_PG_WORK_MEM |
auto |
work_mem |
LSUS_PG_MAINTENANCE_WORK_MEM |
auto |
maintenance_work_mem |
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_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_ADMIN_INITIAL_PASSWORD |
— | Дефолтный пароль admin при первом старте |
LSUS_MASTER_DB_POOL_SIZE |
10 |
Размер пула соединений к БД |
LSUS_MASTER_DB_USE_NULLPOOL |
1 |
NullPool (т.к. пул держит PgBouncer) |
Master — backpressure¶
Защита от шторма клиентов
При превышении лимита одновременных запросов на горячих эндпоинтах сервер возвращает 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 |
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 |
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-порт (единый) |
EDGE_UI_PASSWORD |
!LsusAdminEdge2026@ |
Дефолтный пароль пользователя admin веб-интерфейса Edge при первом старте |
EDGE_AV_ENABLED |
false |
Антивирусная проверка файлов |
EDGE_DB_NAME |
lsus_edge |
Имя БД Edge |
EDGE_DB_USER |
lsus_edge |
Пользователь БД Edge |
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) |
Связь компонентов 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"
}
Что считать успехом
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) + артефакты агента
│ ├── data/ # app-data (сертификаты, server_settings.env)
│ └── log/ # журналы приложения и nginx
├── site/
│ ├── repos/
│ ├── data/
│ └── log/
└── edge/
├── storage/ # хранилище файлов/зеркала
├── data/
└── log/
└── ai/
├── ollama/ # модели и состояние Ollama
└── openclaw/ # конфигурация и workspace OpenClaw
Чтобы вынести repos/kb-cache на отдельный диск, смонтируйте его в соответствующий подкаталог DATA_DIR или задайте DATA_DIR целиком на отдельном томе перед первой установкой.