Перейти к содержанию

Быстрый старт

Минимальный сценарий разворачивания серверной части DataHUB на одном Linux-сервере. Подходит для пилотного стенда, демонстраций и разработки клиентских адаптеров. Для промышленной эксплуатации после быстрого старта необходимо пройти Production настройку.

Предусловия

  • Linux-сервер, удовлетворяющий Системным требованиям, с установленным Docker Engine и Compose plugin v2.
  • Доступ от пользователя с правами sudo.
  • Архив поставки DataHUB, полученный от вендора (например, datahub-full-v3.0.0.zip).

Структура архива поставки

Релизный архив datahub-full-v<MAJOR>.<MINOR>.<PATCH>.zip распаковывается в каталог datahub-full-v<MAJOR>.<MINOR>.<PATCH>/ со следующей структурой:

datahub-full-v3.0.0/
├── deployment/        # шаблоны docker-compose и .env для всех блоков
│   ├── backend/
│   ├── devops-core/
│   ├── flyway/
│   ├── frontend/
│   ├── nginx/
│   ├── pg-agmin/
│   ├── postgres/
│   ├── rabbitmq/
│   ├── firewall/      # опционально
│   └── vpn/           # опционально
├── images/            # готовые Docker-образы (по одному tar.gz на сервис)
├── modules/           # подсистема 1С (1c-cf.zip)
├── services/          # исходники сервисов (для воспроизводимости)
├── docs/              # офлайн-копия документации
├── manifest.lock.yml  # фиксация версий, образов и хешей
└── version.txt        # версия релиза

1. Распаковка архива поставки

Загрузите архив поставки на сервер. Распакуйте архив в домашний каталог пользователя — внутри появится подкаталог datahub-full-v3.0.0/:

unzip datahub-full-v3.0.0.zip -d ~/

Перейдите в распакованный каталог:

cd ~/datahub-full-v3.0.0

2. Загрузка образов в Docker

Загрузите все Docker-образы из подкаталога images/ в локальный реестр Docker. Команда docker load импортирует образ из tar.gz-архива и регистрирует его в системе. Образы поставки — Сервер DataHUB (backend-mono), Flyway, административный интерфейс (frontend), reverse proxy (nginx), утилиты администрирования БД (pg-admin), база данных (postgres), транспорт сообщений (rabbitmq), служебный образ (busybox):

sudo docker load -i images/backend-mono.tar.gz
sudo docker load -i images/flyway.tar.gz
sudo docker load -i images/frontend.tar.gz
sudo docker load -i images/nginx.tar.gz
sudo docker load -i images/pg-admin.tar.gz
sudo docker load -i images/postgres.tar.gz
sudo docker load -i images/rabbitmq.tar.gz
sudo docker load -i images/busybox.tar.gz

Убедитесь, что все образы DataHUB зарегистрированы:

sudo docker images | grep datahub

3. Подготовка каталога конфигурации

Создайте корневой каталог /etc/datahub, в котором будут жить конфигурации всех блоков:

sudo mkdir -p /etc/datahub

Скопируйте в него шаблоны деплоя из каталога deployment/ распакованного архива:

sudo cp -r ~/datahub-full-v3.0.0/deployment/* /etc/datahub/

В /etc/datahub/ появятся подкаталоги для каждого блока поставки: devops-core, rabbitmq, postgres, pg-agmin, flyway, backend, frontend, nginx (плюс опциональные firewall и vpn).

4. Поэтапный запуск блоков

Большинство блоков имеют шаблон .env.template, на основе которого создаётся реальный .env с фактическими значениями. Базовый цикл для таких блоков: перейти в каталог блока → скопировать шаблон в .env → отредактировать значения → запустить контейнер → проверить логи. Редактирование .env ниже показано через vim — краткий справочник по редактору находится в Приложении в конце статьи.

Исключения из базового цикла:

  • devops-core — общая инфраструктура без .env.template, поднимается одной командой docker compose up.
  • pg-agmin — кроме .env.template, требует предварительного запуска скрипта predeploy.sh.
  • backend — кроме .env.template, требует генерации секретов через скрипты в каталоге scripts/.
  • nginx — кроме docker compose, требует генерации TLS-сертификатов и правки конфигов в conf.d/*.conf.

Запускайте блоки в указанном порядке.

4.1. Общая инфраструктура

Перейдите в каталог блока:

cd /etc/datahub/devops-core

Запустите контейнеры общей инфраструктуры:

sudo docker compose -f docker-compose.yml up -d

4.2. RabbitMQ

Перейдите в каталог блока:

cd /etc/datahub/rabbitmq

Создайте реальный .env на основе шаблона:

sudo sh -c 'cat ./.env.template > ./.env'

Откройте .env и заполните значения (учётные данные администратора брокера, имена exchange и т.п.):

sudo vim ./.env

Для генерации криптостойких паролей используйте:

head -c 32 /dev/urandom | base64

Запустите контейнер RabbitMQ:

sudo docker compose -f docker-compose.yml up -d

4.3. PostgreSQL

Перейдите в каталог блока:

cd /etc/datahub/postgres

Создайте .env на основе шаблона:

sudo sh -c 'cat ./.env.template > ./.env'

Заполните значения (учётная запись postgres, имя БД, порт):

sudo vim ./.env

Создайте каталог под данные PostgreSQL:

mkdir -p ./data

Установите владельца каталога:

sudo chown -R root:root ./data

Установите права доступа:

sudo chmod -R 775 ./data

Запустите контейнер PostgreSQL:

sudo docker compose -f docker-compose.yml up -d

4.4. pgAdmin (опционально)

Перейдите в каталог блока:

cd /etc/datahub/pg-agmin

Создайте .env на основе шаблона:

sudo sh -c 'cat ./.env.template > ./.env'

Заполните значения (учётная запись администратора pgAdmin):

sudo vim ./.env

Сделайте предеплой-скрипт исполняемым:

chmod +x ./predeploy.sh

Запустите подготовку среды (предеплой создаёт нужные каталоги и файлы конфигурации pgAdmin):

./predeploy.sh

Запустите контейнер pgAdmin:

sudo docker compose -f docker-compose.yml up -d

Проверьте, что контейнер стартовал без ошибок:

sudo docker logs pg-admin

4.5. Flyway — миграции схемы

Перейдите в каталог блока:

cd /etc/datahub/flyway

Создайте .env на основе шаблона:

sudo sh -c 'cat ./.env.template > ./.env'

Заполните значения (параметры подключения к PostgreSQL, путь к миграциям):

sudo vim ./.env

Запустите Flyway. Контейнер применяет миграции и завершает работу — это нормально:

sudo docker compose -f docker-compose.yml up -d

Просмотрите лог, убедитесь что миграции применились без ошибок:

sudo docker logs flyway

4.6. Сервер DataHUB

Перед запуском Сервера DataHUB нужно сгенерировать секреты, которые он будет использовать для подписи JWT и аутентификации сервисных вызовов.

Перейдите в каталог скриптов:

cd /etc/datahub/backend/scripts

Сделайте скрипты исполняемыми:

sudo chmod +x ./*.sh

Сгенерируйте «перец» (дополнительная соль для хеширования паролей):

sudo ./generate_pepper.sh

Сгенерируйте пару ключей RSA для подписи JWT:

sudo ./generate_keys.sh

Сгенерируйте сервисный токен для внутренних вызовов между компонентами:

sudo ./generate_service_token.sh

Перейдите в каталог блока:

cd /etc/datahub/backend

Создайте .env на основе шаблона:

sudo sh -c 'cat ./.env.template > ./.env'

Заполните значения (адреса PostgreSQL и RabbitMQ, креды, домен и т.п.):

sudo vim ./.env

Запустите контейнер Сервера DataHUB:

sudo docker compose -f docker-compose.yml up -d

Просмотрите лог, дождитесь сообщения об успешном старте:

sudo docker logs backend

4.7. Frontend

Перейдите в каталог блока:

cd /etc/datahub/frontend

Создайте .env на основе шаблона:

sudo sh -c 'cat ./.env.template > ./.env'

Заполните значения (адрес backend, домен, параметры OAuth-провайдеров если есть):

sudo vim ./.env

Запустите контейнер административного интерфейса:

sudo docker compose -f docker-compose.yml up -d

Проверьте лог:

sudo docker logs frontend

4.8. Nginx

Перед началом — выберите схему доменов:

  • Схема по умолчанию: два домена. Личный кабинет на lk.<your-domain>, сервис обмена на exchange.<your-domain>. Оба на стандартном HTTPS-порту 443. Дефолтные конфиги в /etc/datahub/nginx/config/conf.d/ уже настроены под эту схему — нужно только подставить ваши доменные имена.
  • Альтернативная схема: один домен, два порта. Если у вас доступно только одно доменное имя — личный кабинет можно вынести на нестандартный порт (например, 18443), exchange оставить на 443. Пример конфигурации лежит в подкаталоге config/conf.d/examples/single-domain-two-ports/ — там же README с инструкцией. После применения примера не забудьте пробросить дополнительный порт в docker-compose.yml блока nginx и открыть его на firewall.

Дальнейшие шаги описаны для схемы по умолчанию.

Перед запуском nginx нужно сгенерировать TLS-сертификаты для self-signed-схемы. На production-стенде вместо этого подкладывают сертификаты от доверенного CA (см. Настройка безопасности).

Перейдите в каталог с скриптами генерации сертификатов:

cd /etc/datahub/nginx/certs

Сделайте скрипты исполняемыми:

sudo chmod +x generate-root-CA.sh generate-server-cert.sh generate-client-cert.sh

Сгенерируйте корневой удостоверяющий центр (root CA), которым будут подписаны остальные сертификаты:

sudo ./generate-root-CA.sh

Сгенерируйте серверный сертификат (для внешнего HTTPS-входа):

sudo ./generate-server-cert.sh

Сгенерируйте клиентский сертификат (для mTLS-аутентификации интегрируемых систем):

sudo ./generate-client-cert.sh client-name

Откройте конфиги nginx (/etc/datahub/nginx/conf.d/*.conf) и подставьте имена серверов и пути к сертификатам в соответствующие директивы server_name, ssl_certificate, ssl_certificate_key.

Перейдите в каталог блока:

cd /etc/datahub/nginx

Запустите контейнер nginx:

sudo docker compose -f docker-compose.yml up -d

Просмотрите лог:

sudo docker logs nginx

5. Проверка

После запуска всех блоков платформа доступна по адресу:

https://<your-domain>/

Откройте административный интерфейс и войдите под учётной записью администратора по умолчанию (значения создаются на этапе генерации секретов и хранятся в /etc/datahub/backend/.env).

Что дальше

Приложение: краткий справочник по vim

Для редактирования .env-файлов и конфигов в этой инструкции используется vim. Это стандартный консольный редактор Linux, доступный «из коробки». Если вам привычнее другой редактор (например, nano) — можно использовать его вместо vim, ничего больше менять не придётся.

Минимально необходимые операции:

  • Открыть файл для редактированияvim <имя_файла>. Например, sudo vim ./.env. Редактор откроется в режиме просмотра (нельзя сразу печатать).
  • Перейти в режим вставки (начать редактирование) — нажать клавишу i. Внизу появится -- INSERT --. Теперь работают обычный ввод текста, стрелки для перемещения, Backspace и Delete.
  • Вернуться из режима вставки в режим команд — нажать Esc. Индикатор -- INSERT -- исчезнет.
  • Сохранить и выйти — в режиме команд набрать :wq и нажать Enter. (Двоеточие открывает командную строку vim, w — write, q — quit.)
  • Выйти без сохранения — в режиме команд набрать :q! и нажать Enter. Восклицательный знак подтверждает отказ от изменений.
  • Сохранить без выхода:w + Enter.
  • Отменить последнее изменение — в режиме команд нажать u.

Типовая сессия редактирования .env:

  1. sudo vim ./.env — открыли файл.
  2. Стрелками встали на нужную строку, нажали i — вошли в режим вставки.
  3. Отредактировали значения.
  4. Нажали Esc — вышли из режима вставки.
  5. Набрали :wq + Enter — сохранили и вышли.