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

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

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

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

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

warningnetwork_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

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 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

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

Если нужны нестандартные порты (например, чтобы освободить 443 для другого сервиса), задайте их переменными LSUS_INSTALL_MASTER_PORT, LSUS_INSTALL_SITE_PORT, LSUS_INSTALL_EDGE_PORTLSUS_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

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-пулингом.

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

Образ Базовый образ Назначение
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 не перезаписывается — значения сохраняются.

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
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

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
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)

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) + артефакты агента
│   ├── 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 целиком на отдельном томе перед первой установкой.