База знанийSC NexusРуководство по развертыванию SC Nexus

Руководство по развертыванию SC Nexus

УстановкаОбновлено: 20.07.2026

Данное руководство описывает процесс развертывания SC Nexus на базе Docker и Docker Compose с использованием автоматизированных инсталляционных скриптов.


Требования к целевому серверу Linux

  • ОС: Linux (Ubuntu 20.04+, Debian 10+, CentOS 7+)
  • Утилиты: Docker Engine 20.10+ и плагин Docker Compose v2.0+
  • Ресурсы: 2 CPU, 4 ГБ ОЗУ, 20 ГБ свободного места на диске

Шаг 0: Установка Docker и Docker Compose на сервере Linux

Если на вашем сервере еще не установлены Docker и плагин Docker Compose, выполните следующие команды под пользователем с правами sudo.

Вариант 1: Быстрая автоматическая установка (Рекомендуется)

Вы можете установить Docker с помощью официального скрипта:

BASH
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Вариант 2: Пошаговая установка для Ubuntu/Debian

Если вы предпочитаете ручную установку из официального репозитория Docker:

Шаг 1. Обновите индекс пакетов системы и установите необходимые утилиты:

BASH
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

Шаг 2. Создайте каталог для ключей репозитория и добавьте официальный GPG-ключ Docker:

BASH
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Шаг 3. Подключите официальный репозиторий Docker к вашей системе:

BASH
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Шаг 4. Обновите индекс пакетов и установите Docker Engine, CLI, Containerd и плагин Docker Compose:

BASH
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Шаг 5. Проверьте корректность установки утилит:

BASH
sudo docker --version
sudo docker compose version


Шаг 1: Создание папки для архива и отправка файлов с Windows на Linux

После того как проект собран и упакован на локальном компьютере Windows в релиз-архив sc-nexus-portal.tar.gz, необходимо подготовить директорию на Linux-сервере и перенести туда архив.

Шаг 1. Подключитесь к вашему Linux-серверу по SSH.

Шаг 2. Создайте рабочую директорию для приложения (например, ~/sc-nexus):

BASH
mkdir -p ~/sc-nexus

Шаг 3. Скопируйте архив sc-nexus-portal.tar.gz на сервер в созданную папку (используя SCP, SFTP или любой другой инструмент передачи файлов).


Шаг 2: Распаковка архива на сервере

Шаг 1. Перейдите в рабочую папку и распакуйте архив:

BASH
cd ~/sc-nexus
tar -xzf sc-nexus-portal.tar.gz


Шаг 2.5: Изменение сетевых портов приложения (при конфликтах портов)

По умолчанию SC Nexus настроен на использование стандартных веб-портов на хост-сервере:

  • HTTP (без шифрования): 80 (внутренний порт контейнера — 80)
  • HTTPS (безопасное соединение): 443 (внутренний порт контейнера — 443)

[!IMPORTANT]
Если на вашем сервере (виртуальной машине) уже запущены другие веб-службы (например, Nginx, Apache, IIS), использующие порты 80 или 443, возникнет конфликт портов, и контейнеры не смогут запуститься. В этом случае вам необходимо изменить внешние порты (например, на альтернативные 8081 и 8443):

Как устроена структура портов в docker-compose.yml:

Запись портов имеет вид "- <ВнешнийПортХоста>:<ВнутреннийПортКонтейнера>".

  • Внешний порт хоста (левая часть до двоеточия) — это порт, по которому вы будете открывать сайт в браузере. Вы можете менять его.
  • Внутренний порт контейнера (правая часть после двоеточия) — жестко привязан к настройкам Nginx. Его менять нельзя (80 для HTTP и 443 для HTTPS).

Таблица соответствия портов для замены:

Режим доступаТекущее значение в файлеЗначение для стандартных портовЗначение для кастомных портов (пример)
HTTP (Обычный)- "8081:80"- "80:80" (Доступ по http://<IP>)- "8080:80" (Доступ по http://<IP>:8080)
HTTPS (Защищенный)- "8443:443"- "443:443" (Доступ по https://<IP>)- "4443:443" (Доступ по https://<IP>:4443)

Инструкция по редактированию портов:

Шаг 1. Откройте конфигурационный файл docker-compose.yml в текстовом редакторе nano с правами суперпользователя sudo:

BASH
sudo nano docker-compose.yml

Шаг 2. Найдите секцию frontend: и её подсекцию ports: (ближе к концу файла):

YAML
# Найдите этот блок:
frontend:
  image: sc-nexus-frontend:latest
  ...
  ports:
    - "8081:80"
    - "8443:443"

Шаг 3. Замените левые части портов на нужные вам. Например, для перевода на стандартные порты 80 и 443 приведите блок к следующему виду:

YAML
ports:
    - "80:80"
    - "443:443"

Шаг 4. Сохраните изменения: нажмите Ctrl+O, затем клавишу Enter. Для выхода из редактора нажмите Ctrl+X.

Как зафиксировать только один конкретный IP?

Если на вашем сервере (виртуальной машине) настроено несколько сетевых интерфейсов/IP-адресов, по умолчанию Docker привязывает порты к адресу 0.0.0.0 (то есть портал будет доступен по любому из IP-адресов ВМ).

Если вы хотите зафиксировать доступ к телефонному справочнику только по одному конкретному IP-адресу (например, во внутренней корпоративной подсети 192.168.1.15), укажите этот IP перед внешним портом в секции ports: файла docker-compose.yml:

DIFF
ports:
-        - "80:80"
-        - "443:443"
+        - "192.168.1.15:80:80"
+        - "192.168.1.15:443:443"

Шаг 3: Запуск скрипта установки install.sh с правами sudo

В архиве поставляется готовый скрипт автоматической установки, который выполнит сборку образов и первоначальную настройку. Для взаимодействия с Docker и изменения файлов конфигурации скрипт должен выполняться от имени суперпользователя.

Шаг 1. Перейдите в рабочую папку приложения (если еще не там):

BASH
cd ~/sc-nexus

Шаг 2. Сделайте скрипт установки исполняемым:

BASH
sudo chmod +x install.sh

Шаг 3. Запустите скрипт установки с использованием команды sudo:

BASH
sudo ./install.sh

Что делает скрипт install.sh автоматически:

  • Проверяет наличие установленного Docker и плагина Docker Compose на сервере.
  • Проверяет наличие OpenSSL для генерации паролей.
  • Если файла .env ещё нет, копирует .env.example в .env, генерирует безопасный случайный пароль из 24 символов для базы данных MySQL и автоматически прописывает его в конфигурацию.
  • Собирает Docker-образы бэкенда и фронтенда, а затем запускает контейнеры в фоновом режиме (sudo docker compose up -d --build).
  • Опрашивает бэкенд и дожидается полной готовности к приему трафика.
  • Автоматически определяет настроенные порты (дефолтные или кастомные) и выводит в консоль готовые ссылки с нужными портами для подключения, а также стандартные учетные данные администратора.

Шаг 4: Контроль и проверка статуса

Для проверки статуса запущенных контейнеров выполните команду с sudo:

BASH
sudo docker compose ps

Вы должны увидеть три работающих контейнера:

  • sc_nexus_db_prod (health: healthy) — база данных MySQL.
  • sc_nexus_backend_prod — Node.js бэкенд API.
  • sc_nexus_frontend_prod — веб-сервер Nginx.

Для просмотра журналов работы бэкенда (например, при проверке логов синхронизации с Active Directory) выполните:

BASH
sudo docker compose logs -f backend


Шаг 5: Доступ к SC Nexus

  • HTTP: http://<IP_СЕРВЕРА> (или http://<IP_СЕРВЕРА>:<ПОРТ>, если вы изменили внешний порт на кастомный в Шаге 2.5, например http://<IP_СЕРВЕРА>:8081)
  • HTTPS: https://<IP_СЕРВЕРА> (или https://<IP_СЕРВЕРА>:<ПОРТ>, если вы изменили внешний порт на кастомный в Шаге 2.5, например https://<IP_СЕРВЕРА>:8443; станет доступным после генерации CSR или загрузки валидных SSL-сертификатов во вкладке «Безопасность» панели администратора).

Стандартные учетные данные суперпользователя по умолчанию:

  • Логин: admin
  • Пароль: admin


Шаг 5.5: Важное требование по синхронизации времени (NTP)

В системе лицензирования SC Nexus встроены строгие защитные механизмы против обхода лицензий путем изменения системного времени (Time Rollback).

Для стабильной работы портала необходимо убедиться, что на хост-сервере включена и правильно настроена автоматическая синхронизация системного времени по протоколу NTP.

Проверка статуса синхронизации на Ubuntu/Debian:

BASH
timedatectl status

Убедитесь, что строка System clock synchronized: имеет значение yes, а NTP service: находится в статусе active.

Настройка и запуск службы синхронизации (systemd-timesyncd):

Если синхронизация отключена, выполните:

BASH
# Установка и запуск службы синхронизации
sudo apt-get update && sudo apt-get install -y systemd-timesyncd
sudo systemctl enable --now systemd-timesyncd

[!WARNING]
Если системное время на хосте сдвинется назад относительно метки последней проверки в базе данных (более чем на 5 минут), лицензия перейдет в заблокированный статус tampered, и восстановить работу можно будет только путем повторного ввода нового лицензионного ключа.

Шаг 6: Полный сброс и чистая переустановка

Если вам потребуется удалить приложение, полностью стереть все тома баз данных и произвести абсолютно чистую переустановку:

Шаг 1. Сделайте скрипт очистки исполняемым:

BASH
sudo chmod +x clean-install.sh

Шаг 2. Запустите очистку с правами суперпользователя:

BASH
sudo ./clean-install.sh

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